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

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
http://dump.ru/file/4074049
Очень надеюсь на вас!
Я новичок в этом деле,и незнаю где свою проблему написать!
Вообшем мне нужно чтоб в этом шаблоне справа позиция была (right)
Сам пробовал поставить эту позицию не получается,просто Шаблон понравился,а позиции такова там нет.
« Последнее редактирование: 05.01.2010, 15:04:25 от Gaborik »
*

Аня

  • Давно я тут
  • 745
  • 33 / 0
  • Копатыч нестабилен!
В индексе вставляешь позицию. Подробности читай
 http://joomlaforum.ru/index.php/topic,28211.0.html
Fatal error - это не фатально!!! Я проверила.
*

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
<?php
defined( '_JEXEC' ) or die( 'Access to this location is RESTRICTED.' );
echo '<?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" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<?php
   // inserting mootools
      JHTML::_('behavior.mootools');
?>
<meta name="designer" content="Juergen Koller - http://www.lernvid.com" />
<meta name="licence" content="Copywright http://www.xpellshop.com/" />
<link href="templates/<?php echo $this->template ?>/css/reset.css" rel="stylesheet" type="text/css" media="all" />
<link href="templates/<?php echo $this->template ?>/css/template.css" rel="stylesheet" type="text/css" media="all" />
<link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template?>/css/<?php echo $this->params->get('colorVariation'); ?>.css" rel="stylesheet" type="text/css" />
     <!--[if IE 7]>
     <link href="templates/<?php echo $this->template ?>/css/ie7.css" rel="stylesheet" type="text/css" media="all" />
   <![endif]-->
   <!--[if lt IE 7]>
     <link href="templates/<?php echo $this->template ?>/css/ie5x6x.css" rel="stylesheet" type="text/css" media="all" />
   <![endif]-->
<?php if (($this->params->get('useJavascript'))!=0) : ?>
   <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/hover.js"></script>
<?php endif;?>
</head>
<body>
<div id="wrapper">
   <div id="bg_up">
      <div id="masthead_container">
         <?php if($this->countModules('user3')) : ?>
            <div id="navigation_container">
               <div id="navigation">
                      <jdoc:include type="modules" name="user3" style="xhtml" />
               </div>
            </div>
         <?php endif; ?>
         <div id="masthead">
               <div id="searchbox">
                  <div id="search">
                     <div id="search_inner">
                            <jdoc:include type="modules" name="user4" style="xhtml" />
                     </div>
                  </div>
               </div>   
         </div>
      </div>
      <div id="container">
         <div id="page_content">
            <?php if($this->countModules('left')) : ?>
               <div id="sidebar_left">
                      <jdoc:include type="modules" name="left" style="rounded" />
               </div>
            <?php endif; ?>      
            <div id="content">
                <jdoc:include type="component" />
            </div>
            <div class="clr"></div>
         </div>   
         <div id="container2">
                  <?php if($this->countModules('user1 or user2')) : ?>
                     <div id="user_modules1">
                        <?php if($this->countModules('user1')) : ?>
                           <div id="user1">
                                <jdoc:include type="modules" name="user1" style="rounded" />
                           </div>
                        <?php endif; ?>         
                        <?php if($this->countModules('user2')) : ?>
                           <div id="user2">
                                <jdoc:include type="modules" name="user2" style="rounded" />
                           </div>
                        <?php endif; ?>   










      
                     </div>               
                  <?php endif; ?>      
            <div id="footer">
               <jdoc:include type="modules" name="footer" />
            </div>
            <div id="designed_by">
                 <p>Valid <a href="http://validator.w3.org/check?uri=referer" target="_blank">XHTML</a> &amp; <a href="http://jigsaw.w3.org/css-validator/check?uri=templates/<?php echo $this->template ?>/css/template.css" target="_blank">CSS</a> | designed: <a href="http://www.lernvid.com" target="_blank">-LernVid.com-</a></p>
            </div>
            <div class="clr"></div>
         </div>
      </div>
   </div>
   <div id="bottom"></div>
</div>
<jdoc:include type="modules" name="debug" style="xhtml" />
</body>
</html>


Помоги плииз (
Где нужно прописать чтоп появилась эта позиция справа..(
« Последнее редактирование: 05.01.2010, 20:24:49 от Gaborik »
*

selimoff

  • Захожу иногда
  • 243
  • 16 / 0
  • heads up!!!
в index.php вставляете:
Код: php
<!-- begin rightcolumn -->
    <?php if ($this->countModules('right')) : ?>
<div>
    <jdoc:include type="modules" name="right" style="rounded" />
</div>
    <?php endif; ?>
<!-- end rightcolumn -->
а дальше как Аня сказала
JNavigation скачать Здесь
*

zlideni

  • Захожу иногда
  • 337
  • 76 / 0
что именно не получается....?
Что пробовал....?
Понимаешь если кто-то сделает за место тебя...ты так и не поймёшь что и откуда.....растёт...
и кстати твой шаблон предполагает вроде как левую колонку...после чего ты вставишь...и правую....то надо будет перенастраивать цсс или дописывать для правой колонки...
*

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
что именно не получается....?
Что пробовал....?
Понимаешь если кто-то сделает за место тебя...ты так и не поймёшь что и откуда.....растёт...
и кстати твой шаблон предполагает вроде как левую колонку...после чего ты вставишь...и правую....то надо будет перенастраивать цсс или дописывать для правой колонки...

Хочу чтоп позиция right появилась в шаблоне,в котором небыло такой позиции.
Я не хочу понять это,мне б желательно эту позицию зделали б и всё(

в index.php вставляете:
Код: php
<!-- begin rightcolumn -->
    <?php if ($this->countModules('right')) : ?>
<div>
    <jdoc:include type="modules" name="right" style="rounded" />
</div>
    <?php endif; ?>
<!-- end rightcolumn -->
а дальше как Аня сказала

Зделал,а дальше скажи а?
В том разделе много написано,который мне подходит,я так и не понел....
*

Аня

  • Давно я тут
  • 745
  • 33 / 0
  • Копатыч нестабилен!
А дальше  опубликуй что-нибудь в этой позиции и посмотри, как выглядит, может, надо ширину этого дива задать, отступы там, что-то еще.... тогда присвой ему класс, опиши его в ксс.
Fatal error - это не фатально!!! Я проверила.
*

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
А дальше  опубликуй что-нибудь в этой позиции и посмотри, как выглядит, может, надо ширину этого дива задать, отступы там, что-то еще.... тогда присвой ему класс, опиши его в ксс.
Опубликовал я в модуле опрос и поставил на эту позицию,но он нигде не проявился....
*

Аня

  • Давно я тут
  • 745
  • 33 / 0
  • Копатыч нестабилен!
После вот этого куска вставил
Код
<div id="content">
                <jdoc:include type="component" />
            </div>
?
Что хоть за шаблон, дай ссылку на источник, а то по твоей ссылке ничего не скачивается (bad gateway), да и хочется просто демо глянуть? Точно ли опрос опубликован и галочка стоит?
Fatal error - это не фатально!!! Я проверила.
*

Gaborik

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

Аня

  • Давно я тут
  • 745
  • 33 / 0
  • Копатыч нестабилен!
У меня лично после вставки кода правой колокни в индекс все отображается, только, конечно, не совсем там где хочется, но место и ширину этой правой колонки надо хоть как-то задать в CSS, и, возможно, подкорректировать ширину колонки контента. В общем, надо подумать, куда конкретно эту колонку втиснуть...
« Последнее редактирование: 05.01.2010, 23:50:20 от Аня »
Fatal error - это не фатально!!! Я проверила.
*

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Это тяжело делать?
*

Аня

  • Давно я тут
  • 745
  • 33 / 0
  • Копатыч нестабилен!
Ну, не знаю, не тяжело - это очень интересно, надо разобрать код индекса повнимательнее...
Fatal error - это не фатально!!! Я проверила.
*

Gaborik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Ну, не знаю, не тяжело - это очень интересно, надо разобрать код индекса повнимательнее...
Извини конечно,что спрашиваю (
Но ты не могла бы хоть как нидудь сделать?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор moov

Ответов: 7
Просмотров: 7753
Последний ответ 17.12.2018, 14:08:12
от arma
Как вывести путь до шаблона с помощью 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
Настройка неадаптивного шаблона

Автор Zegeberg

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