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

a13-08

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Вот если ты нажал на кнопку подробнее, то увидев весь материал, модули все должны изчезнуть из определённой позиции, как сделать такое?
*

a13-08

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Вот если ты нажал на кнопку подробнее, то увидев весь материал, модули все должны изчезнуть из определённой позиции, как сделать такое?

Находил здесь тему обратную моей дак вот там есть решение http://joomlaforum.ru/index.php?topic=226557.0
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Вам нужно использовать условия в шаблоне. Подробнее тут
*

a13-08

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Вам нужно использовать условия в шаблоне. Подробнее тут
Но там же нету про конкретный мой случай мне нужно чтобы все модули убрались когда я читаю материал
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Ставите проверку что если view = article и option = com_content не показывать модуль. И так условия для каждой позиции модулей.
*

a13-08

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Ставите проверку что если view = article и option = com_content не показывать модуль. И так условия для каждой позиции модулей.
А если это k2?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
А если это k2?
Не работал с K2, но там option=com_k2, а что там вместо артикл = отключите SEF да посмотрите в url
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать из индекса Яндекса дубли?

Автор gonzyk263

Ответов: 3
Просмотров: 3423
Последний ответ 01.07.2024, 23:26:54
от Cleaning74
Вывести поле изображение материала в модуле "Список материалов категории"

Автор aleksandrozz

Ответов: 12
Просмотров: 12809
Последний ответ 14.10.2022, 05:12:04
от denxio
Кнопка “Добавить в корзину” VirtueMart не работает на главной странице сайта

Автор max_max

Ответов: 0
Просмотров: 7042
Последний ответ 20.04.2021, 12:40:37
от max_max
[FAQ] Как убрать <meta name="generator" content="Joomla! 2.5 - Open Source Content Management" />

Автор neket

Ответов: 56
Просмотров: 314254
Последний ответ 05.11.2020, 20:00:15
от Grigoriy82
Убрать название пункта меню из URL материала

Автор fortuner

Ответов: 15
Просмотров: 8499
Последний ответ 31.10.2020, 00:46:04
от spas