Новости 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 Пользователей и 2 Гостей просматривают эту тему.
  • 484 Ответов
  • 183079 Просмотров
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #211 : 08.04.2010, 09:52:50 »
не подскажете, как это поправить?
TreeId в роутере не обрабатывается - дописывайте. про модуль ничего сказать не могу.
*

MaJIb4iK

  • Захожу иногда
  • 116
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #212 : 08.04.2010, 18:30:44 »
TreeId в роутере не обрабатывается - дописывайте. про модуль ничего сказать не могу.

А что нужно прописать в роутере, чтобы обрабатывалось TreeId
Проштудировал форум, но ответа не нашел, а сам не силен в этом. Помогите, пожалуйста, очень нужно
*

beagler

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

MaJIb4iK

  • Захожу иногда
  • 116
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #214 : 08.04.2010, 21:08:21 »
Спасибо Вам огромное. Теперь все отлично работает. Вы меня очень выручили!
Респект :D
P.S. хорошо, что мир не без добрых людей!
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #215 : 11.04.2010, 14:52:17 »
я опять про rokvmcategories
заметил еще одну фишку.
когда роутера в папке нету, то в rokvmcategories выделена текущая категория, а когда обратно вставишь, то не выделяет
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #217 : 11.04.2010, 15:12:36 »
Цитата: schel4ok
так что всё-таки делать с этой проклятой страницей вопроса о цене shop.ask?
может кому пригодится решение: http://joomlaforum.ru/index.php/topic,87400.msg592045.html#msg592045
этот нифига не решение
оно заменяет абракадабру
/shop/enquiry/283/razdvignaya-steklyannaya-dver-s-furnituroy-otkritogo-tipa.html?subject=%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%3A+
на текст
/shop/enquiry/287/steklyannaya-dushevaya-kabinka-s-raspashnoy-dveryu.html?subject=Заказать:+
причем зачем :+ ваще непонятно

но при нажатии всё равно выбрасывает на страницу с текстом # Извините, но запрошенный товар не найден! #
и в верхней строке браузера такая ссылка http://steklo-group/shop/category/?keyword=&limitstart=
« Последнее редактирование: 11.04.2010, 15:17:40 от schel4ok »
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #218 : 11.04.2010, 15:14:40 »
видимо, теряется itemid
вот как выглядит ссылка в rokvmcategories      
$link = JRoute::_('index.php?option=com_virtuemart&page=shop.browse&category_id=' . $category_id . $item_id . "&TreeId=$tree_id");

удалил роутер из папки
ссылки в rokvmcategories выглядят так  shop.html?page=shop.browse&category_id=78&TreeId=2

то есть item_id ваще куда-то делось
где его хоть искать то?
« Последнее редактирование: 11.04.2010, 15:28:54 от schel4ok »
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #219 : 11.04.2010, 15:30:22 »
$item_id формируется вот так
$item_id = '&Itemid=' . $sess->getShopItemid();

может тут что-то поменять надо?
*

beagler

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

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #221 : 11.04.2010, 20:18:51 »
да тут всё нормально
$link = JRoute::_('index.php?option=com_virtuemart&page=shop.browse&category_id=' . $category_id . $item_id . "&TreeId=$tree_id");
а      $item_id = '&Itemid=' . $sess->getShopItemid();

то есть на выходе будет 'index.php?option=com_virtuemart&page=shop.browse&category_id=' . $category_id . '&Itemid=' . $sess->getShopItemid(). "&TreeId=$tree_id"

значит что то не так с $sess->getShopItemid()

а TreeId это вообще просто счетчик - я вложил helper.php из rokvmcategories   

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

rtzra

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #222 : 12.04.2010, 15:15:01 »
Маленькое дополнение к выложенному в шапке router.php from Beagler - переделанный роутер от E-FusionSoft Technologies.
У меня в наименованиях товаров встречаются двойные кавычки. Дабы по этой причине не получать обрезанную ссылку, надо добавить в самый конец функции function vm_translate($title) следующее:
Код: php
, '\\'=>'', '"'=>''
*

matiass

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #223 : 14.04.2010, 21:57:31 »
А есть возможность вообще убрать расширение HTML в конце?
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #224 : 14.04.2010, 23:27:38 »
ну отключи добавку суффикса в общих настройках Joomla
*

voodoomaniac

  • Захожу иногда
  • 75
  • 4 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #225 : 15.04.2010, 21:44:28 »
Не знаю из-за роутера или нет, но не могу прикрепить файл для скачивания к товару. Файл - pdf документ, который доступен для всех. При добавлении файла он отображается в детальном описании товара, но ссылка на него имеет вид http://мой сайт/tovari.html?file_id=44&product_id=123 и естественно ничего не скачивается. Помогите пожалуйста разобраться! Очень не хочется вручную делать ссылки!
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #226 : 18.04.2010, 00:04:34 »
Роутер работает отлично, но при заходе на "оформить заказ" выдает ошибку 404. Проштудировал всю тему, вроде бы решение заменить строчки в chekout.index.php
shop.cart.tpl.php
basket.php
Заменил строчки, но ошибка не пропала.
Если отключить СЕО, оформить заказ работает, но роутер тогда не работает)
Хелп)
готов оплатить решение проблемы...плюс еще несколько проблем...
« Последнее редактирование: 21.04.2010, 13:08:28 от alekseysch »
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #227 : 21.04.2010, 22:32:58 »
поставил на сайт прайс-лист page=shop.pricelist
и не могу заставить его работать при включенном роутере

добавил в роутер
      case 'shop.pricelist':
         $segments[] = 'shop-pricelist';      
      break;      

ссылка поменялась на www.mysite.ru/shop/shop-pricelist.html
но ведёт на корень магазина, а не на прайс
изначально ссылка имеет вид  /index.php?option=com_virtuemart&page=shop.pricelist&Itemid=xx

помогите, кто может

[вложение удалено Администратором]
« Последнее редактирование: 23.04.2010, 11:44:37 от schel4ok »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #229 : 22.04.2010, 07:25:07 »
Не знаю из-за роутера или нет, но не могу прикрепить файл для скачивания к товару. Файл - pdf документ, который доступен для всех. При добавлении файла он отображается в детальном описании товара, но ссылка на него имеет вид http://мой сайт/tovari.html?file_id=44&product_id=123 и естественно ничего не скачивается. Помогите пожалуйста разобраться! Очень не хочется вручную делать ссылки!

Люди! таже проблема. Как решить, подскажите, пожалуйстаик...
Лю
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #230 : 22.04.2010, 07:30:48 »
Все, не надо хелпа. Сам решил. Научил роутер обрабатывать page=shop.getfile . роутер фром Beagler кстати.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

beagler

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

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #232 : 22.04.2010, 12:27:38 »
Значит поправил роутер from Beagler - переделанный роутер от E-FusionSoft Technologies. Косяк был в том что прикрепленные к товару файлы не открывались(неверная ссылка формировалась)
Решение: в начале файла именуем еще одну константу:
define('PAGE_GET_FILE','getfile');
далее в блок switch ($page)
добовляем еще один кейс:

      case 'shop.getfile':
         $segments[] =PAGE_GET_FILE;
      break;


ну и наконец в блок switch($firstSegment) добавляем

      case PAGE_GET_FILE:
         $vars['page'] = "shop.getfile";
      break;
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Headliner

  • Новичок
  • 9
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #233 : 22.04.2010, 18:57:09 »

Для того, чтобы роутер заработал в модулях ссылки должна вызываться через JRoute::_(), а не через sefRelToAbs()



Тут можно поподробнее? Если не сложно, напишите что нужно сделать....чтобы заработало, просто столкнулся с такой проблемой.
*

style.ilya

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
  • http://dreambikes.ru
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #236 : 25.04.2010, 00:09:11 »
beagler

Огромное спасибо за роутер!

На локал хосте все работает отлично. Выложил файл router.php на хостинг и теперь сайт вообще не работает.
Пишет
Fatal error: Call to undefined function: mb_strtolower() in /home/dreambikes/dreambikes.ru/docs/components/com_virtuemart/router.php on line 531

...........

Добавление.

Так..поискал тут в поиске...переименовал mb_strtolower на strtolower. Теперь все работает вроде. Надеюсь так и будет)

А что это за mb_strtolower ?
« Последнее редактирование: 25.04.2010, 01:10:12 от style.ilya »
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #238 : 25.04.2010, 11:44:38 »
помогите, кто может
Посмотрел - всё правильно. Попробуйте вместо "shop-pricelist" использовать, например, "pricelist" или "shoppricelist" или "shop:pricelist"
*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #239 : 25.04.2010, 14:21:34 »
точно всё дело было в чёрточке!
спасиб
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос с 1.5 на 3.5 + VirtueMart

Автор andrey488

Ответов: 4
Просмотров: 4016
Последний ответ 07.03.2017, 01:19:33
от SeBun
Проблема с установкой VirtueMart 1.1.4

Автор Tell

Ответов: 10
Просмотров: 8433
Последний ответ 02.01.2017, 17:28:01
от pomogu_chem_smogu
Проблемы с установкой VirtueMart

Автор inka

Ответов: 14
Просмотров: 9188
Последний ответ 03.09.2015, 01:44:49
от Amigos
mod VirtueMart latestprod способствовал появлению белого экрана

Автор smogrom

Ответов: 21
Просмотров: 4667
Последний ответ 15.01.2015, 11:50:23
от Schumaker
Русификация VirtueMart. Как ее сделать?

Автор Koriolan

Ответов: 52
Просмотров: 56487
Последний ответ 05.11.2014, 15:37:43
от Jiggy