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

DVG

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Переношу готовый сайт на хостинг.

Скопировал все файлы, экспортировал-импортировал базу.

Конфиги поправил.

"$live_site" прописан с "http://" вначале и "/" в конце.

Не полностью отображается(точнее, совсем не отображается) шаблон. Хотя текст статей, изображения в статьях - видны.

В свойстве картинки(сама картинка не видна) "главного" лого замечен такой путь:



вместо



На localhost, естессно, всё отображается нормально.

В остальном сайт на хостинге работает.  


Подскажите, где-что надо поправить?
« Последнее редактирование: 10.08.2009, 10:45:42 от DVG »
*

DVG

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
В догонку: сейчас Joomla обновлена до 1.5.14, а изначально была версия 1.5.9.

И вот когда ещё было 1.5.9 я пердварительно переносил этот-же сайт на этот-же хостинг. Всё отображалось корректно.
Кроме обновления Joomla(на localhost) был заменён форум с FireBoard на Kunena да и обновлена версия Phoca Gallery. Вроде больше ничего.
Шаблон не менялся.
*

DVG

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
*

DVG

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Предложили очистить поле $live_site - очистка не помогла.


Народ ещё вот что говорит:

Цитировать
Возможно, из-за других настроек боевого сервера там не подавляется вывод ошибок и/или нотайсов. Так, в данном случае у вас вываливается нотайс:

Цитировать
Notice: Undefined variable "template_style" in "/home/ordpaint/site.ru/templates/gk_viyo_brown/index.php" on line 96


Покажите код шаблона а районе строки #96 (выше и ниже), а также, все места в шаблоне, где есть упоминание переменной $template_style
Я ответил:

Цитировать
<!-- main wrapper -->
<div id="wrapper_main" class="clearfix">
<div class="wrapper_centered clearfix">
<!-- top -->
<div id="wrapper_top">
<a id="logo<?php echo ($logo_as_image)? '' : '_styled'; ?>" href="./">
<?php if ($logo_as_image) : ?>
<img src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template?>/images/style<?php echo $template_style; ?>/logo.png" alt="Logo" />
<?php endif; ?>
</a>

<?php if ($this->countModules ('search')) : ?>
<div id="wrapper_search">
<jdoc:include type="modules" name="search" style="raw" />
</div>
<?php endif; ?>
</div>

<?php if ($this->countModules ('banner1')) : ?>
<jdoc:include type="modules" name="banner1" style="raw" />
<?php endif; ?>
<!-- header -->



96я выделена.

Больше в index.php "$template_style" не встречается.

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

Как вывести путь до шаблона с помощью API Joomla?

Автор elche

Ответов: 13
Просмотров: 15811
Последний ответ 11.09.2018, 23:48:50
от DK-Scorp
Стили шаблона

Автор karkan25

Ответов: 12
Просмотров: 4539
Последний ответ 21.05.2017, 16:40:32
от karkan25
Проблема с изменением логотипа штатного шаблона rhuk_milkyway Joomla_1.5

Автор Porohok

Ответов: 6
Просмотров: 4870
Последний ответ 22.03.2017, 10:34:23
от Porohok
Ошибка Notice: Undefined variable

Автор МарияЛ

Ответов: 11
Просмотров: 5785
Последний ответ 25.10.2016, 21:11:23
от Septdir
Настройка неадаптивного шаблона

Автор Zegeberg

Ответов: 4
Просмотров: 4590
Последний ответ 21.06.2016, 00:21:06
от Zegeberg