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

robotwerder

  • Захожу иногда
  • 248
  • 6 / 1
неправильный хтмль и PHP код не даёт мне подключить библиотечки для меню аккардеон и выпадающее меню не работает :(

в результате неправильного вывода

Код: html4strict
<?php

defined('_JEXEC') or die('Restricted access');
$showRightColumn = $this->countModules('user1 or user2 or right or top');
?>

<?php defined( "_VALID_MOS" ) or die( "Direct Access to this location is not allowed." );$iso = split( '=', _ISO );echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/b2/js/ddaccordion.js"></script>
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/b2/js/jquery-1.2.6.pack.js"></script>
<head>

получаю такой исх код
Код: html4strict
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<?xml version="1.0" encoding="utf-8"?><link href="http://test1.ru/templates/b2/css/template_css.css" rel="stylesheet" type="text/css" />
<link href="/css/template_css.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 6]>
<link href="/templates/b2/css/ieonly.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if IE 7]>
<link href="/templates/b2/css/ie7only.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>


тогда как в правильном шаблоне выводятся и титл и мета тэги и всё всё всё.

Код: html4strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru">

<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="robots" content="index, follow" />
  <meta name="keywords" content="joomla, CMS Joomla, движок сайта" />
  <meta name="title" content="О компании" />
  <meta name="author" content="Administrator" />
  <meta name="description" content="Joomla! - система управления содержимым - основа динамического портала" />

  <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />
  <title>О компании</title>
  <link href="/templates/ja_purity/favicon.ico" rel="shortcut icon" type="image/x-icon" />
  <link rel="stylesheet" href="http://test1.ru/modules/mod_f2caccordion/tmpl/css/accordion.css" type="text/css" />
  <script type="text/javascript" src="/media/system/js/mootools.js"></script>
  <script type="text/javascript" src="/media/system/js/caption.js"></script>
  <script type="text/javascript" src="http://test1.ru/modules/mod_f2caccordion/tmpl/js/jquery-1.2.6.pack.js"></script>

  <script type="text/javascript" src="http://test1.ru/modules/mod_f2caccordion/tmpl/js/ddaccordion.js"></script>


<link rel="stylesheet" href="http://test1.ru/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="http://test1.ru/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="http://test1.ru/templates/ja_purity/css/template.css" type="text/css" />

<script language="javascript" type="text/javascript" src="http://test1.ru/templates/ja_purity/js/ja.script.js"></script>


<link rel="stylesheet" href="http://test1.ru/templates/ja_purity/css/menu.css" type="text/css" />


<link rel="stylesheet" href="http://test1.ru/templates/ja_purity/styles/background/lighter/style.css" type="text/css" />

<link rel="stylesheet" href="http://test1.ru/templates/ja_purity/styles/elements/black/style.css" type="text/css" />

<!--[if gte IE 7.0]>
<style type="text/css">
.clearfix {display: inline-block;}
</style>
<![endif]-->

<style type="text/css">
#ja-header,#ja-mainnav,#ja-container,#ja-botsl,#ja-footer {width: 97%;margin: 0 auto;}
#ja-wrapper {min-width: 100%;}
</style>
</head>


тока когда вручную прописываю путь к библиотечкам мутулс и жквери меню начинает робить.

как правильно организовать верхушку своего index.php чтобы всё было впорядке с выводом мета , заголовка и прочей важной снеди?!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
А почему бы не посмотреть как устроен стандартный шаблон? Почему бы не почитать форум?
*

robotwerder

  • Захожу иногда
  • 248
  • 6 / 1
гуглил искал менял копипастил с др шаблонов.. пока результата нет.
Дело в том что не шарю совсем в PHP коде и не могу понять в чем причина того что у меня не выводится нормальный код на странице. и главное что за код в шаблоне отвечает за это:(
Укажите хотя бы возможную причину?! дальше сам доковыряю..
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
<jdoc:include type="head" />
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор moov

Ответов: 7
Просмотров: 7752
Последний ответ 17.12.2018, 14:08:12
от arma
Где формируется head помимо head.php и index.php шаблона

Автор Aiden

Ответов: 2
Просмотров: 2910
Последний ответ 07.03.2016, 09:31:14
от Aiden
Поменять цвет блоков в шаблоне

Автор nuon

Ответов: 7
Просмотров: 4709
Последний ответ 10.01.2016, 23:11:34
от nuon
Ребят - В шаблоне Default

Автор Djaga

Ответов: 4
Просмотров: 2176
Последний ответ 10.12.2015, 08:01:47
от Djaga
Замена фона в шаблоне Joomla

Автор Jons$

Ответов: 7
Просмотров: 11789
Последний ответ 12.10.2015, 15:49:09
от darkghost