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

Shurik-N21

  • Новичок
  • 8
  • 0 / 0
В общем на сайте www.babymir.by если заказываешь товар, то в корзине при оформлении на странице АДРЕС ДОСТАВКИ нажимаешь кнопку Следующий, перезагружает страницу и не дает пройти к следующему пункту.
Вот только сейчас друг через Оперу пробовал - все нормально, у меня через Mozilla в упор не хочет пропускать дальше, в чем может быть беда?

В файле .htaccess добавлял

RewriteEngine On
RewriteCond %{HTTP_HOST} ^babymir.by$ [NC]
RewriteRule (.*) http://www.babymir.by/$1 [L,R=301]

Может ли глюк быть из-за этих строк, потому как без них, даже не впускает в корзину, а пишет при нажатии корзины, что она пуста...

Можно ли сделать что-то, чтобы корзина работала нормально?
« Последнее редактирование: 23.03.2013, 12:19:03 от Shurik-N21 »
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Вы не обратили внимание, что у вас на 1-м шаге нет Контактной информации плательщика?
Попробуйте:
\administrator\components\com_virtuemart\classes\ps_checkout.php
function display_address (примерно со стр.737)
закомментируйте эти 2 строки:
$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code) ";
$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";

И удалите из "Пользователей" юзера с логином test22, иначе точно работать не будет.
Веб-разработка: заказ. Только новая разработка.
*

Shurik-N21

  • Новичок
  • 8
  • 0 / 0
Вы не обратили внимание, что у вас на 1-м шаге нет Контактной информации плательщика?
Попробуйте:
\administrator\components\com_virtuemart\classes\ps_checkout.php
function display_address (примерно со стр.737)
закомментируйте эти 2 строки:
$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code) ";
$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";

И удалите из "Пользователей" юзера с логином test22, иначе точно работать не будет.

Строки закоментировал - не помогло! К сожалению, даже удаление юзера test22  ;D ;D ;D не дало нужных результатов, в Мазилле все остается по-прежнему, просто перегружается страница и дальше не идет....

Может есть еще какие мысли?
« Последнее редактирование: 23.03.2013, 12:20:45 от Shurik-N21 »
*

fsv

  • Moderator
  • 2781
  • 411 / 2
В FF у вас ссылки без www, в Opera - с www.
Также не работает авторизация.
Что в Настройки VM, вкладка "Безопасность", в 2-х полях "Site URL" и "Адрес для защищённого режима" ? С www?

Веб-разработка: заказ. Только новая разработка.
*

Shurik-N21

  • Новичок
  • 8
  • 0 / 0
В FF у вас ссылки без www, в Opera - с www.
Также не работает авторизация.
Что в Настройки VM, вкладка "Безопасность", в 2-х полях "Site URL" и "Адрес для защищённого режима" ? С www?



Все с www, но пробовал ставить и без WWW, но тогда кнопка ЗАКАЗАТЬ не нажимается - "круговая порука" получается :(

Пробовал после покупки убрать WWW все равно только перегружается страница и все тут...
С авторизацией вроде все ГУД, есть test22 и test23
« Последнее редактирование: 23.03.2013, 18:57:30 от Shurik-N21 »
*

Shurik-N21

  • Новичок
  • 8
  • 0 / 0
Чтони у кого никаких мыслей?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Варианты доставки есть?
Все файлы VM - оригинальные?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Shurik-N21

  • Новичок
  • 8
  • 0 / 0
Варианты доставки есть?
Все файлы VM - оригинальные?

Да 3 варианта доставки, через  Оперу можно нормально заказывать, вот только Mozilla что-то не хочет с вируемартом дружить (((
Файлы VM я менял для улучшения SEO...поэтому тяжело их назвать оригинальными...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
На Opera не выводятся варианты доставки и, естественно, выбирать не из чего. На FF и вовсе не переходит во 2-й шаг.
Мне кажется, проблема в негратмотном подпиливании файлов.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Уведомление на 2 почтовых ящика при заказе товара.

Автор M.Imperator

Ответов: 35
Просмотров: 25676
Последний ответ 10.07.2019, 17:43:33
от hmr
Слетело оформление заказов VirtueMart 1.1.8

Автор Zegeberg

Ответов: 0
Просмотров: 3196
Последний ответ 24.01.2017, 12:35:57
от Zegeberg
Добавить категорию товара в уведомлении о заказе. Решено

Автор niggatub

Ответов: 7
Просмотров: 4645
Последний ответ 14.07.2015, 11:30:29
от FlahsAxel
Форма регистрации в VirtueMart 1.1.9 с reCaptcha

Автор sa1981

Ответов: 5
Просмотров: 4623
Последний ответ 10.02.2015, 22:53:51
от flyingspook
Ищу партнерку для VirtueMart

Автор nick71

Ответов: 21
Просмотров: 11593
Последний ответ 01.02.2015, 10:51:34
от Zoich