Новости 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 Ответов
  • 8020 Просмотров
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Одно из новшеств в К2 версии 2.5 - "живой" (аякс) поиск c динамическим выводом результатов в процессе ввода текста
(что-то наподобие поиска от Google и яндекс).







Реализуется с помощью стандартного модуля К2 Tools в режиме поиска.
Чтобы включить, надо в настройках модуля отметить дополнительный чекбокс.
К сожалению стандартный модуль "из коробки" не заработал, пришлось разбираться.

В стандартном шаблоне модуля допущена ошибка, из-за которой jQuery не может "прицепиться" к классам и соответствующим элементам шаблона.

Исправляем одну строчку (а именно - 20-ю) в файле modules\mod_k2_tools\tmpl\search.php

Оригинал
Код
<div id="k2ModuleBox<?php echo $module->id; if($params->get('moduleclass_sfx')) echo ' '.$params->get('moduleclass_sfx'); if($params->get('liveSearch')) echo ' k2LiveSearchBlock'; ?>" class="k2SearchBlock">


Надо сделать
Код
<div id="k2ModuleBox<?php echo $module->id;?>" class="k2SearchBlock<?php if($params->get('moduleclass_sfx')) echo ' '.$params->get('moduleclass_sfx'); if($params->get('liveSearch')) echo ' k2LiveSearchBlock'; ?>">

Данная ошибка исправлена разработчиками в версии 2.5.2
(примечание: текущая версия К2 - 2.5.3)


Если поиск всё же не работает, попробуйте ещё один вариант решения пробемы.
« Последнее редактирование: 29.11.2011, 07:28:09 от SDKiller »
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Как всегда спасибо огромное !

хотя включив все пункты настроек в - ДА
аякс поиск не появился

при нажатии на кнопку поиск . перезагружается главная страница и всё
в логах чисто!
« Последнее редактирование: 23.11.2011, 12:07:10 от yrygvay »
Смотрю....
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Мб разработчикам написать?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
хотя включив все пункты настроек в - ДА
аякс поиск не появился

Надо смотреть пристальнее на пациента. После исправления должно работать.
Механизм, как это часто бывает с аяксом, очень тесно привязан к конкретным элементам шаблона.

А в целом - данная функция модуля поиска востребована, натыкался здесь на аналогичные темы не так давно. Но появление её прошло как-то незамеченным.
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Ошибка с классами исправлена разработчиками в версии 2.5.2
« Последнее редактирование: 29.11.2011, 07:29:13 от SDKiller »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
при нажатии на кнопку поиск . перезагружается главная страница и всё
в логах чисто!

В некоторый случаях такое действительно имеет место.
Методом научного тыка вылечилось редактировании строки с action формы в том же файле (добавляем JURI::base())

Было:
Код
<form action="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=search'); ?>" method="get" autocomplete="off" class="k2SearchBlockForm">

Стало:

Код
<form action="<?php echo JRoute::_(JURI::base().'index.php?option=com_k2&view=itemlist&task=search'); ?>" method="get" autocomplete="off" class="k2SearchBlockForm">
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Переместил
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

viromax

  • Новичок
  • 9
  • 0 / 0
А у меня чегой-то ничего не находит. При написании поискового запроса в сроку AJAX вариантов не выдает, а при нажатии "поиск" выдает такой вот результат
*

imrangerga

  • Новичок
  • 8
  • 0 / 0
  • Ильясов Имран
В некоторый случаях такое действительно имеет место.
Методом научного тыка вылечилось редактировании строки с action формы в том же файле (добавляем JURI::base())

Было:
Код
<form action="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=search'); ?>" method="get" autocomplete="off" class="k2SearchBlockForm">

Стало:

Код
<form action="<?php echo JRoute::_(JURI::base().'index.php?option=com_k2&view=itemlist&task=search'); ?>" method="get" autocomplete="off" class="k2SearchBlockForm">

вот это ни стоит делать, у меня версия 2,5.6 когда этот код добавил то поиск вообще перестал работать. а живой так и не ожил
*

imrangerga

  • Новичок
  • 8
  • 0 / 0
  • Ильясов Имран
вот это ни стоит делать, у меня версия 2,5.6 когда этот код добавил то поиск вообще перестал работать. а живой так и не ожил

извиняюсь, был не прав. Работает живой писк. Вот только ищет неправильно (( было бы отлично если живой поиск интегрировался бы с Google поиском ))
*

trump90

  • Новичок
  • 3
  • 0 / 0
А у меня живой поиск не работает.
Блок с результатами ответа появляется, но он пустой - я так понимаю, AJAX не подключается. Версия К2 2.6.8, Joomla 2.5. Также установлен K2 Store.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Не решено] Вывод дополнительных полей в админке в списке материалов

Автор Babyaka

Ответов: 30
Просмотров: 5577
Последний ответ 07.10.2024, 18:37:33
от NIKOLY
[Решено] Доп. поля mod k2 content

Автор Sergoon

Ответов: 31
Просмотров: 19454
Последний ответ 30.08.2017, 13:11:54
от Eholov
Вывод доп полей в модуле

Автор wolf34rus

Ответов: 1
Просмотров: 1738
Последний ответ 06.02.2014, 17:42:35
от rafil
[Решено] Больная тема.. пагинация страниц в К2.. ужас

Автор Snip

Ответов: 1
Просмотров: 3745
Последний ответ 12.01.2012, 17:58:50
от Snip
[Решено] Скрыть ЧАСТЬ допполей от незарегенных

Автор Dorfman

Ответов: 5
Просмотров: 2564
Последний ответ 25.10.2011, 15:27:25
от Dorfman