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

JLP

  • Новичок
  • 8
  • 0 / 0
Есть ли плагин, который формирует договор и отсылает его на почту вместе с письмом, подтверждающим покупку?
Искала - не нашла. Пожалуйста, помогите

Или натолкните в нужном направлении, как сделать.
Получается, будет текст договора и в нужные позиции будут подставляться реквизиты заказчика.
Наподобие формирования счета в pdf

По итогу после покупки заказчику приходит письмо с его заказом, со счетом в pdf и с договором
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
По итогу после покупки заказчику приходит письмо с его заказом, со счетом в pdf и с договором
То есть можно создать дубликат счета и переоформить его, чтобы он выглядил как договор?
*

JLP

  • Новичок
  • 8
  • 0 / 0
То есть можно создать дубликат счета и переоформить его, чтобы он выглядил как договор?
Можно и так... Наверное и желательно чтобы так было.
Но я сделала проще: все в одном файле: сначала счет, затем разрыв страницы и договор.
Спасибо, что откликнулись) я думала, что вообще никто не напишет.

Появились некоторые вопросы, может кто поможет
1. Как убрать в pdf горизонтальную полоску вверху каждой страницы?
2. Как изменить формирование номера счета на более человеческий 0001, 0002, 0003, 0004, 0005 и т.д.?
3. [Решено] Как убрать в конце счета Дату, Состояния заказа и Комментарий? (invoice_history.php отвечает за вывод)
4. и возможно ли убрать нумерацию страниц "Page 1/3"?
« Последнее редактирование: 19.08.2013, 14:50:29 от JLP »
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
1. Нашли ли вы шаблон pdf для VM? Используете ли template override (я не знаю как это правильно на русском пишется)?
2. На форуме была тема как это решить - можете попробовать поискать.
4. Можно ссылку? Просто желательно найти соотвествующий файл шаблона для VM и просмотреть код в нем.
*

JLP

  • Новичок
  • 8
  • 0 / 0
1. Нашли ли вы шаблон pdf для VM? Используете ли template override (я не знаю как это правильно на русском пишется)?
2. На форуме была тема как это решить - можете попробовать поискать.
4. Можно ссылку? Просто желательно найти соотвествующий файл шаблона для VM и просмотреть код в нем.

1. "Используете ли template override" - я такого не знаю

Содержимое pdf файла редактировала в след. файлах:
components/com_virtuemart/views/invoice/tmpl
invoice.php
invoice_history.php
invoice_items.php
invoice_order.php

2. Точно знаю, что на этом форуме есть решение, как сделать нормальный номер счета, и я его сейчас использую.
Но номер в pdf счете он другой. Что-то находила на зарубежных форумах, но номер счета все равно остается как и был.

3. Вот ссылка
http://teplotorg.webmedia.by/component/virtuemart/regulyatory-i-izmeriteli.html
Можете "купить" что-нибудь из этого раздела.
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
1. Не хочу вам рекомендовать английские статьи на эту тему. Но вам стоит попробовать эту технику при случае. Она позволит вам безболезненно обновлять VM при выходе новых версий этого компонента.

2. Искали ли вы в каком файле печатается номер счета в pdf? Также давайте сюда код с той темы, где правку номеров обсуждали.

4. В папке для категории посмотрите. Облегчит поиск если проинспектируете этот элемент FireBug.
*

JLP

  • Новичок
  • 8
  • 0 / 0
1. Не хочу вам рекомендовать английские статьи на эту тему. Но вам стоит попробовать эту технику при случае. Она позволит вам безболезненно обновлять VM при выходе новых версий этого компонента.

2. Искали ли вы в каком файле печатается номер счета в pdf? Также давайте сюда код с той темы, где правку номеров обсуждали.

4. В папке для категории посмотрите. Облегчит поиск если проинспектируете этот элемент FireBug.

1. Это Вы про то, что нужно файлы шаблонов virtuemart`a копировать в папку HTML и там их уже редактировать? Об этом знаю)

2. С номером счета почти разобралась. Просто в pdf файле вместо номера счета вывожу номер заказа. Можно считать, что этот вопрос решен.

Также разобралась как убрать в pdf горизонтальную полоску вверху каждой страницы и нумерацию страниц "Page 1/3"
За вывод Шапки в pdf (там где горизонтальная полоска, оказывается там еще выводится изображение и контактные данные продавца на каждой странице) и Футера (Нумерация страниц) отвечает файл libraries/tcpdf/tcpdf.php

protected $print_header = true; // приблизительно 676 строка - Шапка
protected $print_footer = true; // приблизительно 682 строка - Футер
Вместо true нужно указать false: "protected $print_header = false;"

Шапку убрала, только теперь на ее месте пустота (и в футере, но там выглядит более-менее нормально) в pdf файле.. и не знаю как его убрать.
Явно нужно копать в файле libraries/tcpdf/tcpdf.php, но там 28000 строк кода.. не просто. Пробовала наобум менять значения переменных на ноль, результатов никаких(

На счет FireBug.. Это же pdf файл, а не HTML страница) Иначе проблем не было бы.)

P.s. как вставлять скриншоты тут?
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Это же pdf файл, а не HTML страница) Иначе проблем не было бы.)
Может такое быть что pdf файл совпадает по виду с тем, что будет если начать печать invoice, или с тем invoice что присылается на почту. А тут можно было бы использовать FireBug.
*

Letsad

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
То есть можно создать дубликат счета и переоформить его, чтобы он выглядил как договор?
Как это сделать? Или где стандартный под новый вид редактируется?
*

JLP

  • Новичок
  • 8
  • 0 / 0
Как это сделать? Или где стандартный под новый вид редактируется?
Посмотрите новые версии Virtuemart`a. Там появилась отдельная вкладка с настройками (в админке VirtueMart - Магазин - Магазин - Вкладка Invoices/Emails). Я еще не пробовала, не было пока такой необходимости.
*

Letsad

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Новые, это серия 2,6? Пробовал, там при переходе много перенастраивать придется, лучше как-нибудь потом сразу на 3 версию. Подскажите, в VM2,0 что редактировали?
*

JLP

  • Новичок
  • 8
  • 0 / 0
Новые, это серия 2,6? Пробовал, там при переходе много перенастраивать придется, лучше как-нибудь потом сразу на 3 версию. Подскажите, в VM2,0 что редактировали?
Да.
Что редактировала.. год назад это было)) Смотрите выше мои сообщения, я там писала некоторые вещи
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart -- создание заказа

Автор mindguru

Ответов: 3
Просмотров: 1937
Последний ответ 02.11.2023, 13:59:05
от mindguru
VirtueMart 3 + Buy Me 1.4 Как убрать "Заказать в 1 клик" при осутствии товара?

Автор artem_wrong

Ответов: 2
Просмотров: 2725
Последний ответ 18.02.2022, 13:32:42
от artem_wrong
Передача сумы заказа в Google аналитику при покупке в 1 клик

Автор viper_demyan

Ответов: 5
Просмотров: 2881
Последний ответ 30.05.2020, 20:52:59
от draff
Где шаблон письма "уведомление о поступлении товара на склад"

Автор testaross

Ответов: 2
Просмотров: 4845
Последний ответ 03.10.2018, 15:44:51
от Dolphin4ik_1
Как сделатьвозможность предзаказа товара?

Автор sergspb

Ответов: 1
Просмотров: 938
Последний ответ 12.04.2018, 22:52:26
от fsv