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

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Стиль шаблона
« : 12.11.2009, 05:18:33 »
Создал недавно шаблон. Инсталируется, устанавливается без ошибок. Но страница выглядит так, как если бы файла template_css.css вообще не было. Хотя он прописан в XML. И плюс еще такая вещь: я беру, меняю png-файл предпросмотра на другой, перепаковываю папку с шаблоном, заново инсталлирую - а в template manager при наведении курсора видна старая картинка, как будто я ее не менял.
Вот содержание css:
Код
#razd1 {
margin-left:10px;
margin-top:10px;
width:1000px;
height:660px;
padding:0px;
text-align:left;
}

#razd2 {
margin-left:10px;
margin-top:0px;
width:310px;
height:100px;
padding:0px;
text-align:center;
}

#razd3 {
margin-left:320px;
margin-top:-100px;
width:700px;
height:100px;
padding:0px;
text-align:right;
}

#blok1 {
margin-left:610px;
margin-top:70px;
width:400px;
height:250px;
padding:0px;
text-align:right;
}

#blok2 {
margin-left:310px;
margin-top:0px;
width:300px;
height:250px;
padding:0px;
text-align:right;
}

#blok3 {
margin-left:610px;
margin-top:-250px;
width:400px;
height:250px;
padding:0px;
text-align:right;
}

#blok4 {
margin-left:310px;
margin-top:0px;
width:700px;
height:100px;
padding:0px;
text-align:right;
}

Вот index.php:
Код
<html>
<head>
<jdoc:include type="head" />
<link href="css/template_css.css"
rel="stylesheet"
type="text/css" />
</head>
<body>
<div id="razd1">
razd1
<jdoc:include type="modules" name="user1" style="xhtml" />
<div id="blok1">
blok1
<jdoc:include type="modules" name="user2" style="xhtml" />
</div>
<div id="blok2">
blok2
<jdoc:include type="modules" name="user3" style="xhtml" />
</div>
<div id="blok3">
blok3
<jdoc:include type="modules" name="user4" style="xhtml" />
</div>
<div id="blok4">
blok4
<jdoc:include type="modules" name="user5" style="xhtml" />
</div>
</div>

<div id="razd2">
razd2
</div>
<div id="razd3">
razd3
</div>
</body>
</html>

В php пробовал и по-другому ссылаться на таблицу стилей:
Код
<link rel="stylesheet"
href="templates/{TEMPLATE}/css/template.css" type="text/css" />
тоже не помогает. В чем дело?
*

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Стиль шаблона
« Ответ #1 : 12.11.2009, 07:11:12 »
Попробовал еще так:
Код
<link rel=”stylesheet” href=”/templates/<?php echo $this->template ?>/css/template_css.css” />
никакого толка.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Стиль шаблона
« Ответ #2 : 12.11.2009, 08:07:16 »
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/папка_шаблона/css/template_css.css" type="text/css" />

и вообще, у тебя в постах разные названия файлов:
то template_css.css, то template.css
ужо определись :)
*

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Стиль шаблона
« Ответ #3 : 12.11.2009, 08:50:48 »
Цитировать
и вообще, у тебя в постах разные названия файлов:
то template_css.css, то template.css
ужо определись Azn
Под template.css я имел в виду template_css.css. Естественно что я все эти имена заменил и привел в порядок. Работать-то так и не работает.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Стиль шаблона
« Ответ #4 : 12.11.2009, 08:58:55 »
выше приведённая строка работает 100%.
у тебя при инсталяции таблица стилей ТОЧНО перенеслась в папку шаблона/css/
?
*

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Стиль шаблона
« Ответ #5 : 12.11.2009, 09:09:10 »
Абсолютно точно.
*

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Стиль шаблона
« Ответ #6 : 12.11.2009, 09:19:56 »
Вот еще XML на всякий случай:
Цитировать
<?xml version="1.0" encoding="iso-8859-1"?>
<install version="1.5.0" type="template">
   <name>newtemplate2</name>
   <creationDate>7 Nov 09</creationDate>
   <author>new_author</author>
   <copyright>new_author</copyright>
   <authorEmail>new_author@mail.ru</authorEmail>
   <authorUrl>www.new_author.com</authorUrl>
   <version>0.1</version>
   <description>new_author's template</description>
   <files>
      <filename>index.php</filename>
      <filename>TemplateDetails.xml</filename>
      <filename>template_thumbnail.png</filename>
      <filename>css/template_css.css</filename>
   </files>
</install>

Кстати, если абсолютную ссылку указать, то работает.
*

user32

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Стиль шаблона
« Ответ #7 : 12.11.2009, 09:23:52 »
Работает. Оказывается, слэши в обратную сторону надо:
Код
<link rel="stylesheet" href="\templates\<?php echo $this->template ?>\css\template_css.css" type="text/css" />
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Стиль шаблона
« Ответ #8 : 12.11.2009, 09:28:59 »
эээ
вообще-то у всех шаблонов нормальные пути канают.
посмотри в дефолтных шаблонах - там нет обратных слэшей
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор elche

Ответов: 13
Просмотров: 15810
Последний ответ 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
Настройка неадаптивного шаблона

Автор Zegeberg

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

Автор gdmitry

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