Новости 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 Гость просматривают эту тему.
  • 1 Ответов
  • 4665 Просмотров
*

mkvmexahuk

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
зайдя во вкладку  Extension Manager: Install Languages не видит никаких языков, версию Joomla 3.4.0 скачал из оффициального сайта. Как исправить это чтоб можно было добавить языки?

Для тестов взял бесплатный хостинг 000webhost
Пробовал установить через менеджер расширений нужный мне язык, бьёт такую ошибку
« Последнее редактирование: 09.03.2019, 17:58:25 от mkvmexahuk »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Как исправить это чтоб можно было добавить языки?
Установить Joomla актуальной версии 3.9.3. Для 3.4 нет локализации на JED
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поехал дизайн главной страницы одного из трех языков

Автор hlitov

Ответов: 3
Просмотров: 2816
Последний ответ 23.12.2024, 16:12:59
от enrikebosko288
Не устанавливается язык - Unable to find install package

Автор comSat

Ответов: 9
Просмотров: 9989
Последний ответ 23.05.2022, 23:01:01
от Гарик
Языков нет вообще

Автор nexirt

Ответов: 12
Просмотров: 5139
Последний ответ 25.07.2019, 17:08:27
от anatoliy221
[РЕШЕНО]Нестандартный переключатель языков Joomla 3.9.4

Автор Шмайсер

Ответов: 1
Просмотров: 2035
Последний ответ 30.03.2019, 13:00:12
от Шмайсер
Нету переключения языков

Автор palexa

Ответов: 7
Просмотров: 4848
Последний ответ 18.02.2018, 13:49:52
от palexa