Новости 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 Ответов
  • 8194 Просмотров
*

phaestos

  • Новичок
  • 3
  • 0 / 0
VirtueMart 1.1.2 stable
« : 27.10.2008, 16:42:34 »
Доброго времени суток уважаемые посетители форума.
Вынужден обратиться к Вам за помощью;
моя пролемма заключается в следуюющем:
поставил себе joomla 1.5.7 и прикрутил к ней магазин VirtueMart 1.1.2 stable
Все нормально, работает, только в управлении учетной записью (VirtueMart) в информации о заказам, там где расположена дата заказа, вместо месяца отображаются крякозяблы (Дата заказа: 27. ������� 2008).
Помогите в решении данной проблеммы.

Платформа:       Windows NT USER-4F92F4202C 5.1 build 2600
Версия MySQL:    5.0.51b-community
Сравнение БД:    utf8_general_ci
Версия PHP:    5.2.6
Вэб-сервер:    Apache/2.0.63 (Win32) PHP/5.2.6
Интерфейс вэб-сервер -> PHP:    apache2handler
Версия Joomla:    Joomla! 1.5.7 Production/Stable [ Wovusani ] 9-September-2008 23:00 GMT

Re: VirtueMart 1.1.2 stable
« Ответ #1 : 27.10.2008, 17:55:26 »
Проблема один в один.
*

phaestos

  • Новичок
  • 3
  • 0 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #2 : 27.10.2008, 18:16:59 »
Изменил полное название месяца которое отображалась крякозяблами в учетной записи покупателя на номер месяца:
открываем файлик с названием - ps_order.php (\administrator\components\com_virtuemart\classes\)
ищем строку:
$tmp_cell = "<strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_DATE').":</strong> " . strftime("%d. %B %Y", $db->f("cdate"));
и меняем:
$tmp_cell = "<strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_DATE').":</strong> " . strftime("%d.%m.%Y", $db->f("cdate"));

и соответственно в админ панели по заказам - order.order_list.php (\administrator\components\com_virtuemart\html\)
ищем:
// Creation Date
$listObj->addCell( strftime("%d-%b-%y %H:%M", $db->f("cdate")));
// Last Modified Date
$listObj->addCell( strftime("%d-%b-%y %H:%M", $db->f("mdate")));
и меняем:
// Creation Date
$listObj->addCell( strftime("%d-%m-%y %H:%M", $db->f("cdate")));
// Last Modified Date
$listObj->addCell( strftime("%d-%m-%y %H:%M", $db->f("mdate")));
« Последнее редактирование: 27.10.2008, 18:31:20 от phaestos »
*

mi84

  • Осваиваюсь на форуме
  • 19
  • 3 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #3 : 16.11.2008, 22:37:19 »
не помогает
*

Mirsaytov

  • Захожу иногда
  • 57
  • 16 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #4 : 16.11.2008, 23:13:05 »
Изменение приведенных выше файлов действительно не помогло, соответственно дата заказа берется из других файлов, кто-нибудь знает из каких?
*

leonman

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #5 : 04.12.2008, 11:26:39 »
Ну что, так и не нашлось решение этой проблемы?

У меня на Joomla 1.5.8 + Virtuemart 1.1.2 все то же самое.

Ждем советов от знатоков.
*

Mirsaytov

  • Захожу иногда
  • 57
  • 16 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #6 : 04.12.2008, 13:02:33 »
в настройках магазина (Информация о магазине) нужно изменить формат даты, например на такой %d.%m.%Y (01.01.2008)
*

leonman

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #7 : 10.12.2008, 16:05:06 »
Сделал, как посоветовал "Mirsaytov".
Спасибо, что отликнулся.
Но отображение даты поменялось не везде, остались места где остались крякозяблы (см.вложения).

[вложение удалено Администратором]
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: VirtueMart 1.1.2 stable
« Ответ #8 : 12.12.2008, 11:04:06 »
Сделал, как посоветовал "Mirsaytov".
Спасибо, что отликнулся.
Но отображение даты поменялось не везде, остались места где остались крякозяблы (см.вложения).

1-я картинка. Меняется в administrator/components/com_virtuemart/html/order.order_list.php. Искать вызов strftime.
2-я картинка. Меняется в administrator/components/com_virtuemart/html/order.order_print.php. Искать vmFormatDate( $dbpm->f("order_payment_expire"), '%b-%Y');
FAQ смотрел? Версию указал?
*

flier

  • Захожу иногда
  • 107
  • 2 / 2
Re: VirtueMart 1.1.2 stable
« Ответ #9 : 01.04.2010, 11:21:02 »
Как сделать чтобы в письме заказа отображалось по мимо даты еще и время заказа?

Информация о заказе

Номер заказа: 6
Дата заказа: Четверг, 01 Апреля 2010 Вот сюда время поставить надо
Статус заказа: Новый
 
Информация о клиенте
......
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Re: VirtueMart 1.1.2 stable
« Ответ #10 : 13.04.2010, 14:02:45 »
Как русифицировать названия месяцев и дней недели?
Нашел в файле ext-all.js названия на англ., переписал на русский, а письма все равно с англ. названиями приходят.
Где они еще находятся?

Как сделать чтобы в письме заказа отображалось по мимо даты еще и время заказа?

Информация о заказе

Номер заказа: 6
Дата заказа: Четверг, 01 Апреля 2010 Вот сюда время поставить надо
Статус заказа: Новый
 
Информация о клиенте
......
Надо в файл confirmation_email.tpl.php поставить что-то типа <?php echo $order_время ?>
Там где-то вроде есть что-то про время. но точно не знаю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Активный пункт mainmenu для категории VirtueMart

Автор sashgera

Ответов: 11
Просмотров: 3370
Последний ответ 13.08.2020, 16:43:22
от sivers
Как вставить в середину статьи на странице категорию товара магазина Virtuemart 1.1.2

Автор malalex

Ответов: 7
Просмотров: 9678
Последний ответ 24.08.2015, 01:01:23
от trubiser
Русский языковой файл для VirtueMart

Автор tug

Ответов: 162
Просмотров: 126592
Последний ответ 29.06.2013, 08:40:41
от uralmas
Мануал по VirtueMart на русском

Автор Magam

Ответов: 9
Просмотров: 21275
Последний ответ 30.01.2013, 12:24:50
от Diviz
Решение проблем с кириллицей в Virtuemart 1.1.x

Автор nikonor

Ответов: 86
Просмотров: 64179
Последний ответ 12.12.2012, 19:02:53
от gelx