Новости Joomla

Рендер пользовательского поля внутри другого пользовательского поля. Joomla 5.3

Писал ранее о том, как внутри одного пользовательского поля рендерить другое пользовательское поле. Применил для этого возможность Joomla обращаться к методам плагинов напрямую. Процитирую строчку кода из предыдущего поста:

<?php
$joomlaFieldContentPlugn->onContentPrepare('com_content.article', $fakeItem, $app->getParams());

Joomla постепенно переходит от простого указания аргументов для триггеров плагинов к собственным классам событий. Это позволяет не запоминать порядок передачи аргументов класса и использовать человекопонятные методы $event->getContext(), $event->getItem() и т.д. А то в одном месте в Joomla было $article, в другом - $item, в третьем ещё как-то... Порядку больше становится.

Сегодня обновил сайт клиентов до Joomla 5.3. В ней обновили контент-плагин fields и мой финт ушами с вызовом метода плагина отвалился потому, что я передавал в нём 3 аргумента, вместо одного. И для события onContentPrepare это должен быть объект класса ContentPrepareEvent. Как меняется фрагмент кода из предыдущего поста:

<?php
// мы находимся в файле макета поля

use Joomla\CMS\Event\Content\ContentPrepareEvent;
use Joomla\CMS\Factory;

$app = Factory::getApplication();
$fakeItem = new \stdClass();
// Получаем id текущего материала из объекта Input
$fakeItem->id = $app->getInput()->getInt('id');
// {field 29} - это шорт код вставки поля с id 29 - "ассортимент проекта"
// к содержимому поля конкатенируем шорт-код для обработки
$fakeItem->text = $field->value . '{field 29}';
// Получаем объект плагина
$joomlaFieldContentPlugn = $app->bootPLugin('fields', 'content');
// вызываем метод обработки напрямую
// вместо 3-х аргументов теперь указываем один
// это объект класса ContentPrepareEvent
$joomlaFieldContentPlugn->onContentPrepare(new ContentPrepareEvent('onContentPrepare', [
            'context' => 'com_content.article',
            'subject' => $fakeItem,
            'params'  => $app->getParams(),
            'page'    => 0,
        ]));
// выводим оба поля
echo $fakeItem->text;

@webtolkru 

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 8455 Просмотров
*

fatalerror

  • Захожу иногда
  • 444
  • 48 / 2
  • Уполномоченный по правам чайников
Пережал в фотошопе кнопки-графику для spaw208-j14.zip.
Не трогал сепараторы и цветовую палитру

Вес в архиве уменьшился на 90 кило. Вес в распакованном виде уменьшился на 120 кило

Просьба к разработчикам во главе с ravом оценить это дело. А то у меня тетеньки работают на медленных скоростях, жалуются, что у них кнопки долго грузятся. Пока не испытывал пережатую версию.
Так вообще можно, ну, пережатием, того?

Обращаю внимание всем, что официальные версии те, которые одобрены ravом. Поэтому, с пережатой версией - осторожно, хотя кроме кнопок более ничего не трогал

[вложение удалено Администратором]
Расстреляно форумчан за нецензурщину: 1 (один).  Дерьмо случается...
*

..С...е...р...ы...й..

  • Захожу иногда
  • 51
  • 110 / 2
после пережатия уже пережатых рисунков всегда качество теряется, нужно устанавливать степень сжатия ещё при экспорте с оригинальных исходников PSD, тогда наименьшая потеря...
или лучше уж новую графику нарисовать
а так по, идее после первой загрузки редактора все кнопки кешируются, а медленность загрузки самого редактора и кнопок скорее из за большого обьема кода который помещается в генерируемую страницу, по степени подгрузки этого кода в браузер и идёт цепное выстроение кнопок
*

rav

  • Захожу иногда
  • 63
  • 31 / 0
Посмотрел. Ухудшения качества картинок практически не видно. Поэтому может и имеет смысл.
Другое дело, что  С.е.р.ы.й.В.о.л.к прав - улучшение скорости будет только при первой загрузке редактора, потом все картинки кэшируются. Поэтому постоянные пользователи разницы не заметят.
Может тетенькам попробовать другой браузер - Опера вроде нормально работает со Spaw (я правда сильно не тестировал), и скорость у Оперы повыше будет. А самый быстрый на мой взгляд браузер - SeaMonkey (тестовый полигон для FF). Но надо хорошо протестировать редактор под этим браузером, чтобы выявить возможные косяки.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться