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

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
К2 + ЧПУ
« : 09.06.2011, 23:02:29 »
После установки К2 на сайт, где уже есть sh404SEF, все ссылки, ведущие на категории и материалы получились на русском языке. Отключал в настройках sh404SEF перевод ссылок К2, но это не помогло.
Подскажите, что нужно сделать, чтобы ссылки, относящиеся к К2 были, как и остальные, на английском? То есть, использовали бы алиасы...
*

tim222

  • Захожу иногда
  • 67
  • 2 / 0
Re: К2 + ЧПУ
« Ответ #1 : 09.06.2011, 23:36:06 »
в глобальных настройках K2 вроде есть поле с заменяемыми знаками. Еще как вариант, удалить все сслылки на сайте и заново их создать-- я имею ввиду в sh404.
Кстати вот статья хорошая по настройке этого компонента http://joomlaforum.ru/index.php?topic=76577.0
*

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #2 : 10.06.2011, 06:19:11 »
Таблицу замены символов я использовал как в К2 так и в sh404SEF. Но в итоге ссылки из www.site.com/категория превратились в www.site.com/kategoria, когда мне нужно - www.site.com/category.
С настройками sh404SEF вроде разобрался, так как остальные ссылки на сайте меня устраивают. Проблема именно с К2.
Еще как вариант, удалить все сслылки на сайте и заново их создать-- я имею ввиду в sh404.
После настройки sh404SEF, он просит удалить все ссылки. Но это не помогает решить проблему.
*

tim222

  • Захожу иногда
  • 67
  • 2 / 0
Re: К2 + ЧПУ
« Ответ #3 : 10.06.2011, 08:50:30 »
www.site.com/категория превратились в www.site.com/kategoria, когда мне нужно - www.site.com/category.

Так и должен работать компонент.. он транслитеризует твои ссылки а не переводит их на английский язык.
*

tim222

  • Захожу иногда
  • 67
  • 2 / 0
Re: К2 + ЧПУ
« Ответ #4 : 10.06.2011, 08:52:21 »
как вариант, в настройках компонента, пропиши вручную название Category для категории.. тогда это название применится ко всем дочерним категориям и материалам.
*

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #5 : 10.06.2011, 16:13:25 »
www.site.com/категория превратились в www.site.com/kategoria, когда мне нужно - www.site.com/category.

Так и должен работать компонент.. он транслитеризует твои ссылки а не переводит их на английский язык.
Понятно. Но дело в том, что для каждой категории указываю Алиас по-английски. Почему он не используется для ссылок?
как вариант, в настройках компонента, пропиши вручную название Category для категории.. тогда это название применится ко всем дочерним категориям и материалам.
Мне это не подходит.
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: К2 + ЧПУ
« Ответ #6 : 10.06.2011, 16:38:30 »
Понятно. Но дело в том, что для каждой категории указываю Алиас по-английски. Почему он не используется для ссылок?Мне это не подходит.

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

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #7 : 11.06.2011, 21:37:39 »
Мой сайт - http://www.rusherofactory.com
И, извините, что не совсем в тему, но подскажите, из-за чего справа на сайте образуется пустая область, и как ее убрать? (ответ можно в ЛС)
« Последнее редактирование: 11.06.2011, 21:48:47 от Roporak »
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Re: К2 + ЧПУ
« Ответ #8 : 11.06.2011, 22:26:50 »
Как так, если у тебя стоит sh404 то там в таблице автозамены можно настроить ведь!ТЫ точно правильно там заменил символы?!
Смотрю....
*

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #9 : 11.06.2011, 23:04:20 »
Как так, если у тебя стоит sh404 то там в таблице автозамены можно настроить ведь!ТЫ точно правильно там заменил символы?!
Точно. Таблица с транслитерацией русских букв есть как в самом К2 (отлично генерирует алиасы материалов), так и в sh404SEF.
Но мне не автозамена символов нужна, а нужно, чтобы использовались алиасы категорий К2 при создании ссылок.
*

niceteam

  • Захожу иногда
  • 169
  • 2 / 2
Re: К2 + ЧПУ
« Ответ #10 : 12.06.2011, 01:27:51 »
У меня тоже подобный вопрос, надеюсь на этом форуме ктонибудь бывает. Дело в том что, sh404 делает ссылки из загаловков, а мне нужно чтобы от брал из где это специально прописывается в статье из Псевдоним заголовка, я их прописываю ссылки вручную а он все равно сам генерирует. Изза этого получаются очень огромные ссылки если название материала длинное.
*

niceteam

  • Захожу иногда
  • 169
  • 2 / 2
Re: К2 + ЧПУ
« Ответ #11 : 12.06.2011, 01:51:57 »
Ещё дабы не создовать новой темы, как вывести на главной только 5 материалов?
*

Snach

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #12 : 12.06.2011, 02:15:27 »
Заходи в выбор меню, далее выбирай, которое у тебя на главной, далее справа будет выбор Количество Основных материалов ставь 5, и выбирай сколько колонок. Вторичный вывод и первичный выбор можно поставить по 0
*

Roporak

  • Захожу иногда
  • 72
  • 0 / 0
Re: К2 + ЧПУ
« Ответ #13 : 25.07.2011, 12:10:44 »
Проблема так и осталась. Более того, я только сейчас заметил, что заголовки страниц, созданных К2 имеют совершенно другой вид: Страница - Название Сайта, вместо НазваниеСайта - Заголовок Страницы (как на обычных страницах). Не подскажите, как решить эту проблему?
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Re: К2 + ЧПУ
« Ответ #14 : 25.07.2011, 12:56:23 »
Так.
Нужно уяснить.
Если вы используете sh404SEF то вам лучше уже не искать ответа в К2 теме, потому-что сторонний компонент работает по своим принципам и в соответствующей ветке про это всё расписано.

Смотрю....
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться