Новости 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 Ответов
  • 207090 Просмотров
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

baza

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
А как его подгрузить?
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
а Вы сам компонент установили? Через него выводится поиск? ^-^
*

Arkadiy

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

baza

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Компонент установил. Галки стоят. Прилагаю скриншоты:

*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Теперь все в порядке со скриптами, но <div id="main_search"> до сих пор нету.
*

baza

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Да, пробовал вообще удалить component.php, но никаких изменений на сайте не заметил. Не знаю, зачем он вообще нужен тогда.

Может проблема в том, что компонент com_vm_ext_search_free должен быть открыт для записи? У нас на сервере для этого нужно разрешение 777, стоит 755 и не могу изменить, хотя есть все привилегии.
*

hudoy

  • Захожу иногда
  • 136
  • 5 / 0
Добрый день! Подскажите как можно сделать, что-бы результаты поиска выводились бы в два столбца?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Переписывать vm_ext_search_helper.php 209-254 строку. Обрамить это все дивом, присвоить этому диву ширину чуть меньще 1/2 ширины родительского контейнера и float: left.
*

hudoy

  • Захожу иногда
  • 136
  • 5 / 0
Я обрамил этот кусок кода дивом <div style="float:left; width:48%;"> и результаты поиска сместились влево на пол страницы, но второй столбец не появился, что-то ведь нужно ещё прописать , но ЧТО
*

Arkadiy

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

hudoy

  • Захожу иногда
  • 136
  • 5 / 0
В пикселях тоже самое.. Общий контейнер это что? извиняюсь
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

anton65

  • Новичок
  • 4
  • 0 / 0
а я захотел несколько модифицировать поиск ( избавиться от самой кнопки поиска )
можно ли это сделать?
я так понял кнопка вызывает mod_loadProduct(0)
каждая смена параметров вызывает mod_typeChange()
попытка сделать onchange сразу функцию смены типа а потом функцию загрузки продукта ни к чему не привела ( типы меняются но продукты продолжают грузиться на следующей смене  типа отображая предыдущее изменение ( черти че получается.. как будто отрисовка вызывается перед тем как сделанны изменения) )
впихивал прямо в js в функцию смены типа функцию загрузки продуктов ( отрисовку ) все равно как то не так... если есть мысли как это сделать -- подскажите пожалуйста

Не подскажешь как решил эту проблему?
*

checker

  • Осваиваюсь на форуме
  • 40
  • 1 / 0
Вот так вот выглядит несколько поправленный mod_typeChange() внутри mod_universal_search.js
Код
function mod_typeChange(){
    var qString = jQuery("#mod_vm_search_form").formSerialize();
    jQuery("#mod_harakt_div").fadeTo("slow", 0.22);
    jQuery.ajax({
        type: "POST",
        url: url+'/index2.php?task=ajax_mod&no_html=1&task2=harakt',
        data: qString,
        dataType: 'HTML',
        success: function (data){
            jQuery("#mod_harakt_div").html(data);
            jQuery("#mod_harakt_div").fadeTo("slow", 1);mod_loadProduct(0);
        }
    });
    return;
}

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

anton65

  • Новичок
  • 4
  • 0 / 0
Поставил модуль на сайт. Вроде бы кое как разобрался. Но вот проблема.
Вот страница с проблемой http://art-cool.org/cat.html?page=shop.browse&category_id=1
Суть в том, что при первом открытии страницы не работает поиск по типам товаров.
Т.е. если я изменяю данные поиска в графе "Выбрать мощность" или "Выбрать страна производитель" то он поиском выдает все товары в магазине (хотя типа заданы).
Но если я прежде чем выбирать эти позиции изменю производителя или категорию. То после этого поиск начинает работать нормально.
Такое ощущение, что для полноценной работы модулю надо пинка дать, раскруткой по производителю.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
все, нашла в чем было дело!
в файле modules\mod_vm_universal_search\mod_vm_universal_search.php
у меня 68 строка, там где выводятся параметры типа
Код
    <div id="mod_harakt_div" >
            <?php
            if (count($types) == 1) {
                $typ = array();
                $typ[] = $types[0]->product_type_id;
                $uniSearch->get_harakt($typ, $cid, $mf_id, $conf);
            }
            ?>
    </div>

в параметры функции get_harakt надо добавить префикс 'mod_':

 
Код
   <div id="mod_harakt_div" >
            <?php
            if (count($types) == 1) {
                $typ = array();
                $typ[] = $types[0]->product_type_id;
                $uniSearch->get_harakt($typ, $cid, $mf_id, $conf,'mod_');
            }
            ?>
    </div>
*

psy

  • Новичок
  • 5
  • 0 / 0
Ув. Arkadiy,

После установки модуля на локалхост и обновления главной страницы получил вот что:
Warning: require_once(Z:\home\localhost\www\tyres\components\com_vm_ext_search_free\files\unisearch.php) [function.require-once]: failed to open stream: No such file or directory in Z:\home\localhost\www\tyres\modules\mod_vm_universal_search_free\mod_vm_universal_search_free.php on line 8

Fatal error: require_once() [function.require]: Failed opening required 'Z:\home\localhost\www\tyres\components\com_vm_ext_search_free\files\unisearch.php' (include_path='.;/usr/local/php5/PEAR') in Z:\home\localhost\www\tyres\modules\mod_vm_universal_search_free\mod_vm_universal_search_free.php on line 8

Подскажите как забороть, или тыкните носом, если уже объясняли.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
К модулю рнеплохо и компонент подустановить.
*

rast

  • Захожу иногда
  • 64
  • 5 / 1
Подскажите плыз как поравить сортивку выдачи параметров. Тоеесть на сайте в модуле выдается низспадающий список который по алфовиту сортируется, а надо что бы был так как я эти значени вписал.
*

anton65

  • Новичок
  • 4
  • 0 / 0
Добрый день. Приобрел данный модуль. Просто сказка, по сравнению с теми бесплатными, что я скачивал и пытался настроить. Но есть пару вопросов по изменению текущих настроек:
1) как поменять в выпадающем списке значение, которое написано по умолчанию, у меня допустим написано "Выпадающий список Страна производитель", а я хочу что бы при не выбранном данном параметре было написано "Все модели".
2) в графическом движке диапазон, хочу сделать подписывание значений снизу (не всю шкалу, но несколько значений для ориентира), но там последним максимальным значением стоит 9999999999, как максимальное значение на шкале, а еще лучше как определить максимальное значение нужным мне числом, например 20.
*

psy

  • Новичок
  • 5
  • 0 / 0
Arkadiy,
Спасибо, установил компонент, заработало. Но есть неск вопросов, буду очень благодарен, если ответите.
1. Когда в настройках модуля в поле "Разрешить подбор по производителю" стоит значение "Нет"- на главной странице сайта не работает Аякс. После включения этого параметра в настройках все работает нормально. Мне не нужно выводить производителя на страничке. Подскажите что сделать.
2. Результаты поиска выдает всего в количестве 3 строк. Как сделать больше?
3. Хотелось бы убрать из формы поиска слова "Выбрать". Это в тэге Option- чтобы сразу название параметра товара было. Посоветуйте что сделать.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
1. что говорит консоль FireBug?
2. По-моему где-то в настройках, либо их всего три.
3. Найди в языковом файле это слово, потом найди соответствующую константу.
*

psy

  • Новичок
  • 5
  • 0 / 0
Консоль FireBug говорит: "typeChange is not defined". Это в закладке ошибок.
По поводу результатов выборки- их не 3, снизу еще есть ссылки с цифрами на следующие страницы результатов выборки. Но на них на всех по 3 товара.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
1. решение этой проблемы в самом первом посте этого топика. Если выводит по 3 товара не страницу, значит в компоненте сотит такая настройка.
*

dfg_forever

  • Новичок
  • 7
  • 0 / 0
Помигите пожалуйста с поиском,
Установил com_vm_ext_search_free_1.4.4.zip и mod_vm_universal_search_free_1.2.zip,
Поле поиска выводится, поиск по производителю работает,
выводятся типы. Выводятся параметры. Но  не отображаются ДОПУСТИМЫЕ ЗНАЧЕНИЯ.
адрес сайта sportfin.net.
главный модуль ВМ включал, там родной расширенный поиск покаывает всё и всё работает.
Подскажите пожал-ста что не так, самим поиском я доволен полностью, тока вот со значениями че то не то.

Еще вопрос,  может у вас есть какой нибудь небесплатный поиск и что в нем есть? если есть =)
спасибо

*

Arkadiy

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

dfg_forever

  • Новичок
  • 7
  • 0 / 0
Тогда подскажите пож-ста где указывать характеристики товара в виртумарте?
спасибо.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
В карточке товара во вкладке типа.
*

dfg_forever

  • Новичок
  • 7
  • 0 / 0
дык это и называется
Тип
Параметры
и допустимые значения параметра, которые по сути и должны выводиться в поиске...

А у меня они то и не выводятся, выводится тип и параметры типа
Например
тип - беговые лыжи
параметр - длина
допустимые значения - 150см;160см;170см;
 
или нет?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор bork

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

Автор 4kict

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

Автор Grig2009

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

Автор aleks_yug

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

Автор zzaj

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