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

bighand

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Привет, всем.

долго копал инет, теперь пишу тут, чтобы не забыт и может еще кому-то будет полезно.

речь пойдет о стандартном окне Слайд-шоу в Datso Gallery (сейчас стоит v1.20) - Shadowbox.
файлы лежат тут: components/com_datsogallery/libraries/shadowbox/

1. как поменять расположение кнопки Close (верхний правый угол)?

помогли эти материалы:
http://shadowbox.1309102.n2.nabble.com/How-do-you-move-the-close-button-to-the-top-right-corner-in-3-0-td2860713.html
http://shadowbox.1309102.n2.nabble.com/Move-close-button-td7021954.html

суть такая, нужно:

- поправить shadowbox.js - удалить текст, где он сейчас есть
Код
<a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a>
и вставить его после слов
Код
<div id="sb-title-inner"></div>

- дальше правим два стиля в файле shadowbox.css

Код
#sb-title-inner{ 
float:left;
  font-family:"Segoe UI", "Segoe UI Light", sans-serif;
  font-weight: 500;
  color:#fff;
  text-shadow: 0px 2px 3px #000000;
}
и

Код
#sb-nav-close{
margin:2px 5px 2px 2px;
    cursor:pointer;
    float:right;
    width: 16px;
    height:16px;
background-image:url(close.png);}

2. как заменить стандартные кнопки в Shadowbox?
помогли эти ресурсы
http://www.hectorarandawebworx.com/main/customize-shadowbox-buttons
http://shadowbox.1309102.n2.nabble.com/A-simple-Shadowbox-JS-3-0-3-3-0-1-theme-caption-enabled-for-3-0-3-td5880629.html

собственно скачал по второй ссылке готовую тему для Shadowbox и заменить стандартные картинки кнопок на цветные в папке
components/com_datsogallery/libraries/shadowbox/

3. как сделать, чтобы при клике на картинку открывалась следующая?
собственно ссылка на соседнюю тему, там все подробно написано.
http://joomlaforum.ru/index.php/topic,164339.msg887648.html#msg887648


теперь хоть не так скучно выглядит слайд шоу  8)

P.S. не нашел как прикрепить файлы к посту ((
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Re: Тюнинг Shadowbox 3.0.3 для Datso Gallery 1.20
« Ответ #1 : 10.04.2013, 14:04:41 »
Небольшая доработка модуля "максимальный v1.23"

Меня не устраивало то что при нажатии на изображение, ссылка перенаправляла на подробную инфу о данном снимке!
А мне наоборот, нужно было что бы ссылка вела в саму категорию, так вот для того что бы это исправить надо в файле default.php (находится тут - modules/mod_datsogallery_ultimate/tmpl), изменить строчку в конце данного файла (у меня она 63)

Код
$link = '<a href="'.JRoute::_('index.php?option=com_datsogallery&amp;view=image&amp;catid='.$item->catid.'&amp;id='.$item->id.$itemid).'">';

на

Код
$link = '<a href="'.JRoute::_('index.php?option=com_datsogallery&amp;view=image&amp;catid='.$item->catid.$itemid).'">';

И будет вам радость )))


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

[download] Datso Gallery (Download DatsoGallery free all version)

Автор beliyadm

Ответов: 354
Просмотров: 181275
Последний ответ 10.08.2018, 14:43:21
от pH43
Новая версия слайд шоу Datso Gallery Slide Show 3.0.0 для Joomla! 3

Автор strwrk

Ответов: 1
Просмотров: 3735
Последний ответ 26.08.2017, 16:38:28
от strwrk
В слайд шоу Datso Gallery Slide Show 3.0.0 не показываются картинки?

Автор strwrk

Ответов: 0
Просмотров: 3541
Последний ответ 26.08.2017, 10:57:43
от strwrk
[Решено] Не работает голосовалка Datso

Автор metiss

Ответов: 8
Просмотров: 5388
Последний ответ 18.12.2016, 17:39:30
от dmitry_stas
Datso 1.8.4 - глюк с кодировкой

Автор Archie

Ответов: 6
Просмотров: 4300
Последний ответ 15.02.2015, 02:21:23
от meatrich