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

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
Кто знает что делать. При нажатии кнопки "оформить заказ - выбрасывает на главную. Не могу понять что делать. Такое встречается у многих. Возможно кто-то нашел решение? !
« Последнее редактирование: 22.02.2010, 16:48:35 от San-A »
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
Большое спасибо за ответ, хочу уточнить.
в админке в настройке vm адреса сайта http и https должны быть одинаковыми и поставь галку подавлять соединение через https
Где именно в админке ВМ это нужно менять, настройки - вкладка "сайт", там такого нету. Можно уточнить по-пункто для чайников, заранее спасибо!
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
вкладка "Безопасность" - Site URL и Адрес для защищённого режима
галка - "Обычно предотвращать соединение по протоколу https?"

Большое спасибо, но Это не помогает. У меня все стоит так, как нужно. Любые другие комбинации тоже эффекта не дают.
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
Ошибку дает ту, что описана в моем вотпросе ниже по ветке. Появилось все это одновременно. Возможно оно связано. :(
*

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
На сколько понял, ошибка связана с компонентом sh404SEF. И в часности с конфигурацией файла .htaccess, более подробно можно почитать в мануале которій присутствует в sh404SEF. Когда пойму как исправить ошибку, обязательно напишу..
*

San-A

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • VM - 1.1.3, joomla - 1.5.10
Проблема решена!
1.
......

3.) Выбираем в VM  настройки - далее "сайт" - далее"настройки шаблона" - ставим "default"
4.) заходим там же в настройки шаблона "default" и там
Open Product Images in a LightBox?    Yes No
Customer Checkout in a popup (GreyBox)?    Yes No
Use AJAX to add, update or delete products from the cart?    Yes No
....

2. Далее о настройках - в настройках JM сделать следующее:

Включить SEO                       Да
Использовать mod_rewrite     Да
Добавить суффикс к URL       Да
Естественно не забыть в корень кинуть файл .htaccess
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Файл checkout.index.php

Строка 272

код
Код
$basket_html .= '<form action="'. SECUREURL.basename($_SERVER['PHP_SELF']).'" method="post" name="adminForm">
 
 <input type="hidden" name="option" value="com_virtuemart" />
 <input type="hidden" name="Itemid" value="'. $Itemid .'" />
 <input type="hidden" name="user_id" value="'. $auth['user_id'] .'" />
 <input type="hidden" name="page" value="'. $next_page .'" />
 <input type="hidden" name="func" value="checkoutProcess" />
 
 <input type="hidden" name="zone_qty" value="'. $zone_qty .'" />
 <input type="hidden" name="ship_to_info_id" value="'. $ship_to_info_id .'" />
 <input type="hidden" name="shipping_rate_id" value="'. urlencode($shipping_rate_id).'" />
 <input type="hidden" name="payment_method_id" value="'. $payment_method_id .'" />
 <input type="hidden" name="checkout_last_step" value="'. $current_stage .'" />';

меняем на
Код
$basket_html .= '<form action="';
 $basket_html .= $mainframe->getCfg('live_site');;
 $basket_html .= '/index.php?page=checkout.index&option=com_virtuemart&Itemid=13&redirected=1&Itemid=13"';
 $basket_html .= ' method="post" name="adminForm">
 
 <input type="hidden" name="option" value="com_virtuemart" />
 <input type="hidden" name="Itemid" value="'. $Itemid .'" />
 <input type="hidden" name="user_id" value="'. $auth['user_id'] .'" />
 <input type="hidden" name="page" value="'. $next_page .'" />
 <input type="hidden" name="func" value="checkoutProcess" />
 
 <input type="hidden" name="zone_qty" value="'. $zone_qty .'" />
 <input type="hidden" name="ship_to_info_id" value="'. $ship_to_info_id .'" />
 <input type="hidden" name="shipping_rate_id" value="'. urlencode($shipping_rate_id).'" />
 <input type="hidden" name="payment_method_id" value="'. $payment_method_id .'" />
 <input type="hidden" name="checkout_last_step" value="'. $current_stage .'" />';

Решение взято от сюда http://blog.ifreework.org/?p=812
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
*

dark_star

  • Захожу иногда
  • 109
  • 7 / 0
НЕ помогает совсем.
Причем в Firefox все нормально, а вот в Chrome и Opera никак. Перекидывает опять на форму заполнения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Изображение и ссылка на товар в теле письма о заказе

Автор zmancer

Ответов: 18
Просмотров: 11242
Последний ответ 11.03.2016, 22:28:28
от Pustota
Добавить категорию товара в уведомлении о заказе. Решено

Автор niggatub

Ответов: 7
Просмотров: 4646
Последний ответ 14.07.2015, 11:30:29
от FlahsAxel
[Решено] VirtueMart не отправляет письма активации пользователя или заказа

Автор akunari

Ответов: 17
Просмотров: 20585
Последний ответ 19.09.2014, 13:34:15
от frenzy
Не работают кнопки "Обновить" и "Удалить" в корзине

Автор borzometr

Ответов: 19
Просмотров: 9930
Последний ответ 01.07.2014, 11:33:49
от DlMON
Повторный заказ из личного кабинета

Автор Juseppe

Ответов: 3
Просмотров: 1881
Последний ответ 05.06.2014, 13:54:47
от fsv