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

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Буквально все.
Короче менять надо скрипт который передает значение в инпут, по другому ни как, да?
*

falconpvt

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Поиск работает если выбирать по порядку, сверху вниз. Если наоборот, то не работает.
это помогло, но как сказал выше, выдаёт после кнопки не всегда все результаты...(
Спойлер
[свернуть]
*

Arkadiy

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

falconpvt

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
вместо "дистинкт" сделал так и теперь снова выбор снизу вверх характеристик 0 показывает... эх( есть ли смысл искать на форуме ответы в прошлом? или эти проблемы не решались "задокументировано"? :(
Спойлер
[свернуть]
уловил зависимость...
вместо 3 найденных показывает по кнопке 1
4-2
16-8


наконец-то)))нашёл)))
http://joomlaforum.ru/index.php/topic,111319.msg647780.html#msg647780
« Последнее редактирование: 04.02.2012, 04:01:07 от falconpvt »
*

falconpvt

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
в платном есть проблемы такие? выбор снизу вверх и я хочу только чтобы параметры выбирались...
*

Arkadiy

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

aleks_yug

  • Давно я тут
  • 628
  • 83 / 0
Аркадий, добрый день! Уже писал - компонент великолепный, легко конфигурируется и изменяется под свои нужды. Использую везде, где можно +
А теперь по делу... Достаточно редко задаю вопросы, но тут... Заметил очень своеобразный глюк. На тарифе "кластер", хостинг "e-planet" - компонент (а конкретнее - модуль) подвисает при работе в IE всех версий. В остальных браузерах никаких проблем! У того же хостера на VPS все работает идеально. Обсуждал с ними эту фишку - выяснилось (по их словам), что на "кластере" обработка происходит через опрокси и соответственно из-за этого происходит сбой в IE. Насколько подобное предположение имеет право на существование, не знаю...
Но ведь на VPS прекрасно работает! Это конечно, не критично - заменил хостинг и проблема решена. Но все-же... Если сталкивался с подобной проблемой - где покопать? если есть желание глянуть - могу скинуть ссылку.
А за компонент СПАСИБО! ^-^
*

Arkadiy

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

aleks_yug

  • Давно я тут
  • 628
  • 83 / 0
Нет, с такой проблемой не сталкивался.
Может это как-то связанно с обработкой ajax-запросов в IE (c законопослушными такой проблемы-то нет)
Кстати, дедовский компонент (для 1.0.15) пашет там-же без сбоев - все в порядке. ну да бог с ним... Не заморачивайся
*

alexsej

  • Новичок
  • 1
  • 0 / 0
 ! Приветствую товарищи. Подскажите как сделать на сайте http://www.west-climate.ru/ вывод товара , настраиваемый, так же как в основном компоненте VirtueMart.... или сколько это будет ...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Может это как-то связанно с обработкой ajax-запросов в IE (c законопослушными такой проблемы-то нет)
Кстати, дедовский компонент (для 1.0.15) пашет там-же без сбоев - все в порядке. ну да бог с ним... Не заморачивайся
Не вижу взаимосвязи смены хостинга и браузера клиента. Непонятный глюк.
*

aleks_yug

  • Давно я тут
  • 628
  • 83 / 0
Не вижу взаимосвязи смены хостинга и браузера клиента. Непонятный глюк.
Аркадий, я ее сам не вижу. Проверил методом ненаучного тыка - на VPS прекрасно заработало. Отсюда и выплыло такое предположение (но и только...) В любом случае вопрос решаемый
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Arkadiy, я пытаюсь изменить вид select. Вот тут есть способ стилизации select, но он видимо конфликтует со скриптом поиска. Может вам удастся сразу увидеть в чем причина? Вот скрипт для этого способа стилизации.
Если применить этот способ, то обновление селектов не происходит.
*

Arkadiy

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

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Arkadiy, а сложно заменить select на список ul li ?
*

Arkadiy

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

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Приветствую.
Компонент хороший, но заметил проблему, решения не увидел.
Если у одного товара выбрано 2 параметра итз одного типа, то он в поиске не участвует.
То есть есть тип товара - Модель у неё имеются значения toytota,opel,volvo и например если товар подходит и к тойота и к опель соответственно выбраны два параметра, то он в поиске не появляется:(
Как-то возможно решить проблему?
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Приветствую.
Компонент хороший, но заметил проблему, решения не увидел.
Если у одного товара выбрано 2 параметра итз одного типа, то он в поиске не участвует.
То есть есть тип товара - Модель у неё имеются значения toytota,opel,volvo и например если товар подходит и к тойота и к опель соответственно выбраны два параметра, то он в поиске не появляется:(
Как-то возможно решить проблему?
Проверил - работает. Один товар к двум параметрам одного типа - ищет.
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Проверил - работает. Один товар к двум параметрам одного типа - ищет.
странно, у а меня отказывается :(
пишет что 0 в подборе, по остальным хорошо ищет.
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
странно, у а меня отказывается :(
пишет что 0 в подборе, по остальным хорошо ищет.
адрес сайта scooter-zip.ru выбрать модель Yamaha и марку Aerox будет 0 хотя есть модель которая в Aerox и в BWS
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
адрес сайта scooter-zip.ru выбрать модель Yamaha и марку Aerox будет 0 хотя есть модель которая в Aerox и в BWS
Показывает 0 товаров, а если нажать на кнопку "поиск" то выводит много товаров. Возможно типы не так присвоены?
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Показывает 0 товаров, а если нажать на кнопку "поиск" то выводит много товаров. Возможно типы не так присвоены?
Типы присвоены правильно, если товару дать 1 параметр типа то он нормально присутствует в поиске. Если же ему сделать
2 параметра одного типа в моем случае модели. то он выпадает из поиска :(
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

ispanec

  • Новичок
  • 6
  • 0 / 0
Люди добрый!подскажите пожалуйста .У меня при нажатии на определенный товар открывается первый добавленный товар с таким же наименованием-думал в этом проблема !меню наименование второго товара все равно при нажатии открывает первый .Например:Adidas(товар куртка) и Adidas(товар свитер) при нажатии на свитер открывает куртка.Я очень прошу высказать Ваше мнение
*

stacan

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Доброго времени суток.

Два вопроса.

1. Кто-нить прикрутил к бесплатному фильтру "общий сброс "?
Пытался сделать так :

/modules/mod_vm_universal_search_free/mod_vm_universal_search_free.php:

<input type="reset" value="Сброс"> - сброс на первое значение проходит только в Категориях и в Производителях - Типы никак.

и так : <input type="button" value="Сброс" onclick="reset_form(0)">
с функцией как на сайте разработчиков фильтра:

modules/mod_vm_universal_search_pro/files/mod_universal_search.js :

...
function reset_form(load_product){
    jQuery('#mod_vm_search_form').clearForm();

    if(jQuery("select").is("#pt")){
        jQuery('#pt option:selected').attr('selected','');
        jQuery('#pt option:last').attr('selected','selected');
    }
   
    jQuery.ajax({
        type: "POST",
        url: url+'/index2.php?option=com_vm_ext_search_pro&no_html=1&task=reset_form'
    });
   
    if(jQuery("div").is("#mod_category_div")){
        mod_categoryChange(load_product);
    }
    else if(jQuery("div").is("#mod_mf_div")){
        mod_mfChangeMulti(load_product);
    }
    else if(jQuery("div").is("#mod_ad_div")){
        mod_availableDateChange(load_product);
    }
    else if(jQuery("div").is("#mod_typ_div")){
        mod_typeChange(load_product);
    }
}


В этом случае - сброс проходит в Производителях и Типах , а в Категории - появляется пустое поле.


2. Нужно вывести товар только в зависимости от типа на основе этого фильтра. Например вывести только бежевое постельное белье  (категория и производитель - не важно ). Причем по клику по образцу цвета.

Думал так сделать :
в форме ничего не трогаю кроме типа . Вибираю тип "бежевое" - кликаю поиск фильтра и смотрю через консоль огнелиса на http запрос.
Если потом по клику по образцу цвета программно выполнить такой же запрос - все должно получиться. Но это только идея -мож.так и не получится. Может кто решал подобную задачу ?



*

stacan

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Как программно получить ID товаров с одинаковым типом ?Например все id товаров с первым типом,потом все id товаров со вторым?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Запросом всех идов товара из таблицы типа.
*

xoxol39

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • Хохол...
Нужна помощь! Фильтр не работает в IE и Opera (индикатор загрузки работает, но ничего больше не происходит) - посмотреть (в обогревателях есть несколько товаров)
« Последнее редактирование: 24.02.2012, 22:34:51 от xoxol39 »
*

spyweb

  • Новичок
  • 3
  • 0 / 0
Arkadiy, доброго времени суток!
В модуле не отображаются те параметры у которых не заданы допустимые значения. Они видны лишь, допустим, на странице товара. Компонент/модуль с подобными параметрами не работает?
А если мне необходимо задать диапазон изменения значения параметра, то как это правильно сделать чтобы он (параметр) учавствовал в поиске?


Нашел ваш ответ на подобный вопрос заданный ранее.

"Все правильно заметил, другой регулировки попадания в поиск нет, только наличие допустимых значений."

И все же, Arkadiy, ее (регулировку) можно удалить, или видоизменить, чтобы было как в "поиске по расширенным характеристикам" ?
« Последнее редактирование: 28.02.2012, 14:10:51 от spyweb »
*

spyweb

  • Новичок
  • 3
  • 0 / 0
Arkadiy, доброго времени суток!
В модуле не отображаются те параметры у которых не заданы допустимые значения. Они видны лишь, допустим, на странице товара. Компонент/модуль с подобными параметрами не работает?
А если мне необходимо задать диапазон изменения значения параметра, то как это правильно сделать чтобы он (параметр) учавствовал в поиске?


Нашел ваш ответ на подобный вопрос заданный ранее.

"Все правильно заметил, другой регулировки попадания в поиск нет, только наличие допустимых значений."

И все же, Arkadiy, ее (регулировку) можно удалить, или видоизменить, чтобы было как в "поиске по расширенным характеристикам" ?


Попытался так:

В файле www\components\com_vm_ext_search_free\files\unisearch.php

Находим:
Код
            $param_type = array ();
            $selected_params = array ();
            $parameter_multiselect = array ();
            $i = 0;
            $disabled = '';
            $q1 = '';
            foreach  ($patams as $patam) {
                $parameter_values = $patam->parameter_values;
                if (!empty($parameter_values)) {
                    $i++;
                    $param_name = $patam->parameter_name;
                    $param_id = $product_type_id[0];
                    $parameter_label = $patam->parameter_label;
                    $item_name = "product_type_" .$product_type_id[0]. "_" . $param_name;

                    $parameter_type = $patam->parameter_type;
                    $param_type[$i] = $parameter_type;
                    $parameter_multiselect[$i] = $patam->parameter_multiselect;
                    $parameter_name[$i] = $patam->parameter_name;
                    //получаем выбранный параметр из реквеста
                    $selected_param = array();
                    $selected_parameter = vmGet($_REQUEST, $item_name, '');
                    $selected_param = array();
                    for ($j=0; $j< count($selected_parameter); $j++) {
                        if(!empty ($selected_parameter[$j])) {
                            $selected_param[$j] = urldecode($selected_parameter[$j]);
                        }
                    }

Меняем на:
Код
            //запрашиваем названия свойств
            $q = "SELECT `parameter_name`, `parameter_label`, `parameter_type`, ";
            $q .= "`parameter_values`, `parameter_multiselect`, `parameter_unit` ";
            $q .= "FROM #__{vm}_product_type_parameter ";
            $q .= "WHERE product_type_id IN (".implode(", ", $product_type_id).") ";
            $q .= "ORDER BY parameter_list_order";
            $db->setQuery($q);
            $patams = $db->loadObjectList();

            $param_type = array ();
            $selected_params = array ();
            $parameter_multiselect = array ();
            $i = 0;
            $disabled = '';
            $q1 = '';
            foreach  ($patams as $patam) {
                $parameter_values = $patam->parameter_values;
                    $i++;
                    $param_name = $patam->parameter_name;
                    $param_id = $product_type_id[0];
                    $parameter_label = $patam->parameter_label;
                    $item_name = "product_type_" .$product_type_id[0]. "_" . $param_name;

                    $parameter_type = $patam->parameter_type;
                    $param_type[$i] = $parameter_type;
                    $parameter_multiselect[$i] = $patam->parameter_multiselect;
                    $parameter_name[$i] = $patam->parameter_name;

В таком случае параметры (без допустимых значений)  отображаются в модуле, но поиск идет не верно. Либо все товары, либо ни одного
« Последнее редактирование: 28.02.2012, 16:32:52 от spyweb »
*

Arkadiy

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

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

Автор bork

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

Автор 4kict

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

Автор Grig2009

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

Автор aleks_yug

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

Автор zzaj

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