Новости 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 

Вышел релиз Joomla 5.3.0

Вышел релиз Joomla 5.3.0

Проект Joomla с радостью объявляет о выходе Joomla 5.3 — последней минорной версии в серии Joomla 5.

Этот релиз сосредоточен на продуманных улучшениях, которые совершенствуют работу с CMS. От лучшей организации файлов и журналирования задач до расширенной обработки электронной почты и улучшенной доступности — Joomla 5.3 помогает администраторам и разработчикам работать более эффективно, сохраняя ваш сайт современным, безопасным и готовым к будущему.

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

phantom

  • Новичок
  • 5
  • 0 / 0
Привязка к меню
« : 23.03.2007, 02:32:46 »
Хочу сделать сайт по автосалонам на основании вашего компонента, но вот наткнулся на такую трудность. Нужно сделать так, чтоб при клику на, например, «Салон Пети»
выводились не автомобили конкретной марки, или модели, а несколько моделей, которым, как-то нужно дать понять, что они принадлежат именно салону «Салон Пети». Пробовал сделать с помощью привязки к меню, но не выходит. Делаю следующим образом:

Делаю пункт меню, например «Салон Пети». Потом нескольким моделям из  «Списка моделей автомобилей» справа в окне «Привязка к меню:», выделяю пункт «Салон Пети», вывожу этот пункт на сайте, клацаю и жду что появляться те объявления, которые я привязал к этому пункту меню, а появляются абсолютно все объявления. Пункт меню делаю типа «компонент», компонент выбираю «com_autobb» конечно.
     Может что-нибудь  не так сделал, поправьте пожалуйста
   
Ну и вот такие вопросы:
Можно привязать некоторые выбранные  модели автомобилей к конкретному пункту меню?
И можно ваше выводить автомобили, которые выбрал себе администратор, а не по маркам или моделям?
*

Павел Зотов

  • Moderator
  • 166
  • 28 / 5
Re: Привязка к меню
« Ответ #1 : 23.03.2007, 05:08:19 »
1. Можно сделать несколько категорий ТС - по названиям салонов. И для каждой категории (автосалона) добавить только те марки и модели, которыми они торгуют. Тогда создавайте для каждого салона свои пункты меню.
*

phantom

  • Новичок
  • 5
  • 0 / 0
Re: Привязка к меню
« Ответ #2 : 23.03.2007, 22:32:32 »
Я про это думал. Проблема в том, что «Категория ТС» мне тоже нужна.
Думал-думал, и решил, что лучшим выходом будет дописать компонент с возможностью добавления автосалонов, аналогично добавлению марок. Не должно быть слишком сложно.

Между прочим, компонент очень понравился, и упростил мне жизнь при разработке авто-портала. Спасибо!

Re: Привязка к меню
« Ответ #3 : 27.04.2007, 17:48:16 »
Привязывай свои объявление как коммерческе, в название коммерческого модуля напиши "авто моего салона"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить пункт в меню "Дать объявление"?

Автор sunisappe

Ответов: 2
Просмотров: 2190
Последний ответ 07.09.2011, 17:13:37
от misha_m
Пункты меню авто и мото

Автор chatter_p

Ответов: 7
Просмотров: 3257
Последний ответ 15.09.2010, 22:06:42
от Alex Revo
Проблемы с навигационным меню

Автор souzmd

Ответов: 1
Просмотров: 1869
Последний ответ 30.04.2010, 10:36:31
от Alex Revo
Вопросы в меню компонента

Автор seregapr

Ответов: 18
Просмотров: 4099
Последний ответ 08.10.2009, 21:12:16
от seregapr
Пункт меню "Дать объявление"

Автор mds

Ответов: 5
Просмотров: 2900
Последний ответ 27.05.2009, 10:41:08
от altyn