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

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
Аркадий, не могли бы Вы прокоментировать мое собщение?:

Цитировать
Автору огромное спасибо за модуль. С некоторыми моментами разобрался. Не подскажите только как можно сделать чтобы отфильтрованные товары отображались не по одному в одной строке а по несколько ( по 4-5 в строке). Как это реализовать можно? никак не получается! Буду очень благодарен! Если есть у кого нить свои примеры отображения несколько товаров в строке то не могли бы показать файлик конфигурации.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Надо смотреть стили контейнеров, выводящих товары. Если сделать ширину этих контейнеров 30% от шириы основного контейнера, то товаров в строке будет три и т.д.
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
А Это смотреть надо в CSS или где то еще?
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
Аркадий, а не могли бы подсказать поточнее:) третий день борюсь с этим, никак не могу выстроить по три товара в строку
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Поточнее скажет учебник по CSS и FireBug. Учись решать проблемы сам.
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
 и решаю их сам. но т.к не получается, то спросил подсказки у более опытного человека. лана, буду копать дальше
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Ну так я и дал подсказку, и довольно подробную. А ты следом попросил решить проблему за тебя. Не айс.
*

sanekk

  • Захожу иногда
  • 66
  • 0 / 0
Только писать условие на позицию вывода модулей. По примеру топика "Модуль только на главной" или подобного (названия уже не помню).

Arkadiy а может еще подскажите где можно почитать как это делается?
да и еще вопрос сразу как убрать вывод параметров категорий в карточке товара (после кнопки купить выводится)?
заранее спасибо
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Пользуйся поиском. Ответ на этом форуме.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Здравствуйте, Arkadiy! Спасибо за компонент и модуль.Прочила всю тему.Возник вопрос по модулю. Производителей и категории я отключила, оставила только тип, в нем 7 параметров и у каждого 2-10 значений. Если искать на главной все ок. Если искать в категории или в карточке то пропадают некоторые значения в параметрах(появляются только если поиграть с параметрами) - это нормально или я пропустила что-то?
« Последнее редактирование: 10.04.2011, 01:20:44 от Katerina01 »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Внутри категории товар ограничивается текущей категорией, по этому характеристик меньше.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Так...А можно эти категории вообще убрать чтобы поиск не ограничивался?? Все равно они мне не нужны-меня интересуют только параметры/типы!
*

Kocmoc

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Здравствуйте. Помогите пожалуйста с данным компонентом. Сайт http://kocmoc-auto.ru/ FireBug выдает ошибку jQuery("#mod_vm_search_form").formSerialize is not a function
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Значит jQuery либо не подключен, либо jQuery.form не подключена, либо ниже ее вызова подключается более старый jQuery чем надо.
*

Kocmoc

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Верно в папке templates\мой шаблон\scripts лежит jquery 1.2.6. Его удаляю, поиск начинает работать. Подскажите пожалуйста как обновить  jquery или пните где это разжёвано))) 
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
убрать подключение jQuery из шаблона.
*

Kocmoc

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
убрать подключение jQuery из шаблона.
Убирал. Появляется ошибка uncaught exception: Syntax error, unrecognized expression: [@rel*=style][@title] Как то подружить их нельзя?)) У меня до jquery шаблона загружается плагин /plugins/system/cdscriptegrator/libraries/jquery/js/jquery-1.4.3.min.js и после /plugins/system/cdscriptegrator/libraries/jquery/js/jquery-noconflict.js и все работает отлично. Пытался этот jquery-noconflict прикрутить к вашему компоненту, но не получилось. Чайник я)))
*

Miroky

  • Новичок
  • 4
  • 0 / 0
Добрий день, подскажите пожалуйста как можна решить проблему.
   Выбор размера изображения никак невлияет на изображение товаров в результате поиска. соответственно картинки залезают друг на друга... а текст залезает на ети картинки. картинки 170 х 170.
перепробовал все настройки, безрезультатно. Можна какнибуть ето решить?
 Сори за вопросы чайника. И за язык.  Руским неочень хорошо знаю:(
*

Miroky

  • Новичок
  • 4
  • 0 / 0
Ах да штобы лучше понимали в чом сутьб вопроса - http://techno-shara.com.ua/
    Поисковик на страницах с товаром любых.
*

Miroky

  • Новичок
  • 4
  • 0 / 0
Пока неответили в догонку последний вопрос)
 Можна ли сделать так штобы результат поиска был на стандартной странице товаров моево сайта...  а не в новой от поискового модуля...
*

dtokar

  • Захожу иногда
  • 51
  • 1 / 0
Добрий день, подскажите пожалуйста как можна решить проблему.
   Выбор размера изображения никак невлияет на изображение товаров в результате поиска. соответственно картинки залезают друг на друга... а текст залезает на ети картинки. картинки 170 х 170.
перепробовал все настройки, безрезультатно. Можна какнибуть ето решить?
 Сори за вопросы чайника. И за язык.  Руским неочень хорошо знаю:(

Найдите в коде компонента или модуля эту строку  <div style="width: 130px; height: 130px; padding: 5px; float: left;">  и измините width: 130px; на width: 180px;   

пользуйтесь для поиска Тотал Командером Alt+F7
*

Miroky

  • Новичок
  • 4
  • 0 / 0
огромноє спасибо))) целый день искал ответ... хух . помогло:)
*

dtokar

  • Захожу иногда
  • 51
  • 1 / 0
огромноє спасибо))) целый день искал ответ... хух . помогло:)

Пользуйтесь плагином FireBug для браузера Firefox

Установил модуль, не работает - не выдает результаты поиска.
<div id="main_search"> сделал.

Проверил фаер багом. Находит ошибки.
1) когда в поиске выбираю значение по которому искать из выпадающего списка:
typeChange is not defined
onchange()1 (строка 2)
event = change

2) при нажатии кнопки поиск выдает:
mod_loadProduct is not defined
onclick()2 (строка 2)
event = click clientX=226, clientY=483


Может быть я где-то натупил?
*

Sergun42

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Arkadiy, здравствуйте!
очень полезен ваш модуль для моего сайта, скачал модуль, компонент. заменил <jdoc:include type="component" /> на                        <div id="main_search">
         <jdoc:include type="component" />
<div>   Прочитал всю ветку, но так и не нашел в чем причина, не работает кнопка "поиск", т.е. нажимаю и ничего не происходит, откючил все модули- не помогло, подскажите, если Вас не затруднит. Вот сайт www.proba.mcdir.ru. Эт мой первый сайт, но хочется победить)                                                                                                                                                                                           
*

aleks_yug

  • Давно я тут
  • 628
  • 83 / 0
Arkadiy, здравствуйте!
очень полезен ваш модуль для моего сайта, скачал модуль, компонент. заменил <jdoc:include type="component" /> на                        <div id="main_search">
         <jdoc:include type="component" />
<div>   Прочитал всю ветку, но так и не нашел в чем причина, не работает кнопка "поиск", т.е. нажимаю и ничего не происходит, откючил все модули- не помогло, подскажите, если Вас не затруднит. Вот сайт www.proba.mcdir.ru. Эт мой первый сайт, но хочется победить)                                                                                                                                                                                           
<script language="javascript" type="text/javascript" src="http://www.proba.mcdir.ru/components/com_vm_ext_search_free/js/jquery-1.4.2.min.js">
и
<script type="text/javascript" src="/templates/bigkoleso1/jquery.js"></script>
В коде гл. страницы.
Отключите jquery в шаблоне...
*

Sergun42

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
при отключении jquery (как я понимаю просто в index.php убивается строчки
<script type="text/javascript" src="<?php echo $templateUrl; ?>/jquery.js"></script>
<script type="text/javascript">jQuery.noConflict();</script>    )
основной контент белеет при нажатии кнопки "поиск"
при выборе категории белеет пункт "выбор производителя",
это на локальном сервере, на хостинг в даннй момент выложить не имею возможности...
ломаю голову..
*

aleks_yug

  • Давно я тут
  • 628
  • 83 / 0
при отключении jquery (как я понимаю просто в index.php убивается строчки
<script type="text/javascript" src="<?php echo $templateUrl; ?>/jquery.js"></script>
<script type="text/javascript">jQuery.noConflict();</script>    )
основной контент белеет при нажатии кнопки "поиск"
при выборе категории белеет пункт "выбор производителя",
это на локальном сервере, на хостинг в даннй момент выложить не имею возможности...
ломаю голову..
Sergun42, вы тестируете на локалке - просто попробуйте на штатном шаблоне Joomla (из пакета установки). Если и здесь тоже самое, ищите проблему в чем то другом... У Вас не отрабатывает сам модуль и это говорит, в первую очередь, о конфликте...
*

Sergun42

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
на стандартном шаблоне (beez) выдает ошибку по firebug  var qString = jQuery("#com_vm_search_form").formSerialize();\r\n
так же обрамил дивами index.php
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 23285
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 10375
Последний ответ 14.01.2021, 00:09:53
от gartes
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

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

Автор aleks_yug

Ответов: 97
Просмотров: 28010
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Поиск для магазина автозапчастей как на Exist.ru!

Автор zzaj

Ответов: 21
Просмотров: 8830
Последний ответ 11.05.2016, 13:50:02
от Pahom72