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

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
Здравствуйте многоуважаемые гуру.
Подскажите как вывести в админку поле характеристики ? В версии 3,14 джумшопинга есть возможность указывать характеристики для одного выбранного товара нажатием кнопки изменить. Проделав тоже самое и указав несколько товаров поле "характеристики" из "карточки"товара пропадает.
  Следовательно нельзя двум - трём товарам придать одну характеристику или опцию.(( Это очень неудобно на стадии создания базы товаров.
 Я импортировал прайс по категориям,  и могу выбрать производителя для целого списка товаров в админке просто отфильтровав их по поиску
например - выбрал категорию - Ноутбуки, указал в графе "Поиск"  - "Tosh" и мне фильтруются все ноутбуки фирмы Toshiba,  жму галочку выделить все - далее кнопку изменить - и указываю производителя для них всех. очень удобно.
  А вот с характеристиками такой лафы нетути  :'(
 Что можно сделать ? куда копать ? я так предполагаю что за вывод графы характеристики в свойствах товара отвечает строка со значение class="product_extra_fields open"
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Вопрос намного глубже чем Вы думаете.
1. характеристики могут задаваться не всем, а некоторым категориям. Т.е. надо делать проверку, чтобы Вы характеристику для категории кастрюль не назначили процессорам. Вы ведь можете выбрать разные товары
2. значения через множественное редактирование перезаписываются, а не добавляются. Т.е. если Вы выбирите 1 опцию, потом захотите добавить еще 1, то надо будет отмечать все + 1 новая.
3. автоматически встает вопрос невозможности нормального  обновления ЖШ из за хака ядра.

Совет Вам правильно давали: любой платный импорт позволяет решить такой вопрос без правки кода и бубна, задавайте все что надо товару, импорт все пропишет.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
1. Вот я имею ввиду как раз изменение характеристик в рамках одной категории
2. не проблема, захочу добавить - добавлю, ведь по отношению к одному товару добавление характеристики  - не есть проблема, либо затруднительное действие, верно?
3.  апдейт я не предполагаю проводить - потому как магазин  - продукт разовый, сделал - отдал. Проблема стоит остро на стадии создания и набивки базы тоавров. Когда товаров под 4000)))
 Я ведь предлагаю лишь улучшение обсудить, мы ведь для того здесь и рожаем мысли, идеи. Неужели никто с этой проблемой не сталкивался? Перекопал весь форум а ответа не нашёл. Пытался достучатся - тишина. Ещё и лейбу спамера заработал.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
:)
...... Я ведь предлагаю лишь улучшение обсудить, мы ведь для того здесь и рожаем мысли, идеи......
не спамера а нарушителя правил. были бы спамером, были бы на водных процедурах ;)
1 вопрос обсуждается в 1 теме.

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

то что предлагаете мы услышали. вам и ответили, по крайней мере я, как думал...
забавно задать вопрос вы можете, а на ответы реагируете как будто они не нужны были... или говорят о том, что вы неправы.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
не спамера а нарушителя правил. - хоть вы меня точно охарактеризовали,  а то дама ляпнула и не попала в суть
забавно задать вопрос вы можете, а на ответы реагируете как будто они не нужны были... ответ не тот, я спрашивал о возможности вывода характеристик для многих товаров одной категории в  админке, а мне про ивана - иди сынку не печаль нас своим мракобесием, не тараторь(это я про мой запрос в чужой теме) импорт тебе в помошь... как это мне отвты е нужны?  нужны . но по теме, по сути вопроса, тот что допиливать нужно я и сам в курсе, хотел бы знать какой файл пилить, и предложил где пилить, хотел узнать верно ли дружбу 2 нацелил..

 или говорят о том, что вы неправы.  - это вообще о чём? договаривайте
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
/administrator/components/com_jshopping/views/product_edit/tmpl/extrafields.php вью редактирования товара в админке

а то что вы указали класс.. это для вывода просто.
ну а дальше по MVC раскручивайте куда обращается что берет и куда передает.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
вот  спасибо, что и требовалось :D
*

kosta12

  • Новичок
  • 1
  • 0 / 0
Приходится каждую категорию экспортировать с определёнными характеристиками, потом забивать каждый товар в файле а затем импортировать.Это очень долго когда много товара. Более быстрые варианты существуют?
*

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
Гуру твердят что импорт нам поможет. Печально. Я тут начал копать в ту сторону, да видать все копки упираются в моё понимание MVC...  ^-^
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Это очень долго когда много товара. Более быстрые варианты существуют?
1килобакс и 10 студентов
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

chereushenko

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
и сразу как-то аж легче стало  ;D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться