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

info-line

  • Новичок
  • 4
  • 0 / 0
Добрый день! Очень требуется помощь.
Пишу сюда, так как отдельного топика про поиск не нашел.

Проблема заключается в том, что стандартный поиск Joomla не производит поиск по словам, состоящим менее чем из 4-х букв.
То есть минимальная длина слова для поиска – 4 символа.
Внимание! Не путать с минимальной длиной запроса для поиска.

Чтобы было понятно, что я имею ввиду, покажу все на примере.
Имеется сайт - http://mille.by
Если мы введем в форму поиска слово состоящее из трех букв, например "нож" или "бак", то он выдаст все слова состоящие из этих букв, такие как "бактерии" и "ножницы", но он не выдаст слова, состоящие из трех букв, то есть сами "нож" и "бак". (пример: http://mille.by/index.php?searchword=%D0%BD%D0%BE%D0%B6&ordering=newest&searchphrase=all&limit=50&option=com_search)

Перепробовал все. В интренете информации про это тоже не нашел.
Уменьшал поиск до 2 и до 1 символа. Все равно, если даже ввести запрос "н", то он найдет только те слова, которые состоят из четырех и более символов.

Пожалуйста, подскажите как решить эту проблему. Буду очень благодарен.
« Последнее редактирование: 19.02.2012, 17:23:49 от info-line »
*

info-line

  • Новичок
  • 4
  • 0 / 0
Нашел информацию на эту тему на англоязычном сайте: http://community.getk2.org/forum/topics/search-character-limit?commentId=3536014%3AComment%3A93765
Вот еще по этой теме на оф. сайте MYSQL: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

Ну и обратился я к оператору хостинга, уже зная, в чем моя проблема и как ее решить. Только вместо решения, появилась новая проблема, буду благодарен, если кто поможет решить ее.

Вот моя переписка с оператором:

18:54:35 Пожалуйста, подождите немного, к Вам присоединится оператор..
18:54:35 Олег:
Добрый вечер. У меня стоит расширение K2 в Joomla для одного из моих сайтов. Мне нужно сделать минимальную длину искаемого слово = 3 символам. По умолчанию она стоит = 4 символам. Это делается в БД.
В русскоязычном интернете информации я не нашел. А вот в зарубежном - нашлась.
Вот ссылка на описание того, что нужно сделать, чтобы решить эту проблему (на английском языке):
http://community.getk2.org/forum/topics/search-character-limit?commentId=3536014%3AComment%3A93765

Насколько я понял, что мне нужно сделать для решения проблемы:
1. Зайти в MySQL \ bin \ my.ini и изменить файл в соответствии с [mysqlD]
2. Отредактировать следующую строку
ft_min_word_len = 3
3. перезагрузить сервер и восстановить FULLTEXT индексы командой - REPAIR TABLE tbl_name QUICK;

А теперь вопрос: как это сделать?)
3-ий пункт я смогу выполнить. 2-ой тоже.
А 1-ый? Где находится этот файл вообще?) Я имею к нему доступ?

Заранее спасибо.
18:54:42 Оператор Александр включился в разговор
18:55:28 Александр: Могу ли я Вам еще чем-либо помочь?
18:55:32 Александр: Здравствуйте.
18:55:53 Александр: Минуту, пожалуйста.
18:56:44 Александр: Думаю, на виртуальном хостинге внесение подобных изменений невозможно.
18:57:51 Олег: а вы не могли бы точно узнать?
18:59:24 Александр: У нас на хостинге такого файла нет. Это из уст системного администратора.
19:00:25 Александр: То, что этого сделать нельзя на нашем хостинге - абсолютно точно.
19:00:40 Олег: Ясно. Спасибо.
19:01:01 Александр: Если у Вас возникнут вопросы — обращайтесь. Всего доброго!
19:01:02 Оператор Александр покинул диалог

Вопрос: Как быть тогда? Конечно, странно, что у них нету это файла, тогда что же еще ограничивает поиск, если не он. Ну а если ошиблись и файл есть, и я имею к нему доступ, то где бы его найти?)

Спасибо, за любую помощь в решении проблемы.
« Последнее редактирование: 19.02.2012, 19:09:46 от info-line »
*

info-line

  • Новичок
  • 4
  • 0 / 0
Ребята, нашел данное значение в переменных в PhpMyAdmin. Обратился в службу поддержки, чтобы они его уменьшили. Жду ответа.

Вроде разобрался)) Будет кому-то гайд, если у кого-то еще возникнет такая же проблема)
*

kingil

  • Новичок
  • 1
  • 0 / 0
Могу сказать как сотрудник хостинга (не как системный администратор), что файл, в который необходимо внести изменения может называться не только /bin/my.ini. Вообще, судя не по /, а по \ можно сказать, что он там находится на виндах. Обычно сервер баз данных общий и работает для всех клиентов, поэтому изменять параметры сервера для всех по просьбе одного... ну вобщем понимаете, да? Особенно, если клиент платит 150 рублей в месяц)))
Хорошего хостера бы на самом деле смутил только пунт:
3. перезагрузить сервер и восстановить FULLTEXT индексы командой - REPAIR TABLE tbl_name QUICK;
Перегрузить сервер - это вырубить на 30-40 минут сайты всех клиентов на сервере (около 200-500 клиентов). На такое решится не каждый, в погоне за uptime-ом.

Вобщем, идея абсурдная)
*

info-line

  • Новичок
  • 4
  • 0 / 0
Спасибо за комментарий.
« Последнее редактирование: 19.02.2012, 23:11:08 от info-line »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать категории из выпадающего списка в K2 в алфавитном порядке?

Автор Yonakano

Ответов: 7
Просмотров: 2911
Последний ответ 23.09.2022, 13:03:28
от Yonakano
Точный поиск JA K2 Filter and Search Module

Автор Abez

Ответов: 1
Просмотров: 929
Последний ответ 25.02.2020, 19:58:47
от Abez
Добавление html символов вначале и конце строки

Автор lgmax

Ответов: 1
Просмотров: 800
Последний ответ 25.01.2020, 23:07:46
от beliyadm
[Решено] Замена title браузера от кол-ва символов в заголовке

Автор lgmax

Ответов: 13
Просмотров: 1666
Последний ответ 27.08.2019, 23:25:59
от lgmax
Как сделать нечто подобное с помощью дополнительных полей?

Автор designerandrey

Ответов: 0
Просмотров: 858
Последний ответ 04.04.2019, 17:20:32
от designerandrey