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

Наташа

  • Захожу иногда
  • 170
  • 0 / 1
Уважаемые форумчане, доброго вам времени суток! !!!???!!! Как настроить отображение содержимого в 1 или2 колонки в зависимости от разрешения экрана пользователя и просто постояное выведение текста в 2 колонки. Как задать положение рисунка не в конце текста, а в левом верхнем углу с обтеканием? :-*
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
какие у вас вопросы всё не простые :)
смотря какое отображение.
если вводный текст в БЛОГЕ категории, то-легко.
создаётся пункт меню типа "блог категории" и в его настройках указывается количество столбцов для отображения.

но вот если вам надо разбивать на 2 колонки статьи при полном просмотре, тогда всё сложно (можно таблицы вставлять в материал, конечно, но это изврат получится, при большом кол-ве материалов).

тогда нужен программист, который перепишет стандартный вывод статей в две колонки
*

Наташа

  • Захожу иногда
  • 170
  • 0 / 1
Цитировать
смотря какое отображение.
если вводный текст в БЛОГЕ категории, то-легко.
создаётся пункт меню типа "блог категории" и в его настройках указывается количество столбцов для отображения.
Я только начинаю, поясните, пожалуйста, где и как это настраивается? Такое возможно только для текста или подобно можно управлять отображением галерей и картинок?

Цитировать
но вот если вам надо разбивать на 2 колонки статьи при полном просмотре, тогда всё сложно (можно таблицы вставлять в материал, конечно, но это изврат получится, при большом кол-ве материалов).
тогда нужен программист, который перепишет стандартный вывод статей в две колонки
А можно проще: через див с(тогда автоматически подравняет отображение по размеру окна?)?  :-*
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
тяжко :) но-попробую объяснить.

блог-это сводная таблица из вводных/полных текстов статей.
т.е. статьи из определённой категории/раздела выводятся на одной странице(или нескольких). а с них уже идут ссылки на полный текст статьи.

если же вам надо именно в статье разбиение, то тогда либо таблица, либо-div.
с таблицей, имхо, работать проще, т.к. она не начнёт прыгать при сужении окна браузера, а растягиваться на всю ширину будет, если указать в настройках таблицы ширину в 100%.

по поводу картинок.
если воспользоваться ПЛАГИНОМ для вывода изображений (их много всяких) то можно соорудить что-то похожее на 2 столбца с изображениями.
плагин обычно вставляет изображения в то место статьи, в которое прописана спец. команда.
соответственно, если на странице создать таблицу из двух ячеек и в каждой вызвать плагин вывода изображений, то получим галерею, разбитую на 2 столбца.
на практике это будет выглядеть примерно так:

стобец 1                                        сатолбец 2

тут какой-то текст                          и тут какой-то текст
{slimbox img1, img2, img3}                {slimbox img4, img5}
- вызываем показ 3х картинок          - а тут вывели 2 картинки
плагином

есть плагины, которые выводят картинки сразу из целой папки
тогда создаёте 2 папки с картинками и пишете в первом столбце
{slimbox papka1}  а во втором {slimbox papka2}
*

effrit

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

Наташа

  • Захожу иногда
  • 170
  • 0 / 1
Большое спасибо, а можно где-то посмотреть образец настройки?  :-*Извините за формулировки – это мой первый сайт…
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
нету образцов.
качаете плагин вывода изображений, ставите и - вперёд :)

уж таблицу то поди сумеете вставить в статью?
а дальше всё просто.

пс
прочитал в другой ветке ваш тезис о том, что "зачем изучать систему для одного сайта".
с такми тезисами вы далеко не уйдёте :)
чудес не бывает в ит-сфере. за бесплатность вы платите временем, но взамен получаете опыт и удовлетворение :)
так что решите для себя, что вам дороже-деньги или время+опыт :)
*

Наташа

  • Захожу иногда
  • 170
  • 0 / 1
Прошу прощения - минутная слабость!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
хых.
я то-прощу, а вот Джумла-нет! :)
так что давайте как-нибудь так... вперёд и с песней, тем более, что вам - помогают. :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать отображение третьего и далее уровней меню?

Автор Hloja_Blimm

Ответов: 12
Просмотров: 2151
Последний ответ 24.11.2017, 15:12:04
от Hloja_Blimm
Вывод отображения последних новостей в 2 колонки

Автор Mark54

Ответов: 2
Просмотров: 1470
Последний ответ 17.01.2017, 13:37:32
от beliyadm
Зеркальное отображение сайта.

Автор Marsel

Ответов: 12
Просмотров: 12532
Последний ответ 23.01.2016, 23:52:26
от Ilhom666
Отображение картинок

Автор Kristina23

Ответов: 1
Просмотров: 1253
Последний ответ 22.05.2015, 13:58:39
от Usman48
Настроить плагин Seo Simple

Автор espey

Ответов: 2
Просмотров: 1673
Последний ответ 11.10.2014, 00:59:45
от espey