Новости 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 Ответов
  • 2652 Просмотров
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
При переделывании в файле index.php возникает ошибка
Код
Fatal error: Call to a member function get() on a non-object in P:\home\joomla\www\templates\bizrule\index.php on line 110

Это происходит в строках (почти в конце)
Код
<tr align="left" valign="top">
<td colspan="3" style="padding: 5px 0;">
<div class="main">
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
</div>
</td>
</tr>

В чем может быть проблема?

[вложение удалено Администратором]
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Переделывание шаблона bizrule для 1.5.9
« Ответ #1 : 21.06.2009, 10:16:20 »
Не знаю что произошло, но он начал что-то показывать. Единственное, он не выводит никакие изображения.
Для начала помогите разобраться с показом верхнего меню (элемент баннера)
Код
<div id="logo">
<div  id="top_bar">
<?php if($this->countModules('banner')) : ?>
<jdoc:include type="modules" name="banner" style="table"/>
<?php endif; ?>
</div></div>

Всё сделал по вашей инструкции. Но при показе на этом месте он пишет banner[table outline]
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Переделывание шаблона bizrule для 1.5.9
« Ответ #2 : 21.06.2009, 12:36:55 »
Прокрутил до конца просмотр шаблона сайта и увидел ошибку

Код
Warning: include_once(/templates/bizrule/footer.inc) [function.include-once]: failed to open stream: No such file or directory in P:\home\joomla\www\templates\bizrule\index.php on line 145

Прекрасно знаю, что он просто тупо не находит файл footer.inc. Когда сам сайт создаю,  то это исправляю в считанные минуты. А здесь я не знаю как можно исправить следующий текст под Joomla 1.5.9

Код
<?php include_once ($mosConfig_absolute_path."/templates/" . $mainframe->getTemplate() . "/footer.inc"); ?>

А именно, что нужно писать вместо $mosConfig_absolute_path? Пробовал $this->Config_absolute_path, но ошибка осталась прежней.
*

MuraDweb

  • Захожу иногда
  • 267
  • 124 / 1
Re: Переделывание шаблона bizrule для 1.5.9
« Ответ #3 : 21.06.2009, 13:28:05 »
А, тупо посмотреть что, да как в стандартном шабе Joomla 1.5.x не судьба ? :)

Код
<?php include_once ($this->baseurl . '/templates/' . $this->template . '/footer.inc'); ?>
Яндекс.Деньги: 41001423568435
Webmoney: R 377548789269 | Z 421465848009 | E 126339514076 | U 413960261029
-
А, Вы читали ? Правила форума | FAQ J! 1.5 | FAQ J! 1.0
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Переделывание шаблона bizrule для 1.5.9
« Ответ #4 : 21.06.2009, 13:55:53 »
Конечно искал, но такую строку не смог вообще найти в других шаблонах.
Код
include_once ($this->baseurl.'/templates/'.$this->template.'/footer.inc');

Ошибка таже продолжается. Ничего не изменилось
*

MuraDweb

  • Захожу иногда
  • 267
  • 124 / 1
Re: Переделывание шаблона bizrule для 1.5.9
« Ответ #5 : 21.06.2009, 14:04:40 »
Плохо искали :)

А, сам файл хоть на месте и лежит именно в корне папки шаблона?
Яндекс.Деньги: 41001423568435
Webmoney: R 377548789269 | Z 421465848009 | E 126339514076 | U 413960261029
-
А, Вы читали ? Правила форума | FAQ J! 1.5 | FAQ J! 1.0
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Re: Переделывание шаблона bizrule для 1.5.9
« Ответ #6 : 21.06.2009, 14:10:54 »
Да, сам файл есть и лежит в корне, где и index.php
Заметил сейчаст такую вещь:
Заменил выше описанную строку на
Код
<jdoc:include type="modules" name="footer" />
Ошибки после этого нет, появилась нижняя картинка. Но вместо остальных пишется
Код
banner[table outline]

Идем тогда на код
Код
<?php if($this->countModules('banner')) : ?>
<jdoc:include type="modules" name="banner" style="table"/>
<?php endif; ?>

Наверное здесь что-то не так
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Переделывание шаблона bizrule для 1.5.9
« Ответ #7 : 21.06.2009, 15:21:01 »
Написал include_once ($this->baseurl.'templates/'.$this->template.'/footer.inc');
Т.е. без лишнего переднего слеша и перешел наконец-то на footer.inc

Теперь проблема с ним.
У меня русская версия и он должен выводить
"Перепечатка информации возможна только при наличии
согласия администратора и активной ссылки на источник!"

А он мне выводит в конце страницы просмотра шаблона то же самое, но по английски. Непорядок, ну я могу забить на это.
Мне главное разобраться, почему на странице не отображаются картинки?!
Кто-нибудь может мне помочь, а? Или здесь форум вообще не поддерживается
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Re: Переделывание шаблона bizrule для 1.5.9
« Ответ #8 : 21.06.2009, 16:25:39 »
Выяснил, что не хватает для отображения картинок.
Нужно загрузить файл template_css.css, splitcssmenu.php и templateDetails.xml

C двумя проще некуда. Но как загрузить xml файл для этой системы, тем более что с xml я никогда не работал. Помогите пожалуйста.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор elche

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

Автор karkan25

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

Автор Porohok

Ответов: 6
Просмотров: 4866
Последний ответ 22.03.2017, 10:34:23
от Porohok
Настройка неадаптивного шаблона

Автор Zegeberg

Ответов: 4
Просмотров: 4588
Последний ответ 21.06.2016, 00:21:06
от Zegeberg
Редактирование шаблона

Автор gdmitry

Ответов: 1
Просмотров: 4417
Последний ответ 04.06.2016, 20:25:32
от Taatshi