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

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Публикация статей
« : 04.10.2011, 23:18:41 »
Помогите решить проблему с компонентом К2. При добавлении материала с морды сайта или с админпанели. кем угодно юзером или админом, пропадает страница с категорией, вместо нее
Цитировать
COM_CONTENT_ERROR_ARTICLE_NOT_FOUND
Понятно что компонент не находит статью, но почему. В админке статья появляется нормально, читабельна и добавляется цифрой возле категории  на сайте.
Для опытных  может и пустяшный вопрос но преодолеть не могу, ни сайты, ни Yandex с Гошей ничего не дали в  плане поиска. А отступать некуда, все компоненты перепробовал подходит только К2.Вся надежда на этот сайт ! Модераторам разрешу посмотреть в админпанель, поскольку скрины получаются очень длинные.
Данные : - Joomla 1.7 ,сайт мультиязычный, К2 версии 2.5.0 .Сторонних SEF нет.Сайт практически на демоданных, так что ничего страшного в плана исправлений
« Последнее редактирование: 05.10.2011, 00:10:10 от avtomastersu »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Публикация статей
« Ответ #1 : 05.10.2011, 02:33:39 »
Вообще-то это сообщение об ошибке для com_content, а не для К2

Никакого плагина для com_content не стоит?
« Последнее редактирование: 05.10.2011, 02:40:25 от SDKiller »
*

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Re: Публикация статей
« Ответ #2 : 05.10.2011, 03:01:20 »
Нет , есть только такие
Контент - Joomla      
Simple Image Gallery PRO (by JoomlaWorks)         
Контент - Загрузка модулей         
Content - yvComment         
Контент - Скрытие электронной почты         
Контент - Подсветка кода (GeSHi)         
Контент - Разрыв страницы         
Контент - Навигация по страницам         
Контент - Рейтинг
*

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Re: Публикация статей
« Ответ #3 : 05.10.2011, 12:23:02 »
Терпение кончилось, решилось только сносом всего компонента и новой его установкой, сейчас все ОК. Возможная причина - делал
Цитировать
Импортировать контент из Joomla!
Цитировать
Импорт Joomla! Пользователей
после этого и начались траблы.  Также одновременно удалил модуль cdlogin и плагин cdscriptegrator, поскольку в К2 свои, думал уйдет ошибка когда юзер пытается зарег. на сайте,
Цитировать
Calendar.setup: Nothing to setup (no fields found). Please check your code
после того если нажать ОК то все идет дальше нормально.Но оказалось нет. Хотя до установки компонента К2 такого не было. Браузер Opera показал что это идет от Java Script, но где это ? На сайте forum.joomla.org тоже внятного решения не нашел, хотя перепробовал некоторые советы, может кто с таким сталкивался. Посмотреть ошибку можно  здесь
« Последнее редактирование: 12.11.2022, 21:06:32 от avtomastersu »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Публикация статей
« Ответ #4 : 05.10.2011, 14:02:18 »
... что это идет от Java Script, но где это ...

Хороший вопрос ))) У вас грузится 27 скриптов. Разными расширениями загружается несколько версий библиотеки jquery.

Одну ошибку на этой странице можете убрать, заменив в components\com_k2\templates\register.php

Код
	window.onDomReady(function(){
document.formvalidator.setHandler('passverify', function (value){
return ($('password').value == value);
});
});

на

Код
	window.addEvent('domready',(function(){
document.formvalidator.setHandler('passverify', function (value){
return ($('password').value == value);
});
}));

А что касается календаря - К2 в дефолтном шаблоне формы регистрации не просит behavior.calendar

Так что что не могу сказать что у вас закружает calendar.js и calendar-setup.js
*

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Re: Публикация статей
« Ответ #5 : 05.10.2011, 14:40:52 »
Спасибо SDKiller код исправил, но ошибка с календарем осталась. Как ее убрать сам точно не разберусь. Если для этого нужно
Цитировать
Модераторам разрешу посмотреть в админпанель
то пожалуйста, терять все равно нечего
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Публикация статей
« Ответ #6 : 05.10.2011, 18:09:34 »
Что на неё смотреть )))

Вариантов немного:

1) если профили пользователей не нужны - отключите "профиль пользователя K2" в настройках компонента и пользуйтесь стандартной формой регистрации;
2) календарь тянется из шаблона - значит надо искать в нём JHTML::_('behavior.calendar');
3) есть ещё одна смутная мысль - попробуйте вместо JCE назначить редактором по умолчанию штатный TinyMCE, чтобы именно он использовался в форме регистрации  (а уж JCE назначите пользователям индивидуально).
*

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Re: Публикация статей
« Ответ #7 : 06.10.2011, 00:33:10 »
По порядку
1. Профили отключал все в т. ч. и Super Userа в настройках компонента. Отключил стандартный модуль регистрации К2. Создал стандартный, нет результата. Есть одна непонятка - почему стандартный модуль при нажатии на ссылку регистрации отображается все равно формой модуля К2 login с редактором, удалить не решился, попробую может локально на Денвере. Когда на сайте не стоял компонент К2 такого не было. Когда его снес, помня об этом, я специально проверил стандартную форму авторизации и ту которую потом все таки удалил (cdlogin), все стало работать без ошибки
Цитировать
Calendar.setup: Nothing to setup (no fields found). Please check your code

2. В шаблоне нет ничего похожего на behavior.calendar (только JHTML::_('behavior.mootools');  ) и все
3. Назначал разные, в т. ч. и совсем без редактора
« Последнее редактирование: 06.10.2011, 00:41:10 от avtomastersu »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Публикация статей
« Ответ #8 : 06.10.2011, 01:29:58 »
... почему стандартный модуль при нажатии на ссылку регистрации отображается все равно формой модуля К2 login с редактором...

Потому что не отключили вы в настройках то о чём я говорил:





А по сути проблемы - не требует К2 календаря в форме регистрации и не загружает его.

Поставьте чистый К2 на чистую J с дефолтным шаблоном и убедитесь.
« Последнее редактирование: 06.10.2011, 01:46:39 от SDKiller »
*

avtomastersu

  • Захожу иногда
  • 67
  • 0 / 0
  • Статьи интересных тем katalogclub.com
Re: Публикация статей
« Ответ #9 : 06.10.2011, 02:10:14 »
Спасибо SDKiller, в зачет плюс, помогло и еще раз спасибо за оперативность  *DRINK*
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

количество статей рядом с тегом

Автор kira

Ответов: 1
Просмотров: 806
Последний ответ 27.11.2017, 11:25:26
от kira
Как изменить автора для всех статей K2?

Автор lgmax

Ответов: 2
Просмотров: 1188
Последний ответ 21.11.2017, 11:14:55
от SeBun
Чем сделать можно кольцевую перелинковку статей в категории

Автор Light_And_Dark

Ответов: 0
Просмотров: 941
Последний ответ 24.12.2016, 16:16:39
от Light_And_Dark
Заголовок избранных статей другим цветом

Автор composerr

Ответов: 0
Просмотров: 865
Последний ответ 27.07.2016, 11:12:58
от composerr
Не учитывает просмотры статей К2 с включенным кэшем на сайте. Joomla! 3.5.1 Stable + K2 Version 2.7

Автор Kokshetau

Ответов: 0
Просмотров: 1015
Последний ответ 15.07.2016, 14:30:14
от Kokshetau