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

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
  ! Ребята, привет! Подскажите, пожалуйста! Как научить Стандартный компонент поиска жомлы искать по умолчанию по параметру Любое слово ?
Как вы знаете он ищет либо - Все слова  *Любое слово -Точное совпадение.  При стандартных заводских установках этот компонент ищет как Все слова  - мне же нужно чтобы он работал как Любое слово, когда пользователь посетит страницу поиска моего сайта и чтобы результаты поиска выдавались в соответствии с ЛЮБЫМ СЛОВОМ, а не Все слова. я так и нашел таких настроек в админке. Это наверное нужно менять шаблон?

эту штуку выводит вот эта строка в шаблоне <?php echo $this->lists['searchphrase']; ?> А где находиться сам массив lists['searchphrase'] ? И как поставить переключатель на  Любое слово по умолчанию?

И еще - как забацать так, чтобы он искал как Live Search - т.е. не после нажатия на кнопку ПОИСК, а сразу как начнут вводиться исволы в поле поиска. Пример - модуль поиска на моем сайте http://mannvillage.com/index.php - справа вверху - начинаете вводить и он сразу ищет... или как реализован поиск на kinopoisk.ru

А еще лучьше - может ли кто-то из вас дать мне скачать AceSearch Pro - Я его установлю вместо стандартного компонента поиска и все дела.. Очень нужно! Прошу помогите.

Все материалы у меня в К2. Поэтому нужно еще научить этот модуль в результатах показывать соответствующую результату картинку материала и категорию материала в результатах сделать как ссылку.

И последнее.. я уже читал на этом форуме.. где-то здесь есть ветка, посвященная увеличению стандартных 20 символов в поле поиска для компонента, но я не могу ее найти? Как увеличить эти стандартные 20 символов в поле до 60? Я в настройках через админку пробовал, но он все равно исчат только по первым 20-ти символам, а  если больше - выдает ошибку! Как увеличить количество символов до 60-ти и в поле поиска и в самом процессе поиска, чтобы искал по всем 60-ти.. ПОДСКАЖИТЕ!

Буду премного благодарен, особенно за AceSearch Pro! Вы можете отправить его мне на почту (я дам если нужно)... или еще как-то зашифровать компонент, если не хотите выкладывать публично!  !ftp://
*

Crazygangster77

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Привет ^-^ Знаю ответ только на первый твой вопрос.Только что сам разбирался,мне тоже это нужно было.
Для Joomla 1.5 : Есть такие значения
all- поиск все слова(по умолчанию)
any- Любое слова
exact- Точное совпадение
(в зависимости что тебе нужно вставляешь эти значения вместо all)
открываем файл \components\com_search\controller.php  строка 49 и 55 Меняешь значения на свое.
открываем файл \components\com_search\models\search.php строка 77 и 94 Меняешь значения на свое.
открываем файл \components\com_search\views\search\view.html.php строка 85 и 122 Меняешь значения на свое.

Если используешь плагин от VirtueMart для совместного поиска, меняешь значение в плагине.
удачи *DRINK*
*

oppo

  • Захожу иногда
  • 365
  • 82 / 8
  • ΨΨΨ я - УКРАЇНЕЦЬ
перетянуть вид модуля в шаблон и в нем добавить
Код
<input type="hidden" name="searchphrase" value="exact" />
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонент SP Polls - не подхватывает русский язык

Автор Missile

Ответов: 20
Просмотров: 6772
Последний ответ 10.05.2024, 10:01:24
от Foys
Компонент JoomlaXTC Appointment Book Manager v1.6.0

Автор markizmds

Ответов: 1
Просмотров: 9684
Последний ответ 17.09.2021, 08:29:47
от avtozona
Настройка компонент Jotcache

Автор lgmax

Ответов: 27
Просмотров: 4088
Последний ответ 11.03.2019, 19:18:44
от ProtectYourSite
Настройка модуля поиска Universal AJAX Live Search

Автор alex9158

Ответов: 0
Просмотров: 2309
Последний ответ 20.11.2017, 17:46:40
от alex9158
Компонент тестов Together 1.33

Автор alae

Ответов: 20
Просмотров: 10485
Последний ответ 07.10.2016, 12:54:38
от nn8259