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

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Дождемся мнения Аркадия. Будет у нас разработка от руСообщества :)
*

skai

  • Завсегдатай
  • 1198
  • 153 / 1
  • skaiseo
Как вариант можно разбить на две версии - вроде бесплатной и платной (с bb и без).
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
плохо читаем, товарищи. это не попсовая приблуда, а поддержка ОСОБЕННОСТИ ПЛАГИНА.
но решать, конечно, главному_допиливателю. а лично для себя я потом сделаю, пожалуй. а вам буду ПРОДАВАТЬ ЗА ДЕНЬГИ )))))

пробежался по переводу. рецензируем дальше:

Код
PBSP_DESC=This <b>Lazy Velo Spoiler<b> is evalution of pb_spoiler, based on ddaccordion script (http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm). Short description of our plugin: there are jQuery and MooTools version, have unique option for dynamic load images of opening spoilers. And main question: why 'Velo'? Ok, it's easy - just becose of FUN! :) 
PBSP_LIB=JavaScript Library
PBSP_LIB_DESC=Use built in MooTools (<b>required active 'MooTools upgrade plugin'</b>), or jQuery
PBSP_JQ_LOAD=Include jQuery
PBSP_JQ_LOAD_DESC=Include jQuery library?
PBSP_CSS_LOAD=Default css
PBSP_CSS_LOAD_DESC=Include lvspoiler.css?
PBSP_GENERAL_SETTINGS=Main settings
PBSP_SPEED_ANIMATION=Spoiler animation speed
PBSP_SPEED_ANIMATION_DESC=Integer value in milliseconds, recummended value - from 100 to 800
PBSP_LOAD_IMAGES=Load images depending of spoiler's state
PBSP_LOAD_IMAGES_DESC=Load images when spoiler's slide opening. If yes, images in spoilers will be loading only for open and opening spoilers.
PBSP_COLLAPSE_PREV=Roll up previous spoilers?
PBSP_COLLAPSE_PREV_DESC=if yes, roll up previous spoilers if new spoiler is opening.
PBSP_SHOW_TO=Display on (show on)
PBSP_SHOW_TO_DESC=Open spoiler on click or mouse over (hover) on spoiler's header. Differ between 'click' function and 'click and serf url' matters only if headlin's hyperlink are used. With the 'Click and go to the URL', the script first open the spoiler, and then go to the URL, specified in the header.
PBSP_JQ_SETTINGS=jQuery library settings
PBSP_DELAY=Open delay
PBSP_DELAY_DESC=If 'Display on (show on)' above set in 'hover', this option will set the delay befor spoilers will react on hover. This option is prevent spoilers from noisy action when user choosing the one he want to open/close.
PBSP_ONE_OPENED=One must be open
PBSP_ONE_OPENED_DESC=Roll on spoiler's content only if at least one spoiler is open.
PBSP_ANIMATION_OPENED=Show animation for open-by-default spoiler
PBSP_ANIMATION_OPENED_DESC=Show open-by-default spoiler's animation?.
PBSP_SAVE_STATE=Save the state
PBSP_SAVE_STATE_DESC=Save the spoiler's state in user's session?
PBSP_JQ_SETTINGS_DECOR=CSS Settings for 'open' and 'close' state
PBSP_DECOR_TYPE=CSS rules
PBSP_DECOR_TYPE_DESC=The first parameter, the 4 possible values. 2 and 3 options are HTML parameters. Here are some possible scenarios: 'No issue' (the state is not made), 'Prefix' (added to the header, for example, is written below [closed] and [open] or / img src = 'close.gif' / and / img src = 'open.gif '/),' suffix '(to be added at the end of the header, the lower settings as a prefix).
PBSP_DECOR_TYPE_DESC_NO=No CSS rules decor
PBSP_DECOR_TYPE_DESC_PREF=Prefix
PBSP_DECOR_TYPE_DESC_SUFF=Suffix
PBSP_DECOR_TYPE_FIRST=1-st parameter
PBSP_DECOR_TYPE_FIRST_DESC=Description above or on site.
PBSP_DECOR_TYPE_SECOND=2-nd parameter
PBSP_DECOR_TYPE_SECOND_DESC=Description above or on ТУТ САЙТ С ДЕМКОЙ.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Со стрелочками и общим видом - это уже я приведу к знаменателю, раз взялся за оформление. Кстати, на этой же базе вполне не плохо будет организовать и модуль. Раздавать в паре плагин-модуль. Как считаете?
Стрелочки я уже правильно поставил (верх-низ), там в скрипте немного некорректно они обрабатывались. Модуль можно будет сделать, но лучше позже чем раньше. Пока отловим глюки, а потом уже можно будет лепить что хош.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
мы ничего не потеряем.
ещё раз - одна опция в настройках + ВНЕШНИЙ класс обработки.
и никто не мешает оставить в этом классе не все, а, допустим, два варианта [img]
вот и весь вопрос.

для чего это предложение?
для того, чтобы пользователь, для которого актуальна именно ленивая подрузка изображений (а это - ГЛАВНАЯ причина доработки плагина и повод для смены названия) получил готовое решение для вставки картинок как с сервера, так и с тырнета.
к примеру, у меня на серваке плагин не сработал нормально, пока я не отключил ТИНИ с его дурацкими вставками собственых src
а бб-коды позволяют подобные грабли обходить.
чудится мне что bb-код гораздо труднее вставлять в страницу чем просто ссылку на изображение. Глюки Тини тоже не повод усложнять что-либо (надо устранить причину, а не костыли приделывать). У меня например тот-же самый Тини (установленный по-умолчанию и со стандартными настройками) нормально обработал внешний урл, может дело в его настройках?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а представьте страницу на которой 10 спойлеров, в каждом из которых по 3 HD-скриншота (вполне реальный пример для сравнительно обзора, скажем, видеокарт/фотиков и тд).
вот где сила bbкода проявится ). а с тини вы застрелитесь редактировать подобную убер-страницу )
ну ладно, есть и внешние обработчики ббишек
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
>ТИНИ с его дурацкими вставками собственых
src

Это от того что отключена очистка текста...
Я с мобильного, в основном...
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, кстати, поднимешь страницу с демками? есть внешний полигон для подобных безобразий? обычно же с JED куда-то ссылка идёт во вне.
какой-нить пайпал_донатэ туда и разбогатеешь... "100 годов - 100 рублёв" )))
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, кстати, поднимешь страницу с демками? есть внешний полигон для подобных безобразий? обычно же с JED куда-то ссылка идёт во вне.
какой-нить пайпал_донатэ туда и разбогатеешь... "100 годов - 100 рублёв" )))
:) это попозже, сейчас давай оттестируемся. Версия 1.3.9. Доработано:
1. В англ. яз. файл вставлен перевод staticlight поправленный effrit
2. Новый синтаксис вставки спойлера
Код
{spoiler title=Заголовок opened=1}{/spoiler}
где opened - состояние спойлера при загрузке страницы, 1 - открыт, 0 - закрыт.
Работает только с мутулзами, jQuery пока по-старому, хотя не смотря на использование библиотеки opened требуется указать, иначе не словит.
3. Исправил поведение стрелок в мутулзах, теперь показывают куда надо.

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

staticlight

  • Завсегдатай
  • 1086
  • 65 / 0
  • Staticlight
Я тоже немного выскажусь.
bb-код будет удобен новичкам или для заливки больших количеств изображений.
Для небольших проектов (до 20 средних картинок + текст на странице) лучше оставлять html-теги
Код
<img src="">
с возможностью править alt и title картинок для SEO-задач.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, лучше вперёд ставить статус "opened=1" (т.е. перед заголовком)
визуально проще ориентироваться будет, т.к. параметр не будет сдвинут разными длинами заголовков
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
http://dev.ezoterik.info/php-i-bbcode/Неплохая статейка по парсеру bb-кодов.
Arkadiy, лучше вперёд ставить статус "opened=1" (т.е. перед заголовком)
визуально проще ориентироваться будет, т.к. параметр не будет сдвинут разными длинами заголовков
Ну давай в следующий заход :)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Предлагаешь спиться? гг
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Прикольная, ее как-то в дескрипшен вмонтировать надо?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вроде видел, что монтируют.
но основное назначение - JED. собственно, по ней видно, что что-то подгружается, будет глаза цеплять тем, кому оно надо )
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Эх, не успею до отпуска, но может это и к лучшему - может баги какие полезут, отловить надо.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Наверное надо новую создать, чтобы файлы в первый пост цеплять
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Я уже поччти написал, пиши, потом скомпилируем, ато из меня писатель еще тот, точнее подожди как я напишу, след. постом свой вариант выложишь
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Аркадий, велосипеды это конечно здорово. Но мы с тобой живя рядом там и не попили вива. Я понимаю что мы все спортсмены, но не на столько же гг. Завтра скину пару модуль+плагин Работаю
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Аркадий, велосипеды это конечно здорово. Но мы с тобой живя рядом там и не попили вива. Я понимаю что мы все спортсмены, но не на столько же гг. Завтра скину пару модуль+плагин Работаю

:) Еще успеем. Приму если успею, переведу в новую тему, только опиши что кроме CSS в плагине делал (лучше конечно ничего) :)

Переименовал плагин в новой теме, вроде прошло без ошибок. Заголовок и текст поправил.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить enclosure в картинки в RSS потока?

Автор eldar2005

Ответов: 28
Просмотров: 8853
Последний ответ 27.05.2017, 11:37:44
от eldar2005
Как показывать баннер (модуль) только для мобильных устройств?

Автор Escander

Ответов: 9
Просмотров: 3531
Последний ответ 27.10.2016, 12:26:56
от Escander
JCH_Optimize Plugin - оптимизирует загрузку страницы. Работает.

Автор Beer

Ответов: 16
Просмотров: 9329
Последний ответ 03.10.2016, 22:33:02
от SeBun
Модуль лезет на все страницы, а должен быть только на главной.

Автор landgraf

Ответов: 23
Просмотров: 11718
Последний ответ 13.05.2016, 13:22:37
от akteon25
Только на главной странице не отображаются Keywords и Description

Автор dobriibobr

Ответов: 3
Просмотров: 1978
Последний ответ 18.06.2014, 01:48:55
от dobriibobr