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

katerina

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Внезапно на сайте появилась такая вот ошибка :(


Подскажите как это исправить, откуда она взялась? Т.к.сайт долгое время никто не трогал. Хостеры говорят, что ни в чем не виноваты.


Вылезла слева после всех меню http://kandadzia.ru/
Текстовой вид ошибки:
Warning: include(templates.php) [function.include]: failed to open stream: No such file or directory in /home/c/cl8600/joomla/public_html/templates/123wd-j15-1/index.php on line 60

Warning: include() [function.include]: Failed opening 'templates.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/c/cl8600/joomla/public_html/templates/123wd-j15-1/index.php on line 60
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
а что у вас в index.php на 60 строчке, можете привести код?
кстати у вас там не только это..на других страницах тоже есть ошибки
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Это не ошибка а предупреждение.
1) Кто-то включил отображение предупреждений
2) Кто-то удалил тот файл (ну или взломали неудачно)
*

katerina

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
а что у вас в index.php на 60 строчке, можете привести код?
кстати у вас там не только это..на других страницах тоже есть ошибки

Вот весь код с index.php:
Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
JPlugin::loadLanguage( 'tpl_SG1' );
?>
<!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="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />

<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

<!--[if lte IE 6]>
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/ie7.css" type="text/css" />
<![endif]-->

<link rel="shortcut icon" href="<?php echo $this->baseurl ?>/templates/123wd-j15-1/images/favicon.ico"/>
</head>

<body class="body_bg">
<div id="page_bg">
<div id="page_bg1">
<!--header start -->
<div id="header">
<div id="logo">
<table cellspacing="0" cellpadding="0" style="width: 900px; height: 60px; text-align: center; margin: 0 auto;">
<tr><td style="text-align: center; vertical-align: middle;">
<a href="index.php"><?php echo $mainframe->getCfg('sitename') ;?></a>
</td></tr>
</table>
</div>
</div>
<!--header end -->

<!--topmenu start-->
<div class="pill_m">
<div id="pillmenu">
<table cellspacing="0" cellpadding="0" style="margin: 0 auto;">
<tr><td>
<jdoc:include type="modules" name="user3" />
</td></tr>
</table>
</div>
</div>

<!--topmenu end-->

<!--center start-->
<div class="center">
<div id="wrapper">
<div id="content">
<!--pathway start-->
<div class="cpathway">
<jdoc:include type="module" name="breadcrumbs" />
</div>
<!--pathway end-->
<?php if($this->countModules('left') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="leftcolumn" style="margin:25px 0 0 0;">
<jdoc:include type="modules" name="left" style="rounded" />
<?php $wd123 = 'banner'; include "templates.php"; ?>
</div>
<?php endif; ?>

<?php if($this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn">
<?php else: ?>
<div id="maincolumn_full">
<?php endif; ?>
<div class="nopad">
<jdoc:include type="message" />
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
</div>
</div>

<?php if($this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="rightcolumn" style="float:right;">
<jdoc:include type="modules" name="right" style="rounded" />
</div>
<?php endif; ?>
<div class="clr"></div>
</div>
</div>
</div>
<!--center end-->


</div>
</div>
<!--footer start-->
<div id="footer">
<div id="f123">
<div>







<div style="text-align: center; padding: 24px 0 0;">  &copy; Copyright 2008 - 2011.
<a href="http://www.kandadzia.ru/" target="_self" class="footer123" title="Кандадзя">kandadzia.ru</a>
  </div>






</div>
</div>
</div>
<!--footer end-->
<jdoc:include type="modules" name="debug" />

<center>
<a href='http://torg.mail.ru/?prtnr=1&pid=4010&click=1'><img height='31' border='0' width='88' alt='Товары@Mail.ru' src='http://upload.torg.mail.ru/prtnr/?pid=4010'/></a>
<a href="http://top100.rambler.ru/home?id=1993635" target="_blank"><img src="http://top100-images.rambler.ru/top100/w0.gif" alt="Rambler's Top100" width="88" height="31" border="0" /></a>
<!-- end of Top100 logo -->
<!-- begin of Top100 code -->
<script id="top100Counter" type="text/javascript" src="http://counter.rambler.ru/top100.jcn?1993635"></script><noscript><img src="http://counter.rambler.ru/top100.cnt?1993635" alt="" width="1" height="1" border="0"/></noscript>
<!-- end of Top100 code -->

<!-- Yandex.Metrika -->
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
<script type="text/javascript">
try { var yaCounter733958 = new Ya.Metrika(733958); } catch(e){}
</script>
<noscript><img src="//mc.yandex.ru/watch/733958" style="position:absolute" alt="" /></noscript>
<!-- /Yandex.Metrika -->
<!--Rating@Mail.ru counter-->
<script language="javascript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer);js=10;//--></script>
<script language="javascript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled();js=11;//--></script>
<script language="javascript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height;
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth);js=12;//--></script>
<script language="javascript1.3" type="text/javascript"><!--
js=13;//--></script><script language="javascript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=1787909" target="_top">'+
'<img src="http://d8.c4.bb.a1.top.mail.ru/counter?id=1787909;t=109;js='+js+
a+';rand='+Math.random()+'" alt="Рейтинг@Mail.ru" border="0" '+
'height="18" width="88"><\/a>');if(11<js)d.write('<'+'!-- ');//--></script>
<noscript><a target="_top" href="http://top.mail.ru/jump?from=1787909">
<img src="http://d8.c4.bb.a1.top.mail.ru/counter?js=na;id=1787909;t=109"
height="18" width="88" border="0" alt="Рейтинг@Mail.ru"></a></noscript>
<script language="javascript" type="text/javascript"><!--
if(11<js)d.write('--'+'>');//--></script>
<!--// Rating@Mail.ru counter-->



</body>
</html>
« Последнее редактирование: 21.12.2011, 19:00:16 от katerina »
*

katerina

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Это не ошибка а предупреждение.
1) Кто-то включил отображение предупреждений
2) Кто-то удалил тот файл (ну или взломали неудачно)

Скорее всего действительно кто-то пытался взломать, так как сами эти ошибки врятли могли появится. Подскажите пожалуиста что делать в таком случае, как исправить ошибки, как обезопасить сайт от взлома?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

katerina

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Какой то не тот файл
Извиняюсь, теперь код исправлен.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор moov

Ответов: 7
Просмотров: 7751
Последний ответ 17.12.2018, 14:08:12
от arma
Поменять цвет блоков в шаблоне

Автор nuon

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

Автор Djaga

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

Автор Jons$

Ответов: 7
Просмотров: 11788
Последний ответ 12.10.2015, 15:49:09
от darkghost
Смена шрифтов в шаблоне Joomla 2.5

Автор GulliWeR

Ответов: 6
Просмотров: 10188
Последний ответ 29.09.2015, 13:29:19
от jetjetjet