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

Исправления в mod_eventlist
« : 17.09.2008, 01:53:32 »
Всем привет.
Я использую на своем сайте компонент EventList. К нему есть модуль mod_eventlist, отображающий ближайшие события в виде списка с настраиваемой концигурацией. Этот модуль (версия 0.8.11 от 31.03.2008, скачанный с официального сайта, более нового нет) глючил сразу же после установки (Joomla 1.0.12 LE).
Например, в режиме вывода записей о событиях в одну строку (Choose layout = one line) неправильно работали параметры Show title or location, Link to details on, Link to location, в результате чего этим модулем практически не возможно было пользоваться.
После долгих мучений я сделал более-менее работающую версию этого модуля. Если кому интересно - могу поделиться результатами, а то вдруг кто-то тоже мучается... ;)

Теперь при (Choose layout = one line):
Если Show title or location установлено в title, то отображается название события, а не место проведения или вообще ничего. При этом параметр Link to location, естественно, ни на что не влияет. Название отображается в виде ссылки на страницу события если Link to details установлено в title и в виде простого текста при остальных значениях параметра.
Если Show title or location установлено в location, то отображается место проведения события в виде ссылки или просто текстом (в зависимости от Link to details)
Остальные параметры работают так же как и раньше.

Файл упакован зипом, надо распаковать и поместить в /modules на поверх обычного.
 
А вообще, расскажите, если не в лом, как в таких случаях поступают, хочется чтобы сделанное не пропало даром и стало "достоянием человечества" ;))

[вложение удалено Администратором]
*

Fomen

  • Захожу иногда
  • 99
  • 4 / 0
  • Землю крестьянам!!!
Re: Исправления в mod_eventlist
« Ответ #1 : 07.10.2008, 08:31:08 »
Привет. Не знаю, как поступают, у меня просто встречный вопрос, может ты знаешь... Можно ли поставить картинку каку-нить фоном, типа пергамента, к примеру, чтобы ссылки на события были на картинке. А то никакого стиля нету :( Просто текст-ссылки.

Re: Исправления в mod_eventlist
« Ответ #2 : 08.10.2008, 15:47:56 »
В модуле действительно нет своих стилей, но, вообще-то, можно решить проблему при помощи шаблона сайта - определить свои стили в CSS файле шаблона с суффиксом и задать этот суффикс для модуля eventlist в настройках модуля. Я думаю, так даже правильнее будет.
*

Fomen

  • Захожу иногда
  • 99
  • 4 / 0
  • Землю крестьянам!!!
Re: Исправления в mod_eventlist
« Ответ #3 : 08.10.2008, 17:18:55 »
Да, неплохой совет. Буду пробовать. Спасибо.
*

_ib_

  • Давно я тут
  • 673
  • 100 / 8
Re: Исправления в mod_eventlist
« Ответ #4 : 28.11.2008, 04:25:26 »
господа, где брали данный модуль? требуется оригинал для J!1.5 .
Благодарю.
Легальные шаблоны и дёшево!  + скидки до 50% для шаблонов клуба Joomlart, RocketTheme, Yootheme и Gavick.

при интересе пишите в личку или на мыло: "p" точка "d" собака gmx.de
*

_ib_

  • Давно я тут
  • 673
  • 100 / 8
Re: Исправления в mod_eventlist
« Ответ #5 : 28.11.2008, 04:32:31 »
ну вот, пока не напишешь поста сам не найдёшь :)
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,3993/Itemid,35/
Легальные шаблоны и дёшево!  + скидки до 50% для шаблонов клуба Joomlart, RocketTheme, Yootheme и Gavick.

при интересе пишите в личку или на мыло: "p" точка "d" собака gmx.de
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться