Новости 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 Ответов
  • 19767 Просмотров
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
*

Arkadiy

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

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ага. с тебе тоды языковой файл для инглиша, переведём, поди )

НО
пока что выдаёт ошибку:  pb_sp_conf is not defined duration: pb_sp_conf.animatespeed, в 26 строке js
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А ты все файлы заменил? она формируется в pb_spoiler.php, может из кеша берет.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
не. ошибка, по ходу.

кстати, замени в инициализации
      $animatespeed   = $pluginParams->get('animatespeed', 'fast');
на циферь, мы же в мутулзе не обрабатываем троковое значение, поставь 300, что ли.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
не. ошибка, по ходу.

кстати, замени в инициализации
      $animatespeed   = $pluginParams->get('animatespeed', 'fast');
на циферь, мы же в мутулзе не обрабатываем троковое значение, поставь 300, что ли.
Ошибки нет, сейчас удалил и поставил заново, все нормально, без ошибок.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нет, все как ты сказал, 1.5.22 + плагин апгрейда.
*

Arkadiy

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

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
закинул файлы скрипта и XML внутрь папки спойлера и дальше их обновляю )))).
понятно, что нифига не обновляется ))).

по делу:
стрелки вверх тормашками. почему? по дефолту они вниз должны смотреть, имхо. сейчас у меня логический диссонанс возникает, глядя на них )
и позиционирование открытого спойлера по верхнему краю экрана надо опцией сделать, иначе крышу срывает, когда каждый маленький блок прыгает вверх. представь 5 спойлеров по одному предложению в каждом - надо их все разом видеть (типа меню хочу сделать, например), а они будут прыгать в угол экрана, скрывая то, что выше..
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
1. подумаем.
2. Была ошибка, этот эффект должен возникать только при выборе "Показать по" в режим "Нажатие и перейти к УРЛ", в остальных режимах без этого.

Новая версия 1.3.8. Исправил небольшие ошибки, вынес языковые константы в файлы языков. en-GB.plg_content_pb_spoiler.ini уже можно переводить.

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

staticlight

  • Завсегдатай
  • 1086
  • 65 / 0
  • Staticlight
Мой корявый англицкий. Поправляем-с
Код

PBSP_DESC=За более подробной информацие по настройке обращаться к инфе в интернете http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm
PBSP_LIB=Script Library
PBSP_LIB_DESC=Use default Joomla Library - mootools (<b>enable mootools upgrade plugin in plugin manager, if you choose this option</b>), or либо Jquery
PBSP_JQ_LOAD=include Jquery
PBSP_JQ_LOAD_DESC=include Jquery library?
PBSP_CSS_LOAD=dafault css
PBSP_CSS_LOAD_DESC=use default pbspoiler CSS or custom user CSS?
PBSP_GENERAL_SETTINGS=Main settings
PBSP_SPEED_ANIMATION=spoiler animation speed
PBSP_SPEED_ANIMATION_DESC=Value integer value in milliseconds, the numerical value of 100 to 800
PBSP_LOAD_IMAGES=Load images on spoiler's opening
PBSP_LOAD_IMAGES_DESC=Load images on spoiler's tab opening. If yes, images will not be loaded before opening the spoiler.
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 user click or mouse over (hover) on spoiler's header. Differ between 'click' function and 'click and serf url' matters only if your headlines hyperlink. With the 'Click and go to the URL', the script first cutting of spoiler, and then go to the URL, specified in the header.
PBSP_INDEX_OPENED=Open index by default
PBSP_INDEX_OPENED_DESC=open bu default spoiler's index, in value [1, 2 etc.], when 1 = 1st spoiler 2 = 2nd сspoiler etc. т.д. A blank indicates that no spoiler must not be opened by default.
PBSP_JQ_SETTINGS=Jquery library settings
PBSP_DELAY=Open delay
PBSP_DELAY_DESC=If option  'Display on (show on)' above set in 'hover' option, установить задержку в миллисекундах перед раскрытием спойлера.
PBSP_ONE_OPENED=One must be open
PBSP_ONE_OPENED_DESC=Roll on spoiler's content only if one is open at least spoiler.
PBSP_ANIMATION_OPENED=Show animation of 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 open / close of Jquery library
PBSP_DECOR_TYPE=CSS rules types
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=1st parameter
PBSP_DECOR_TYPE_FIRST_DESC=Description above or on site.
PBSP_DECOR_TYPE_SECOND=2nd parameter
PBSP_DECOR_TYPE_SECOND_DESC=Description above or on http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm.

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

staticlight

  • Завсегдатай
  • 1086
  • 65 / 0
  • Staticlight
Кстати, здесь нажно добавить еще и синтаксис спойлера:
Код
PBSP_DESC=Plugin's info (basic on): http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm. How to use: just add this syntax {spoiler title=Spoiler title}Spoiler's Content{/spoiler}
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, я тут понял, что надо выкинуть нафиг параметр "открытые по умолчанию", ибо это ни разу не удобное и не гибкое решение.
такие параметры надо внутрь синтаксиса засовывать, чтобы можно было для каждой страницы свои комбинации создавать.
поэтому, по хорошему надо сделать так:

{spoiler >> title=Скрытый текст}
или так
{spoiler /open/ title=Скрытый текст}

в общем, отлавливать необязательное ключевое слово

staticlight, спасибо, завтра проверю своим не менее корявым )))
*

skai

  • Завсегдатай
  • 1198
  • 153 / 1
  • skaiseo
{spoiler /open/ title=Скрытый текст}
+ 100500  - так будет гораздо удобнее. добавит гибкости.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

staticlight

  • Завсегдатай
  • 1086
  • 65 / 0
  • Staticlight
и, кстати, давайте, действительно, название сделаем
Lasy Velo Spoiler
plg_lvs_spoiler

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, я тут понял, что надо выкинуть нафиг параметр "открытые по умолчанию", ибо это ни разу не удобное и не гибкое решение.
такие параметры надо внутрь синтаксиса засовывать, чтобы можно было для каждой страницы свои комбинации создавать.
поэтому, по хорошему надо сделать так:

{spoiler >> title=Скрытый текст}
или так
{spoiler /open/ title=Скрытый текст}

в общем, отлавливать необязательное ключевое слово

staticlight, спасибо, завтра проверю своим не менее корявым )))
Да, так будет лучше. Сделаем.
*

Arkadiy

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

Arkadiy

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

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Со стрелочками и общим видом - это уже я приведу к знаменателю, раз взялся за оформление. Кстати, на этой же базе вполне не плохо будет организовать и модуль. Раздавать в паре плагин-модуль. Как считаете?
*

effrit

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

а вот что действительно актуально для данного плагина может быть, так это опциональная поддержка bb-кодов.
так что, если есть энтузиазизм, прикрути лучше класс bb-кодов, благо вроде есть такое добро в тырнете. чтобы опционально грузил/обрабатывал bb-коды.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Для bbCode скорей всего следует писать отдельный плагин. Да и тот же компонент от RT держит те вставки, которые сам себе сделаешь. Нет какого то фиксированного стандарта для этих целей. Тот же [img] знаю в пяти вариантах. Каждый описывать что ли?
*

effrit

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

ну, это уже опция необязательная. можно прикрутить, можно - на откуп внешним плагинам оставить
*

skai

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

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Давайте со всех сторон обдумаем. Если делать свои bbCode варианты для спойлера, сколько их сможем туда напихать? Да даже не в этом дело, вариант, когда в описании пишешь даже 10 параграфов типа {img},{big} и тд, выглядит по деревянному. Мы потеряем гибкость и концепцию. Это для DLE такое прокатит, но не для Joomla
*

effrit

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

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

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Это в принципе не выходит за рамки назначения и принципа мамбота, но, как бы уже выполняет работу компонента. Для этих целей служат полноценные компоненты. Для плагина - это избыточный код и аналогичные функции. По моему допустимы лишь вставки цитат как нить по красивому так. Скай верно выразился
по моему не стоит усложнять.. )) 
Это как на велосипед ставить колеса от хорошей конторы, только потому что они хорошие и модные
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить 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
Просмотров: 11719
Последний ответ 13.05.2016, 13:22:37
от akteon25
Только на главной странице не отображаются Keywords и Description

Автор dobriibobr

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