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

s081081

  • Захожу иногда
  • 111
  • 0 / 0
Поля заполняемые пользователем
Как выбрать один из регионов в поле state по умолчанию, например "Москва"
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Предлагаемое решение предполагает, что вы хотите установить регион по умолчанию при регистрации пользователя регионом местонахождения интернет-магазина, указанного в «Информации о магазине».

\administrator\components\com_virtuemart\classes\ps_html.php

в стр.278 добавить $vendor_state_name и  $vendor_state,
соответственно, эта строка приобретет вид:
global $vendor_country_3_code, $VM_LANG, $vm_mainframe, $mm_action_url, $page, $vendor_state_name, $vendor_state;

стр.317
$script .= "states[".$i++."] = new Array( '".$country_3_code."','',' -= ".$VM_LANG->_('PHPSHOP_SELECT')." =-' );\n";

изменить на:
$script .= "states[".$i++."] = new Array( '".$country_3_code."','".$vendor_state."','".$vendor_state_name."' );\n";


« Последнее редактирование: 26.08.2011, 13:13:12 от fsv »
Веб-разработка: заказ. Только новая разработка.
*

s081081

  • Захожу иногда
  • 111
  • 0 / 0
Отлично! Спасибо Работает То что доктор прописал! +1  :-*
*

s081081

  • Захожу иногда
  • 111
  • 0 / 0
По умолчанию выбирается, но на странице доставки пишет
Уведомления:

    Ваша область не установлена! Укажите область доставки.
    Расчет доставки посылкой невозможен!

Можно ли убрать данное сообщение?
*

s081081

  • Захожу иногда
  • 111
  • 0 / 0
Подскажите пожалуйста какой файл отвечает за вывод страницы выбора доставки?
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Да, промазал... ^-^
Вверху поправил.
Обратите внимание, что изменение не только в стр.317, но и в 278.

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

s081081

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

shaman3452

  • Новичок
  • 3
  • 0 / 0
Доброго времени суток! Помогите пожалуйста в непонятной мне проблеме... При оформлении заказа не выбирается область/регион. Т.е. кнопка выбрать есть, а регионы не показывает. Сначала все работало и вдруг перестало!?
*

fsv

  • Moderator
  • 2781
  • 411 / 2
При оформлении заказа не выбирается область/регион. Т.е. кнопка выбрать есть, а регионы не показывает. Сначала все работало и вдруг перестало!?
Так не бывает. Вспоминайте, что меняли на сайте. Даже если это, на ваш взгляд, вообще к регионам никаким боком. Как вспомните, отключите "это" и проверьте регионы.
Ссылка на сайт (на страницу с неработающими регионами)?
Веб-разработка: заказ. Только новая разработка.
*

shaman3452

  • Новичок
  • 3
  • 0 / 0
Спасибо за ответ! Проблема была в конфликте с библой JQuery... отключил, и все заработало
*

PoMkA

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Помогите начинающему.
Не могу выбрать "Область/Регион" в разделе "Контактная информация" магазина. Есть эти разделы походу только в РФ, а в других странах не отображается(((
Как добавить?
Joomla! 2.5.18, VirtueMart.2.0.26.
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Вопросы по VM2 задавайте в ветке VM2.

а в других странах не отображается
В каких "в других"?
Выберите страну, сохраните. Регионы появились?
Если "нет": в базе (#__virtuemart_states) они есть у вашей страны? => добавьте.
Веб-разработка: заказ. Только новая разработка.
*

PoMkA

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Нужны регионы Украины.
Подскажите как просмотреть базу и как добавить.
Сорри за "глупые" вопросы, просто я сам для себя пытаюсь сделать, а столкнулся впервые.
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Нужны регионы Украины.
Подскажите как просмотреть базу и как добавить.
http://joomlaforum.ru/index.php/topic,283911.msg1415345.html
Веб-разработка: заказ. Только новая разработка.
*

PoMkA

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как можно выставить одну страну по умолчанию?

Автор accept2008

Ответов: 7
Просмотров: 4538
Последний ответ 10.11.2017, 00:56:06
от grigkh
настраиваю «покупку без регистрации» - требует регистрацию!

Автор Наташа

Ответов: 8
Просмотров: 6292
Последний ответ 14.10.2015, 14:27:43
от fsv
Новая строка в textarea при регистрации пользователя

Автор refoxter

Ответов: 0
Просмотров: 3507
Последний ответ 03.03.2015, 11:06:49
от refoxter
Форма регистрации в VirtueMart 1.1.9 с reCaptcha

Автор sa1981

Ответов: 5
Просмотров: 4615
Последний ответ 10.02.2015, 22:53:51
от flyingspook
[Решено] VirtueMart не отправляет письма активации пользователя или заказа

Автор akunari

Ответов: 17
Просмотров: 20576
Последний ответ 19.09.2014, 13:34:15
от frenzy