Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

andx

  • Захожу иногда
  • 111
  • 6 / 0
Добрый день! Подскажите как сделать 2 группы товаров, например ЛЕТО и ЗИМА. Что мне самому на ум пришло, так это сделать на хостинге отдельные папки leto и zima и в них ставить отдельные joomla+virtuemart с разным дизайном, конкретно сделанные под свою группу товаров. Тоесть схема такая:

человек попадает на site.ru, где я в корень кладу файлик index.html, который содержит 2 ссылки - site.ru/zima и site.ru/leto, кликает на один из... и пошло поехало...

Подскажите, не является ли моя идея тягомотной? Может есть более элегантные и легкие способы такого объединения двух групп товаров, двух разных дизайнов под одной базой joomla+VM?
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Re: 2 разные группы товаров. Как?
« Ответ #1 : 29.06.2010, 13:07:19 »
Все просто:
virtuemart поддерживает работу с подкатегориями - в таком случае будет вид типа:

категория Зима
подкатегории санки
                    валенки
                    тулуп
....
категория Лето
подкатегории  удочки
                     панамки 
....
*

andx

  • Захожу иногда
  • 111
  • 6 / 0
Re: 2 разные группы товаров. Как?
« Ответ #2 : 29.06.2010, 13:34:01 »
adjuster
Дык этож ясно... или я чего то не понял. Мне надо под этот сайт 2 шаблона дизайна делать - летний и зимний. На зимнем нужно вывести только зимнюю категорию и лето аналогично
*

Natalie

  • Захожу иногда
  • 81
  • 9 / 0
Re: 2 разные группы товаров. Как?
« Ответ #3 : 29.06.2010, 23:09:11 »
Как назначить каждому разделу свой шаблон:
Выбираем в меню админки пункт Сайт -> Шаблоны -> Шаблоны сайта (Site -> Templates -> Site templates)
Открывается Менеджер шаблонов.
В списке выбираем альтернативный шаблон, который мы хотим назначить определенным разделам и нажимаем кнопку Назначить (Assign).
В открывшемся списке выбираем страницы сайта для которых хотим назначить выбранный шаблон.

Не везде работает такое. Еще можно программиста попросить написать смену шаблонов в зависимости от раздела, придется править код движка. Но ставить 2 магазина - это конечно не стоит делать.
*

usеr

  • Захожу иногда
  • 59
  • 4 / 0
Re: 2 разные группы товаров. Как?
« Ответ #4 : 29.06.2010, 23:55:12 »
Как вам уже посоветовали

----------------------------------
категория Зима
подкатегории санки
                    валенки
                    тулуп
....
категория Лето
подкатегории  удочки
                     панамки
 
----------------------------------

На летний шаблон можно использовать browse_1.php и flypage_leto.php

На зимний шаблон можно использовать browse_?.php и flypage_zima.php
*

andx

  • Захожу иногда
  • 111
  • 6 / 0
Re: 2 разные группы товаров. Как?
« Ответ #5 : 30.06.2010, 14:18:10 »
Спасибо, буду пробовать. Я думаю здесь мне еще пригодится вот этот компонент меню для VM, позволяющий делать несколько разных меню и тогда все должно получится, дорогу осилит идущий  ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Усовершенствованный VirtueMart SEF роутер [алиасы товаров, категорий, брэндов, файлов, мин. запросов

Автор danik.html

Ответов: 267
Просмотров: 88877
Последний ответ 13.11.2013, 00:23:14
от newjey
[Решено] После обновления 1.9 - В данной категории нет товаров

Автор borada

Ответов: 16
Просмотров: 11955
Последний ответ 20.02.2013, 15:55:17
от didimon
отображение товаров в категориях

Автор igor33

Ответов: 8
Просмотров: 1995
Последний ответ 26.01.2011, 09:52:09
от 2s-mode
Как сделать дерево товаров в VirtueMart?

Автор sedoff

Ответов: 1
Просмотров: 2917
Последний ответ 24.11.2009, 02:36:33
от artliffe
КАК переустановить VM 1,1,3 без потери категорий, товаров,фото

Автор coshevoi

Ответов: 14
Просмотров: 4631
Последний ответ 26.06.2009, 13:25:02
от vagkrsk