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

DureX

  • Новичок
  • 8
  • 1 / 0
Всем привет,
Я прикрутил к стандартному модулю "Список категорий (меню)" k2_tools аккордеон меню (Использовал аккордеон http://www.i-marco.nl/weblog/).
Для его работы нужно:
1. В файле \modules\mod_k2_tools\tmpl\categories.php добавить перед
Код
<?php echo $output; ?>
такую строчку
Код
<ul class="menu accordion collapsible">
и после
Код
<?php echo $output; ?>
добавить это
Код
</ul>
Должно получиться:
Код
    <ul class="menu accordion collapsible">
        <?php echo $output; ?>
    </ul>
2. В файле File \modules\mod_k2_tools\helper.php
Перед строчкой
Код
modK2ToolsHelper::treerecurse($params, $row->id, $level + 1);
добавить вот такую строку
Код
$output .= '<ul class="acitem'.$level.'">';
и после
Код
modK2ToolsHelper::treerecurse($params, $row->id, $level + 1);
добавить
Код
$output .= '</ul>';
Должно получиться:
Код
          $output .= '<ul class="acitem'.$level.'">';
          modK2ToolsHelper::treerecurse($params, $row->id, $level + 1);
          $output .= '</ul>';
3. В блоке
Код
<head>
файла index.php Вашей темы добавить следующее:
Код
<script src="<?php echo $template_url; ?>/js/jquery-1.4.2.min.js" type="text/javascript"></script>   
<script src="<?php echo $template_url; ?>/js/menu.js" type="text/javascript"></script>
4. Загрузить файлы(прикреплены ниже) menu.js и jquery-1.4.2.min.js в папку js вашей темы.
5. Загрузить файл style.css в папку CSS Вашей темы.
-------------
У меня работает.

Но есть одна проблема, я немогу приложить ума как раскрыть активную категорию, когда находишься в подробном описании товара(любого).
Например,
На этой странице активная категория раскрывается _http://tds2010.com.ua/catalog/loktayt/fiksatory.html , но при просмотре подробного описания товара в этой категории, активная категория в меню не раскрывается и не подсвечивается _http://tds2010.com.ua/loktayt/fiksatory/fiksatory-rezbovye/loktayt-638/10ml.html.
Может кто не-будь мне с этим помочь?  Я готов поучаствовать в мозговом штурме :)
Заранее спасибо за помощь.
*

Dusted

  • Захожу иногда
  • 180
  • 49 / 0
Зачем так сложно?
Я решил вопрос через меню (категории к2) + аккордеон модуль.
Все просто и красиво, и не надо лишний раз в код лезть.
Куплю ваши сайты, рассмотрю все варианты - пишите в личку.
*

DureX

  • Новичок
  • 8
  • 1 / 0
Можно подробнее?
Какой модуль аккордеона Вы использовали и как совместили приятное с полезным?
*

obormot

  • Захожу иногда
  • 68
  • 1 / 2
Пытаюсь сделать аккордеон меню списка категорий К2.
товарищ Dusted, ответьте плз, тоже интересует!

Либо у кого есть на примете готовое решение?
Спасибо
« Последнее редактирование: 13.10.2010, 12:26:50 от obormot »
*

Dusted

  • Захожу иногда
  • 180
  • 49 / 0
obormot

Все очень просто:
1. Качаем модуль аккордеон меню (любой отсюда)
2. Создаем меню из категорий К2
3. Привязываем меню к модулю и публикуем модуль.
Куплю ваши сайты, рассмотрю все варианты - пишите в личку.
*

vetall

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
obormot

Все очень просто:
1. Качаем модуль аккордеон меню (любой отсюда)
2. Создаем меню из категорий К2
3. Привязываем меню к модулю и публикуем модуль.



Можно подробней, как это привязать?
Ответьте, очень нужно.
Спасибо
*

StarMag

  • Moderator
  • 228
  • 25 / 0
  • после ночи разбора РНР кода

Можно подробней, как это привязать?
Ответьте, очень нужно.
Спасибо
В модуле указать какое меню будет браться для вывода.
Ну почему никто никогда не читает справочные материалы?...
*

Sauron_zombie

  • Осваиваюсь на форуме
  • 14
  • 1 / 1
А что за ошибки у меня, какой модуль аккордеона не поставлю:

Код
S5 Accordion Menu

Warning: Parameter 1 to modMainMenuHelper2::buildXML() expected to be a reference, value given in Z:\home\selniva\www\libraries\joomla\cache\handler\callback.php on line 99

или

Код
Accordion Menu Apple style

Warning: Parameter 2 to plgContentPagebreak() expected to be a reference, value given in Z:\home\selniva\www\libraries\joomla\event\dispatcher.php on line 136
*

diokim

  • Осваиваюсь на форуме
  • 39
  • 5 / 0
Сделал как написано работает НО хлебные крошки всегда показывают Главная-Категория-Материал, а надо Главная-Подменю-Категория-Материал..
нифига не пойму что делать то Как исправить?? я уже и к главному меню привязывал каталог одним пунктом меню...

Кто нить знает как настроить Хлебные крошки?

Все очень просто:
1. Качаем модуль аккордеон меню (любой отсюда)
2. Создаем меню из категорий К2
3. Привязываем меню к модулю и публикуем модуль.

*

senquiem

  • Новичок
  • 2
  • 0 / 0
4. Загрузить файлы(прикреплены ниже) menu.js и jquery-1.4.2.min.js в папку js вашей темы.
5. Загрузить файл style.css в папку CSS Вашей темы.
-------------
У меня работает.

Пардон, а где собственно прикрепленные файлы?
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
obormot

Все очень просто:
1. Качаем модуль аккордеон меню (любой отсюда)
2. Создаем меню из категорий К2
3. Привязываем меню к модулю и публикуем модуль.


а если категорий порядка 100 - то как быть ?

может есть уже нормальное аккардион меню для к2.5.1
Смотрю....
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Невозможно создать пункт меню K2

Автор vittorio

Ответов: 16
Просмотров: 3913
Последний ответ 24.01.2022, 16:16:31
от kot488
Не сохраняются параметры в пункте меню категория K2

Автор pyh

Ответов: 5
Просмотров: 2311
Последний ответ 21.09.2021, 04:56:14
от Alexs44
Массовое создание (загрузка) категорий в K2

Автор lgmax

Ответов: 3
Просмотров: 1190
Последний ответ 05.09.2019, 00:35:35
от Septdir
Меню Хлебные крошки не отображает все категории K2

Автор arnoldovich

Ответов: 1
Просмотров: 1130
Последний ответ 11.07.2019, 13:50:17
от arnoldovich
Запретить k2 самому формировать ссылки на категории, без пункта меню

Автор TYMON

Ответов: 9
Просмотров: 1239
Последний ответ 03.07.2019, 11:01:46
от kern.USR