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

LovelAss

  • Новичок
  • 8
  • 2 / 0
Решил установить на сайт модуль вывода похожих новостей mod_related_items и столкнулся с такой проблемой - этот модуль выводит все новости при совпадении хотя бы одного ключевого слова, получается довольно неплохой списочек из 10-20 или большего кол-ва новостей. Нашёл на одном из форумов, там чел советует установить модуль mod_related_anything, облазил всё что мог, для joomla так ничего и не нашёл, вот решил обратиться за помощью, может у кого есть это самый mod_related_anything, если есть дайте ссылочку, или же подскажите как можно ограничить количество выводимых новостей в модуле related_items. И вообще интересно услышать мнение кто чем пользуется для вывода похожих новостей!!!
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
поставь вот этот, он копия оригинала, но с ограничением количества

[вложение удалено Администратором]
*

LovelAss

  • Новичок
  • 8
  • 2 / 0
Виталик, спасибо тебе, но не работает, мать его. Хотелось бы уточнить, что у меня joostina стоит, может быть из-за этого? И есть ли что-нибудь подобное, но только для joostina?
*

koN

  • Захожу иногда
  • 103
  • 7 / 0
*

LovelAss

  • Новичок
  • 8
  • 2 / 0
А вот это то о чём я так долго мечтал. Модуль классный, всё что нужно и не нужно есть. Надо будет на русский язык ещё перевести, чуть попозже выложу русскую версию этого модуля. Спасибо, koN.
*

koN

  • Захожу иногда
  • 103
  • 7 / 0
Надо будет на русский язык ещё перевести

Да вроде и так всё понятно :)
Кстати, автор присвоил модулю лицензию "Creative Commons Attribution-Noncommercial-No Derivative Works 3.0".
Т.е. нельзя вносить туда изменения.
« Последнее редактирование: 06.04.2009, 20:49:07 от koN »
*

LovelAss

  • Новичок
  • 8
  • 2 / 0
К чёрту лицензию, перевод не нарушает лицензионных прав, я надеюсь, зато русскоязычным пользователям со слабым английским горазде понятнее и приятней. По крайней мере ни один копирайт, ни права на модуль я не менял, чистый перевод и ничего более. Как и обещал - выкладываю, пользуйтесь. Спасибо ещё раз, koN!

[вложение удалено Администратором]
*

koN

  • Захожу иногда
  • 103
  • 7 / 0
Спасибо ещё раз, koN!

Собственно, не за что. На него есть ссылка в постоянных темах этого раздела.
*

gallah

  • Осваиваюсь на форуме
  • 46
  • 9 / 0
Решил установить на сайт модуль вывода похожих новостей mod_related_items и столкнулся с такой проблемой - этот модуль выводит все новости при совпадении хотя бы одного ключевого слова, получается довольно неплохой списочек из 10-20 или большего кол-ва новостей. Нашёл на одном из форумов, там чел советует установить модуль mod_related_anything, облазил всё что мог, для joomla так ничего и не нашёл, вот решил обратиться за помощью, может у кого есть это самый mod_related_anything, если есть дайте ссылочку, или же подскажите как можно ограничить количество выводимых новостей в модуле related_items. И вообще интересно услышать мнение кто чем пользуется для вывода похожих новостей!!!

В файле modules/mod_related_items/helper.php в конце строки
Код
' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )';

прописать лимит и указать желаемое число статей.
Т.е., например, для вывода трех статей/ссылок строка должна выглядеть так:
Код
' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' ) LIMIT 3';
*

DemonXT

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
 решить мою проблему!
У меня на главной странице дублируются все новости из категорий. Когда их было немного список похожих новостей был невелик. Но теперь, когда из набралось более 300 список похожих новостей стал очень большой. Вариант с правкой кода мне не помог.
Вариант
поставь вот этот, он копия оригинала, но с ограничением количества
тоже.
Более того я пробовал полностью удалить папку: modules/mod_related_items/ но пожожие новости продолжают отображаться!  :o
Может править нужно, где-то в другом месте?

  P.S.
Кеш очищал.
У меня Joomla 1.5.14
*

kidd

  • Новичок
  • 5
  • 0 / 0
Пытаюсь решить эту старую уже проблему - показать похожие матералы.
Ограничение числа показов не очень полезно, тк мне нужно показать похожие внутри раздела или даже внутри категории, а mod_related_items выдает все похожие, из других разделов.
в надежде это исправить хотел поставить mod_dgm-ra-seo но получил:
"Вам необходимо включить Режим совместимости (Legacy Mode). Для этого необходимо опубликовать системный мамбот Legacy."
И где этот мод искать? У меня в 1.5.22.
Подскажите, кто знает.

*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Значит этот модуль под J 1.0

Оно смысл имеет ради него включать legacy?

Но если уж очень хочется - ищи в плагинах
*

kidd

  • Новичок
  • 5
  • 0 / 0
SDKiller , спасибо, совершенно мне не надо для старых версий, тем более что он наверно не заработает в 1.5.
А как еще можно решить вопрос похожих мат, может можно стандартный модуль подкрутить?
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Только сегодня кому-то советовали как стандартный модуль поправить, ищите тему
*

kidd

  • Новичок
  • 5
  • 0 / 0
Все проискал, все советы как количество уменьшить
*

zeur84

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Цитировать
В файле modules/mod_related_items/helper.php в конце строки
Код:

' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )';

Для joomla 2.5 эта строчка в файле modules/mod_related_items/helper.php выглядит так:
Код
$query->where('(a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).')');

Допустим, хотим выводить только по 5 ссылок. Тогда:
Код
$query->where('(a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).')LIMIT 5');

Проверено на Joomla 2.5.6 Это работает!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибки в модуле новостей

Автор belovpaha

Ответов: 2
Просмотров: 1154
Последний ответ 20.02.2018, 07:11:53
от belovpaha
NEWS SHOW PRO GK5 особенности отображения новостей

Автор Maria_sounds

Ответов: 7
Просмотров: 3972
Последний ответ 25.07.2017, 10:05:36
от vipiusss
Модуль rss-лента новостей. "Лента не найдена"

Автор Pav

Ответов: 2
Просмотров: 2125
Последний ответ 05.10.2016, 20:37:21
от Pav
Модуль новостей Youversity News Slider

Автор longin

Ответов: 0
Просмотров: 1061
Последний ответ 05.04.2016, 07:49:49
от longin
Главная страничка - сетка новостей

Автор scorpion1981

Ответов: 1
Просмотров: 913
Последний ответ 01.03.2016, 23:07:23
от AlekVolsk