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

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
У меня проблема с этим модулем. Я выбрал в модуле "Множественный выбор" ("Multi-select list"), опубликовал статью с полями для этого "Multi-select list". Если выбрать только то поле "Multi-select list", которое есть в этой статье, то поиск находит эту статью. Если выбрать сразу все поля для этого "Multi-select list", то есть все поля, включая и то, которое есть в этой статье, то поиск не находит! То ли я что-то не то делаю, то ли это баг модуля. Кто-нибудь сталкивался с этим?
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Re: Модуль K2 Extra fields Filter & Search. Проблема.
« Ответ #1 : 06.08.2010, 15:16:45 »
Выкладываю скрины, чтобы была понятна суть проблемы:


Причем последняя версия модуля для K2 2.2. Но у меня и на K2 2.2 и на K2 2.3 та же проблема.
*

Real

  • Новичок
  • 8
  • 0 / 0
Re: Модуль K2 Extra fields Filter & Search. Проблема.
« Ответ #2 : 23.01.2011, 16:58:35 »
для етово надо создать ищо одно окошка для вибора елемента 2...так будет проще... ^-^
*

ismeyker

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
Re: Модуль K2 Extra fields Filter & Search. Проблема
« Ответ #3 : 01.09.2011, 16:40:06 »
файл  jak2_filter.php
строка 323

Меняем запрос в базу данных OR!

//$sql[] = " (`exfid` =".intval($key)."  AND (". implode(" AND ",$subsql).") )";      
$sql[] = " (`exfid` =".intval($key)."  AND (". implode(" OR ",$subsql).") )";
« Последнее редактирование: 12.03.2013, 23:53:28 от era »
*

cascader

  • Новичок
  • 8
  • 0 / 0
Re: Модуль K2 Extra fields Filter & Search. Проблема.
« Ответ #4 : 28.03.2012, 11:33:58 »
У меня такой же код как и у Вас во второй строке,
Но поиск все равно работает неправильно, не подскажите что можно ещё сделать?

Фрагмент функции из файла:

      foreach ( $ja_filter as $key=>$value)
      {
         //return $vars;
         if (strpos($key,'field_')!==false)
         {
            $key = str_replace('field_','',$key);
            if ((intval($key)>0)&&($value))
            {
               $values = explode('-',$value);
               
               if (count($values)==2)
               {
                  sort($values);
                  if (is_numeric($values[0])&&is_numeric($values[1]))
                  {
                     $sql[] = " (`exfid` =".intval($key)."  AND `value` BETWEEN  {$values[0]} AND {$values[1]})";
                  }
                  else
                  {
                     $sql[] = " (`exfid` =".intval($key)."  OR `value` BETWEEN  '{$values[0]}' AND '{$values[1]}' AND length(`value`) BETWEEN length('{$values[0]}') AND length('{$values[0]}' ))";
                  }
               }
               else
               {
                  $values = explode(',',$value);
                  if (count($values)==1)
                  {
                     $sql[] = " (`exfid` =".intval($key)."  AND `value` LIKE '%$value%' )";
                  }
                  else
                  {
                     // for multi select or between
                     $subsql=array();
                     foreach ($values as $sub)
                     {
                        $subsql[] = " (value LIKE '%$sub%') ";
                     }
                     $sql[] = " (`exfid` =".intval($key)."  AND (". implode(" OR  ",$subsql).") )";
                  }
                  
               }
            }
         }
      }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

K2 + Falang, проблема с поиском

Автор x1

Ответов: 1
Просмотров: 2698
Последний ответ 07.02.2022, 16:15:37
от x1
K2 не создается модуль, не сохраняются настройки

Автор kot488

Ответов: 0
Просмотров: 2804
Последний ответ 24.01.2022, 13:52:46
от kot488
Модуль с фильтрами для K2 по доп. полям

Автор KASich

Ответов: 3
Просмотров: 1192
Последний ответ 24.03.2020, 10:11:11
от AlexB
Проблема с датой

Автор nick71

Ответов: 0
Просмотров: 802
Последний ответ 02.03.2020, 20:44:18
от nick71
Точный поиск JA K2 Filter and Search Module

Автор Abez

Ответов: 1
Просмотров: 934
Последний ответ 25.02.2020, 19:58:47
от Abez