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

grizley

  • Новичок
  • 3
  • 0 / 0
Великолепный модуль! Большое спасибо.
Но есть вопрос. Кто-нибудь пытался прикрутить tooltips к категориям? У меня не получается.
*

zuro

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Я делал стиль меню с помощью #accordion a,#accordion li a b итд, подскажите, пожалуйста как сделать что-бы предыдущее меню меняло цвет когда вложенное активно.
#accordion li .parent a{

   color:red;
}
не помогает
« Последнее редактирование: 25.03.2011, 03:53:17 от zuro »
*

zuro

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Подскажите пожалуйста, как сделать следующее для аккордиона.
Пункт меню(первой вложенности)
          пункт меню1(второй)
          пункт меню2(второй)
          пункт меню3(второй)
          пункт меню4(второй)
                         пункт меню1(третьей вложенности)
                         пункт меню2(третьей вложенности)
                         пункт меню3(третьей вложенности)
Мы находимся в пункт меню2(третьей вложенности).
Перечитал все 19 страниц, только отчасти получилось, но не совсем то.
Очень нужно.

Решение нашел  в модуле от рокетов:
#accordion  li.active a, #accordion  li.active li.active a, #accordion  li.active li.active li.active a, #accordion  li.active li.active li.active li.active a {text-decoration:underline;font-weight: bold;color:#7be707;}
#accordion  li a, #accordion  li.parent li a, #accordion  li.parent li.parent li a,#accordion  li.parent  li.parent li.parent li a,  #accordion  li.parent li .separator, #accordion  li.parent li.parent li .separator, #accordion li.parent  li.parent li.parent li .separator {text-decoration:underline;font-weight: bold;color: #8a2673;}
« Последнее редактирование: 28.03.2011, 00:25:09 от zuro »
*

jey

  • Захожу иногда
  • 101
  • 1 / 0
Подскажите как вывести в скобках количество товаров в категории, как в стандартном модуле? В VirtueMart включено отображение количества товаров.
« Последнее редактирование: 27.03.2011, 23:35:07 от jey »
*

sevangog

  • Осваиваюсь на форуме
  • 34
  • 3 / 0
Доброго времени суток!
Использую шаблон меню аккордеон, в третий раз поднимаю вопрос:
 - как задать каждой (или конкретной ) родительской категории свой класс. Задача - выделить одну или более категорию своим стилем.
Мой сайт - http://fibershop.by  Хотелось бы выделить красным последний пункт "Распродажа".
*

GIPER__X

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
При нажатии на дочернюю категорию исчезает вообще куда-то меню аккордиона, потом нажимаешь любую ссылку - оно опять появляется. Помогите разобраться пожалуйста.Посмотрите, если не трудно. http://alamet.kz/index.php?option=com_virtuemart&Itemid=111
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
При нажатии на дочернюю категорию исчезает вообще куда-то меню аккордиона, потом нажимаешь любую ссылку - оно опять появляется. Помогите разобраться пожалуйста.Посмотрите, если не трудно. http://alamet.kz/index.php?option=com_virtuemart&Itemid=111
Скажите, а почему у вас Itemid в конце URL ссылок в меню аккордеона 57, а на остальном сайте 111? Вы включили кэширование модуля?
*

GIPER__X

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Скажите, а почему у вас Itemid в конце URL ссылок в меню аккордеона 57, а на остальном сайте 111? Вы включили кэширование модуля?
Действительно намутил я с айди. Спасибо!
« Последнее редактирование: 08.04.2011, 09:17:44 от GIPER__X »
*

silverbeam

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
у меня меню выдаёт "Warning: Call-time pass-by-reference has been deprecated in modules/mod_virtuemart_categories/helper.php on line 74"
может кто помочь?

http://www.coolsport.com.ua/
« Последнее редактирование: 22.10.2011, 15:20:28 от silverbeam »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
silverbeam, кусок кода в студию =)
74 строчку и парочку соседних, пожалуйста ; )
*

GIPER__X

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Вот тут он ругается!
if ($tree->current->hasChildren())
      {
         foreach ($tree->current->getChildren() as $child)
         {
            $tree->current = & $child;
            modVMCategoriesHelper::_getLevelXML($tree, $params, 0, & $xml->document);
         }
      }

Можно конечно закоментировать и посмотреть что получится :)
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Так...пропиши первой строкой в .htaccess php_flag allow_call_time_pass_reference On
должно помочь  *DRINK*
*

silverbeam

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
прописал в .htaccess php_flag allow_call_time_pass_reference On
пишет "500 Internal Server Error"  :(

ща попробую, кстати закомментить!  правда, вроде я так делал и не помогло.  спасибо, что откликнулись!

чиорт(  сайт перестал грузиться и после возвращения изменений .htaccess   :o


уф!  вернулось всё. сервер отписался: ".htaccess: Invalid command 'php_flag', perhaps misspelled or defined by a module not included in the server configuration"
« Последнее редактирование: 18.04.2011, 18:23:00 от silverbeam »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
файл точно называется .htaccess, а не htaccess.txt?
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
верни все обратно и в modules/mod_virtuemart_categories/helper.php в строке 74
Цитировать
modVMCategoriesHelper::_getLevelXML($tree, $params, 0, & $xml->document);
убери знак &
« Последнее редактирование: 18.04.2011, 18:30:19 от DaVinchy »
*

silverbeam

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
прекрасно!  всё заработало!  как благодарить?   

кстати, был ещё вопрос по этому модулю.
у меня есть модуль один, который я хочу выводить только в каталоге. но в настройках модуля можно указывать только пункты меню, в которых публикуется модуль.  а категорий магазина там нет, так как они выводятся через данный модуль меню..

я путано объяснил, но такая вот проблемка!)   может в Joomla можно как-то настроить, чтобы модуль выводился на всех страницах кроме выделенных?  то есть обратный механизм.
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
прекрасно!  всё заработало!  как благодарить?
Решайте сами как благодарить. Если что - кошелек в профиле указан.  ^-^

может в Joomla можно как-то настроить, чтобы модуль выводился на всех страницах кроме выделенных?
правильно я понял: необходимо вывести сам модуль на определенных страницах?  ^-^

Т. е., допустим у нас есть 2 пункта меню Одежда и Обувь. Заходим в Обувь - модуль есть, Заходим в Одежду - модуля нет.
« Последнее редактирование: 18.04.2011, 18:48:29 от DaVinchy »
*

silverbeam

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
1) понял!  ;)

2) нет, необходимо вывести другой модуль только внутри каталога товаров, а все пункты меню каталога (категории-подкатегории) организованы данным модулем категорий.
то что ты написал - идеальный вариант, но, хотя бы, чтобы можно было вывести в каталоге вообще, не выводя модуль в новостях, статьях.. ещё где, например.
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Так этот "идеальный" вариант - стандартный  ^-^ в настройках модуля есть свойство "Назначение меню",
в нем и выбираешь тот пункт меню, в котором необходимо отображать модуль.
P.S. Не путай понятия пункт меню и категория магазина  ;)
Если же необходимо чтобы модуль не выводился, допустим, в карточке товара, то можно только Позицию модуля
отображать/не отображать где-либо с помощью условий.
« Последнее редактирование: 18.04.2011, 19:10:40 от DaVinchy »
*

silverbeam

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Да, именно стандартный.  но как показывать определённый модуль в определённом пункте меню этого модуля категорий?
данный модуль категорий не отображается в "Назначение меню", вот в чём моя загвоздка :(

то есть: мне нужно вывести другой модуль (или несколько других) в данном модуле.
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Цитировать
данный модуль категорий не отображается в "Назначение меню"
И не будет, т. к. это модуль а не пункт меню.
Как я писал выше др. модуль вывести в определенной категории нельзя, но можно попробовать вывести отдельную позицию модуля в нужных тебе категориях,
прибегнув к редактированию шаблона.
*

silverbeam

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

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Не очень. Все зависит от того, насколько тебе это необходимо. ;)
« Последнее редактирование: 19.04.2011, 19:56:33 от DaVinchy »
*

kiriamba

  • Захожу иногда
  • 86
  • 0 / 0
у меня почему то на сайте не работает акордион
он просто загружается изначально уже раскрытый www.omilo.ru
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
у меня почему то на сайте не работает акордион
он просто загружается изначально уже раскрытый www.omilo.ru
Там идёт конфликт скриптов - подключены и mootools и jquery.
*

kiriamba

  • Захожу иногда
  • 86
  • 0 / 0
mootools это и есть этот модуль который у этой теме выложен ?
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Mootools - это библиотека скриптов, используемая аккордеоном и MooTree. Надо выбрать либо другой шаблон меню, либо отключить штучки, использующие jquery
*

kiriamba

  • Захожу иногда
  • 86
  • 0 / 0
Спасибо подправил :)
а как можно увеличить шрифт ? или сделать подсветку например ?
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
ответ находится в первом посте в разделе "Кастомизация. CSS"
*

flame33

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

IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 53920
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 28027
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Модуль Cherry Picker for VirtueMart

Автор flintstone

Ответов: 42
Просмотров: 26623
Последний ответ 04.01.2016, 21:25:50
от gleb22
Добавить модуль в товар

Автор Tokyo

Ответов: 2
Просмотров: 2886
Последний ответ 11.05.2015, 20:43:32
от tierex
Модуль VirtueMart для фильтра товаров по категориям!

Автор maxmur

Ответов: 104
Просмотров: 52585
Последний ответ 08.08.2014, 11:47:37
от Хусен