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

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Доброго всем дня уважаемые! Есть такая тема - в наличии есть шаблон, изначально не рассчитаный на установку на Joomla ( 1.5.14)
Я его на Joomla натянул, все установилось, главная страница отображается, все окей. Пока позиции модулей и контент в шаблоне не прописывал, это всегда можно успеть. Так вот, в этом шаблоне три файла php, каждый имеет свой подключаемый файл со стилями.
В templateDetails.xml все файлы естественно указал, они установились как положено. Но! если на главной странице ( файл index.php) указать ссылку на второстепенную страницу ( файл blog.php) то она ни как не отображаетса ... 404 не найдена страница
с остальными тоже самое, путь задавал и прямой <a href="blog.php" и такой <a href="http://natali.rbwest.ru/blog.php> ни какой разницы
Подскажите кто знает, в чем проблема?
И еще один момент - изначально в шаблоне файлы были не php a HTML, и для вывода картинок на странице был прописан путь вот таким макаром:
a href="index.html" title=""><img src="images/img-featured.jpg" alt="featured" width="350px" height="250px"/></a>
после того как файлы переименовал в php картинки не отображаются. Как правильно прописать, подскажите пожалста))
Спасибо!
« Последнее редактирование: 25.11.2009, 20:14:56 от Шмайсер »
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
пробовал прописать ссылку так :
<a href="<?php echo $this->baseurl ?>/templates/mytemp/style.php" />
выводит белую страничку с надписью
Restricted access
Ну это понятно, запрет прямого доступа прописан
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Вопрос с картинками решил, помогла одна хорошая девачка
чтобы прописать путь к картинки делаем так <img src="<?php echo "templates/$this->template/images/"; ?>file_name.gif"
а вот как быть с ссылками? Вопрос актуален
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

evlebedev

  • Захожу иногда
  • 56
  • 3 / 0
Сделать три шаблона и закрепить их за разными пунктами меню.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Да это понятно, а если страниц 25? Не думаю что это выход..
И кстати меню в шаблоне родное, не хочу туда джумловское ставить. Вообще странно, давно задавал это вопрос, облазил все поисковики - нет ответа! Неужели нет решения?
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Да это понятно, а если страниц 25? Не думаю что это выход..
И кстати меню в шаблоне родное, не хочу туда джумловское ставить. Вообще странно, давно задавал это вопрос, облазил все поисковики - нет ответа! Неужели нет решения?
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

evlebedev

  • Захожу иногда
  • 56
  • 3 / 0
25 пунктов в меню?
Разделов-то всего три, как я понял?
Ну и закрепить за каждым разделом по шаблону.
А меню можно создать, а посетителям не показывать. Например не публиковать модуль меню.
Нужные же ссылки прописать в алиасах или таблице беклинкс при включеном плангине беклинкс.
*

evlebedev

  • Захожу иногда
  • 56
  • 3 / 0
Тока, наверно /blog.php работать вряд ли будет - защита.
Придется ограничится ссылкой /blog
*

evlebedev

  • Захожу иногда
  • 56
  • 3 / 0
Можно, кстати, и 25 страниц/пунктов меню прикрепить к шаблону.
С помощью кантрола :)
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Да дело не в том, сколько страниц.. в шаблоне их 5 ( 5 файлов) и я хотел бы на каждой странице разместить конкретный модуль, а на одной из страниц - контент.. Неужели в джумловском шаблоне допускается только 1 файл страницы?
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как создать новый блок в шаблоне?

Автор moov

Ответов: 7
Просмотров: 7752
Последний ответ 17.12.2018, 14:08:12
от arma
Как сделать логотип в шапке ссылкой

Автор hmaoITN

Ответов: 100
Просмотров: 70248
Последний ответ 08.01.2018, 12:13:04
от galll72
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 11363
Последний ответ 17.08.2017, 17:24:12
от Intrande
Как сделать резиновой центральную чать сайта?

Автор genkey

Ответов: 8
Просмотров: 5441
Последний ответ 28.05.2016, 10:45:37
от vipiusss
Поменять цвет блоков в шаблоне

Автор nuon

Ответов: 7
Просмотров: 4709
Последний ответ 10.01.2016, 23:11:34
от nuon