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

Sven

  • Захожу иногда
  • 107
  • 6 / 5
А вы сами себя неужели профи не считаете?) Ложная скромность тут ни к чему)

Вот зря вы спорите на счет Mobile first. В Википедию зачем-то полезли читать. В этой Википедии пишут неизвестно кто. А на сайте bootstrap пишут точно профи, надеюсь хотя бы на счет этого у вас нет сомнений?) И пишут они, что в третьей версии начали использовать принцип mobile first, когда изначально все стили прописаны под мобильные экраны, а остальные добавляются по мере увеличения ширины. Теперь вопрос на засыпку: Как такое можно сделать? А сделать можно только если в точках перехода использовать именно @media (min-width: ***px), и никак это не получится сделать если использовать @media (max-width: ***px).

Если же вы по прежнему не верите мне, не верите разработчикам bootstrap 3.. ну проверьте на практике тогда и посмотрите что получится. Пропишите сначала все стили и сетку для широких экранов, а потом двигайтесь в сторону уменьшения - вам в любом случае придется прописывать сетку под мобильные экраны. Это называется Mobile last. А при Mobile first вам не нужно прописывать сетку под мобильные экраны - вот в этом вся СУТЬ.

Еще раз ссылку вам скину http://getbootstrap.com/css/ читайте второй абзац сверху, он так и называется Mobile first
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я вообще не спорю. у меня на это нет ни времени, ни желания. я вам попытался объяснить - вы не слышите. ну и ладненько :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
dmitry_stas, вот только из-за уважения к вам, я не поленился и нашел видео. Уделите хотя бы пару минут, посмотрите начиная с 18:47 минуты.


После просмотра надеюсь получить от вас + в карму, за изменение вашей как вы говорите парадигмы) Получить плюс от такого монстра как вы дорогого стоит!)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
оставь надежду всяк сюда входящий :) посмотрел. не услышал и не увидел ничего, что противоречит тому, что я говорю.

P.S. если вы действительно не поймете, в чем разница, а не просто упрямитесь, то можете процитировать тот кусок из видео, который вы считаете нужным. а я уже отталкиваясь от него еще раз попробую объяснить, что именно это значит
« Последнее редактирование: 27.05.2015, 16:43:30 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Спасибо за предоставленную возможность. Злоупотреблять не буду, спрошу лишь раз)

Вначале автор рассказывает про респонсив на примере @media (max-width: ***px): "Вот вы сначала указываете размер для мобильных экранов, потом для средних, и затем для широких..."
Потом на 18:47 минуте у него спрашивают, а что же такое mobile first? Он говорит: "Это значит что изначально вы верстаете для мобильных. Здесь идём в обратном порядке и вам не нужно указывать размер мобильных экранов, запись для мобильных экранов будет пуста." И показывает пример, где вместо @media (max-width: ***px) использует @media (min-width: ***px) и там видно что запись действительно пуста.

Вопрос: Почему нельзя применить принцип mobile first используя max-width?
Если вы считаете, что можно, то приведите пожалуйста пример CSS где в точках перехода будет указана max-width для широких и средних экранов, а запись max-width для мобильных будет пустой, и при этом на мобильных экранах все блоки будут выстраиваться в одну колонку, как у автора видео.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
тему закрыл как неактуальную для ЖШ.
споры прекращены.
дефолтный ЖШ уже респонсив
вопрос к шаблону Joomla а не к вопросу ЖШ.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон Bootstrap5 для JoomShopping5

Автор nevigen

Ответов: 14
Просмотров: 3945
Последний ответ 02.10.2024, 19:57:32
от nichik
Шаблон фильтрации товаров

Автор Prevergenec

Ответов: 1
Просмотров: 2345
Последний ответ 23.01.2023, 18:13:43
от kit2m2
Плагин - Наложение маски на изображения объектов JoomShopping [Скачать]

Автор kit2m2

Ответов: 5
Просмотров: 4317
Последний ответ 20.09.2022, 11:51:02
от kit2m2
Разные сообщения после оформления заказа JoomShopping

Автор MadKitty

Ответов: 1
Просмотров: 1065
Последний ответ 16.04.2019, 10:14:48
от MadKitty
Скрыть фильтр товаров под спойлер для мобильных

Автор yurykom

Ответов: 26
Просмотров: 2389
Последний ответ 21.03.2019, 16:52:12
от Mushu-svbk