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

irnerne

  • Новичок
  • 6
  • 0 / 0
Вопрос следующий: создан набор артиклов-пресс-релизов, на каждый имеется линк в общей статье. при клике на линк выводится статья, но модули, привязанные к меню третьего уровня пропадают. нужна привязка к этим артиклам! создавать меню 4-го уровня нецелесообразно, так как много этих артиклов. можно ли как нибудь организовать отображение модулей для этих артиклов? может возможно создать как-то меню, пункты которго не будут отображаться на сайте, но чтоб выводились и статья и модули? спасибо.
*

Olg

  • Завсегдатай
  • 1181
  • 90 / 2
Можно. Установите себе вот эту штуковину http://www.nonumber.nl/extensions/advancedmodulemanager и привязывайте модули к чему хотите (почти).
*

irnerne

  • Новичок
  • 6
  • 0 / 0
спасибо, модуль очень интересный и пригодился мне очень, но в другом) а эта проблема все ж так нерешаема (
в этом модуле так же требуется существование меню (
*

Olg

  • Завсегдатай
  • 1181
  • 90 / 2
1) Это не модуль, а плагин.
2) У Вас на сайте совсем нет никакого меню?
3) Указанный плагин моментально решает описанную Вами задачу; ежели Вы видели его краткое описание, то там написано: "You can combine publishing assignments. For example: If you only publish the module on a certain menu item and also publish it by a certain date range, it will only show for that menu item within the selected date range."
*

Funkdoobiest

  • Захожу иногда
  • 244
  • 25 / 13
привязать нужно только к этим 4-ем статьям или их число будет расти? Эти 4 статьи в каком нибудь общем разделе или в разных?
*

Olg

  • Завсегдатай
  • 1181
  • 90 / 2
С помощью указанного плагина можно делать привязку к:
    * Date
    * Menu Item
    * Sections / Categories
    * Articles
    * User Group Levels
    * Components
    * Languages
    * Templates
Чё ещё не хватает?
*

irnerne

  • Новичок
  • 6
  • 0 / 0
попробую ответить подробно.

статей будет много, со временем добавляться будут.
может я неправильно разобралась в плагине том, но там, насколько понимаю, в любом случае все ж нужно привязываться к меню, тоесть: выбираем меню, и уже там фильтруем категории, отдельные статьи и прочее. по крайней мере когда пыталась отмечать только на отдельные статьи, нужные модули не выводились всеравно (
возможно придется создать для каждой статьи по меню в один пункт, где загловок и будет этим пунктом. выход конечно дурацкий, проблема просто в сроках поставленных ( а руками писать - еще не доросла к сожалению.

большое спасибо всем, если что-то еще сможете все ж подсоветовать - буду благодарна. :)
« Последнее редактирование: 09.12.2009, 01:44:38 от irnerne »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Можно прописать условие в шаблоне. Но для этого нужно что бы все статьи были либо в одной категории либо разделе. Это так по быстрому что бы не заморачиваться.
*

irnerne

  • Новичок
  • 6
  • 0 / 0
ой, до меня все ж дошло, как извратиться с этим) просто постоянно присутствующее меню тока одно, а блоки в зависимости от выбранного пункта должны меняться. но ведь можно просто выбрать для остальных блоков конкретные подпункты, а во всех других случаях показывать нужные. если не поможет, так и быть, буду править сам шаблон)
спасибо еще раз всем  большое! просто мозги немножко рано приржавели)
*

Olg

  • Завсегдатай
  • 1181
  • 90 / 2
Последняя попытка.
В настройках нужного модуля указываете
1) Menu Items -> Publish on -> All;
2) в том случае, если Вы догадались поместить нужные статьи в отдельный раздел (категорию): выбираете Sections / Categories -> Publish on -> Selection и выбираете нужные Вам разделы/категории, в которых этот модуль будет виден;
3) в том случае, если эти статьи валяются где ни попадя (в разных разделах (категориях)): выбираете Sections / Categories -> Publish on ->  All   и далее Articles -> Publish on -> Selection и выбираете статьи, для которых будет показываться модуль.
*

Maksimcase

  • Осваиваюсь на форуме
  • 20
  • 0 / 2
Re: можно ли привязать модуль не к меню?
« Ответ #10 : 23.12.2009, 01:17:00 »
Плагин хороший- но не доработан, модуль привязывается к пункту меню, а потом уже к статье, т.е. в любом случае модуль будет отображаться в каком-нибудь пункте меню, а вопрос стоит, чтобы модуль отображался в статье или в статьях, без этого плагин просто туфта.
*

Funkdoobiest

  • Захожу иногда
  • 244
  • 25 / 13
Re: можно ли привязать модуль не к меню?
« Ответ #11 : 23.12.2009, 09:58:27 »
Плагин хороший- но не доработан, модуль привязывается к пункту меню, а потом уже к статье, т.е. в любом случае модуль будет отображаться в каком-нибудь пункте меню, а вопрос стоит, чтобы модуль отображался в статье или в статьях, без этого плагин просто туфта.
Не слишком ли громкое заявление? Может у вас просто не получилось?
*

Maksimcase

  • Осваиваюсь на форуме
  • 20
  • 0 / 2
Re: можно ли привязать модуль не к меню?
« Ответ #12 : 23.12.2009, 11:19:16 »
Я его еще не стер и не буду, может пригодится еще. А что касается "не получилось", так я все варианты перебробовал и модуль появляется и в пункте меню (там лежат статьи блогом) и в конкретной статье, если перейти на соседнюю статью пункта меню - модуль исчезает - это хорошо. А представь, если я сделаю по модулю для каждой статьи этого пункта, да - они будут отображаться для конкретной статьи и при этом все модули соберутся в одном месте, там где собираются все статьи, а именно, в пункте меню. Если ты утверждаешь, что я что-то делаю не так, так настройки мне вылажи и я проверю, поттом вылажу принт скрины сюда.
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Отличный плагин. Модуль можно привязать и к id статьи и к компоненту определенному, и к url и исключить по определенным url из показа.  Качал с http://www.nonumber.nl/extensions/advancedmodulemanager  Но AdvancedModuleManager-v2.2.3 у меня не установилась. Зато пошла AdvancedModuleManager-v1.9.3. Классный плагин.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 8270
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3566
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5150
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23432
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 3849
Последний ответ 01.03.2019, 11:12:18
от vasmed