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

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Дочерние товары?
« : 08.05.2014, 14:34:23 »
День добрый. Интересует реализация дочерних товаров.
Например: есть основной товар "Майка". У товара есть фото.
У этого товара должны быть дочерние товары: "Майка из хлопка" и "Майка из синтетики".
А у дочерних товаров должен быть атрибут "Цвет". Ну и собсно сами цвета "Черный", "Серый", "Бежевый".
Картинку карточки товара прилагаю.
Вопрос - как такое реализовать? Joomla! 3.3.0   + Jshopping 4.3.3
Может есть какой-то способ реализовать такое с помощью Атрибутов и Характеристик товаров?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дочерние товары?
« Ответ #1 : 08.05.2014, 14:42:56 »
это и есть атрибуты
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #2 : 08.05.2014, 14:52:13 »
это и есть атрибуты
Так а как через атрибуты организовать подобие дочерних товаров?
Думаю что под каждый дочерние товар заводить новый атрибут - это не по феншую.
Да и как в атрибутах выводить описание, артикул товара?

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дочерние товары?
« Ответ #3 : 08.05.2014, 14:55:04 »
а как по феншую? артикул и фото можно задать разные атрибутам.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #4 : 08.05.2014, 15:05:59 »
а как по феншую? артикул и фото можно задать разные атрибутам.
Нда.... Не, так наверное не прокатит. Единственное что приходит в голову - сделать еще одну таблицу в Бд и в ней хранить связи товаров. Ну и в админку добавить зависимый select box для выбора категории, затем товара. Ну и потом уже подчинять товары.
Думаю так получится реализовать нужный мне функционал.
Или возможны какие-то подводные камни при таком подходе?

P.S А как шаблон админки управления товарами Jshopping вынести куда-то в отдельное пространство (например в myTemplateName/HTML) чтоб потом при обновлении не затереть добавленый код?
Как это сделать в обычных компонентах - знаю. А вот как а админке - никогда не встречал.
« Последнее редактирование: 08.05.2014, 15:09:09 от kerch »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дочерние товары?
« Ответ #5 : 08.05.2014, 15:27:26 »
Или возможны какие-то подводные камни при таком подходе?

ну так навскидку тяжело сказать. камней может быть много, надо делать и смотреть.

А как шаблон админки управления товарами Jshopping вынести куда-то в отдельное пространство (например в myTemplateName/HTML) чтоб потом при обновлении не затереть добавленый код?

все точно также как и на фронте, только в шаблоне админки
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #6 : 08.05.2014, 15:28:56 »
ну так навскидку тяжело сказать. камней может быть много, надо делать и смотреть.

все точно также как и на фронте, только в шаблоне админки
Спасибо. Буду пробовать.
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #7 : 08.05.2014, 15:47:17 »
А что-то не получается с шаблоном. Почему-то не подхватывается
Делаю так
administrator\templates\isis\html\com_jshopping\product_edit
В этой папке файл info.php
Вношу изменения, но они в панели не отображаются.
Может ошибка в структуре папок?
Подскажите пожалуйста.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дочерние товары?
« Ответ #8 : 08.05.2014, 16:01:59 »
нет, если шаблон isis то в структуре папок ошибки нет. ошибка в том, что info.php не является как таковым шаблоном, а на самом деле просто инклудится в default.php. вам нужно полностью все файлы копировать из product_edit
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #9 : 08.05.2014, 16:07:51 »
нет, если шаблон isis то в структуре папок ошибки нет. ошибка в том, что info.php не является как таковым шаблоном, а на самом деле просто инклудится в default.php. вам нужно полностью все файлы копировать из product_edit
Ага, получилось! Спасибо!
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #10 : 14.05.2014, 15:39:32 »
В админке настроил создание дочерних товаров.
Теперь в карточке надо как-то их вывести.
По идее должно быть что-то типа
$parent_product = $this->product($id);
В общем как получить объект товара по его ID ?
Пока не получается.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дочерние товары?
« Ответ #11 : 14.05.2014, 15:44:52 »
Код: php
$tProduct = JTable::getInstance('Product', 'jshop');
$tProduct->load(ID);
print_r($tProduct);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #12 : 14.05.2014, 15:49:03 »
Спасибо!
То что нужно!
*

kerch

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Дочерние товары?
« Ответ #13 : 14.05.2014, 17:04:23 »
А почему-то ничего не выводит
Код
print_r($tProduct->attributes);
Вот так работает
Код
print_r($tProduct->getAttributesDatas());
Но там на выходе очень не удобный массив с данными получается.
Может есть функция получить сразу массив атрибутов?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Товары с атрибутами которых нет в наличии добавляются в корзину

Автор Kadimp

Ответов: 16
Просмотров: 1079
Последний ответ 11.11.2018, 13:48:20
от Kadimp
Атрибуты товара = отдельные товары

Автор imd

Ответов: 5
Просмотров: 1030
Последний ответ 10.03.2017, 13:40:03
от dmitry_stas
Не сортируются товары

Автор master4go

Ответов: 4
Просмотров: 1094
Последний ответ 29.03.2015, 18:42:36
от master4go
Товары с разными расцветками

Автор comb5

Ответов: 4
Просмотров: 1322
Последний ответ 08.04.2014, 21:24:36
от comb5
Скрывать товары, если не т цены

Автор korvin23

Ответов: 2
Просмотров: 979
Последний ответ 23.03.2014, 00:14:34
от korvin23