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

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #240 : 25.04.2010, 15:58:56 »
у меня с роутером осталась проблема с кнопкой

Позвоните, чтобы узнать цену (переименовал в кнопку Заказать)
при выключенном роутере ссылка такая
/shop.html?page=shop.ask&product_id=284&subject=Заказать:+ (это в браузере при наведении - откуда взялось :+ не знаю)
/shop.html?page=shop.ask&product_id=284&subject=%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%3A+ (это в исходном коде)
при включенном роутере ссылка выглядит так
/shop/enquiry/161/komplekt-karetok-t-601/%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C-%20.html
но при нажатии ведёт по адресу /shop/category/?keyword=&limitstart=
# Извините, но запрошенный товар не найден!

сравнил со ссылкой
Задайте вопрос по этому товару
при выключенном роутере ссылка такая
/shop.html?page=shop.ask&flypage=flypage.tpl&product_id=284&category_id=76
при включенном роутере ссылка выглядит так
/shop/enquiry/71/161/komplekt-karetok-t-601.html

то есть в первом случае
1) куда-то теряется привязка к категории, хотя без роутера ссылка ведёт по нужному адресу и без категории
2) почему-то не удаляется параметр subject, хотя в роутере есть unset($query['subject']);
самое интересное, что 2 эти разные ссылки при выключенном роутере ведут на одну и ту же страницу с формой, в которой написано
"Заказать: Комплект кареток T-601"
« Последнее редактирование: 26.04.2010, 07:40:09 от schel4ok »
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #242 : 26.04.2010, 14:20:57 »
Заметил что роутер от beagler выдает два типа ссылок:
http://auto-tuner.ru/shop/details/98/13/parktroniki/multitroniks-pt-2tc.html
http://auto-tuner.ru/shop/details/98/multitroniks-pt-2tc.html
Открывается по этим двум ссылкам одна и та же страница.
Причем эта же страница открывается и по ссылке:
http://auto-tuner.ru/shop/details/98/13/multitroniks-pt-2tc.html,
хотя последнюю я в поисковиках не встречал, а первые две в яндексе есть.
В карте сайта созданной Xmap ссылки имеют только первый вид.
Возможно ли устранить это двоение? Кто-то сталкивался?
« Последнее редактирование: 26.04.2010, 17:57:22 от Autocom »
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #243 : 26.04.2010, 21:31:42 »
В поисках лучшего набрел на плагин vmSEF
Ссылки просто супер, даже без цифр, т.е. вида
http://autocomputer.ru/shop/parktroniki/multitroniks-pt-2tc.html
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #247 : 28.04.2010, 23:48:24 »
У меня так же как у Zabavsky. Завис наглухо во всех этих файлах. Применил метод вышеуказаный Zabavsky. Не помогает. Нид хелп.
смотрите как формируются ссылки в корзине - должны быть с JROUTE
если они не формируются с JROUTE то как это исправить?
в приложеном файле как сейчас  выглядит баскет.

index.php?page=checkout.index&option=com_virtuemart&Itemid=3&redirected=1&Itemid=3  так выглядит страница офрмления заказа при выключеном сео.

cart.html?page=checkout.index&ssl_redirect=1&option=com_virtuemart&Itemid=3  так при включеном сео и добавлении суфиксов

cart?page=checkout.index&ssl_redirect=1&option=com_virtuemart&Itemid=3   так при включеном сео и без добавления суфиксов.

Две последние ведут в ерор

[вложение удалено Администратором]
« Последнее редактирование: 29.04.2010, 00:56:02 от alekseysch »

Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #248 : 29.04.2010, 11:01:21 »
Доброго времени суток уважаемые знатоки. Прошу помочь в решении проблем начинающего.
joomla 1.5, VM 1.1.4.Скопировал роутер от Beagler, в папку www\ctk-solar.ru\components\com_virtuemart ,при загрузке страницы выдает сообщение такго вида =>
<a title="Солнечные батареи" href="
Fatal error: Call to undefined function mb_strtolower() in X:\home\localhost\www\ctk-solar.ru\components\com_virtuemart\router.php on line 531


Подумал дело в кодировке, index.php в корне сайта перекодировал в UTF8 теперь при заходе на главную страницу появляется это сообщение =>
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at X:\home\localhost\www\ctk-solar.ru\index.php:1) in X:\home\localhost\www\ctk-solar.ru\libraries\joomla\session\session.php on line 412
Warning: Cannot modify header information - headers already sent by (output started at X:\home\localhost\www\ctk-solar.ru\index.php:1) in X:\home\localhost\www\ctk-solar.ru\libraries\joomla\session\session.php on line 415
<a title="Солнечные батареи" href="
Fatal error: Call to undefined function mb_strtolower() in X:\home\localhost\www\ctk-solar.ru\components\com_virtuemart\router.php on line 531


Подскажите пожалуйста как исправить?
P.S."чтобы роутер заработал в модулях ссылки должна вызываться через JRoute::_(), а не через sefRelToAbs()" - Этот пункт не делал, т.к. непонял где конкретно менять (в какойм файле/настройке) эти значения?
« Последнее редактирование: 29.04.2010, 11:06:52 от Ruzarh »
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #249 : 29.04.2010, 16:43:01 »
то Ruzarh  У меня на денвере выдавало такую ошибку. Установил на хост - ошибки не стало. mb_strtolower включен на хосте.
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #250 : 29.04.2010, 22:30:33 »
в продолжение моей проблемы (см.выше)
Подумал, что может это из-за шаблона, он у меня не дефаулт, и изменил shop.cart.tpl.php в том шаблоне который стоит. Теперь ссылка на ерор имеет такой вид /ssl_redirect?&redirected=1&option=com_virtuemart&Itemid=3
Помогите  ! я не могу столько пить) Выпейте со мной пиваса!  *DRINK*
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #251 : 30.04.2010, 15:02:51 »

Как оказалось, у меня выключен SSL redirect. При его включении сайт наглухо зависает и ни на что не реагирует.
Вручную через фтп правил назад.
Х.з что делать дальше.
после всех изменений почему то стал криво показыватся сайт. Главная нормально, ссылка на любой товар - и уже все криво.

*

schel4ok

  • Захожу иногда
  • 219
  • 4 / 1
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #252 : 01.05.2010, 22:22:07 »
В поисках лучшего набрел на плагин vmSEF
Ссылки просто супер, даже без цифр, т.е. вида
http://autocomputer.ru/shop/parktroniki/multitroniks-pt-2tc.html

эта хрень работает в несколько раз медленнее, чем роутер от beagler
заметно невооруженным взглядом
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #253 : 02.05.2010, 00:15:27 »
после всех изменений почему то стал криво показыватся сайт. Главная нормально, ссылка на любой товар - и уже все криво.
оказалось я отключил плагин Система СЕФ. Но сколько же пришлось перелопатить, пока я до этого додумался)
Проблема с ССЛ редирект, оно же  ошибка при нажатии "оформить заказ" актуальна
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #254 : 02.05.2010, 00:57:07 »
Если честно, то я не верю, что я это сделал...
Итак, выбивало ошибку 404 при нажатие в корзине "оформить заказ"
Решение. Заходим в админку, отключаем СЕО. Заходим в корзину, нажимаем на "оформить заказ"
Заходим на первй этап оформления. Копируем адрес.
Открываем файл в В: /components/com_virtuemart/themes/default/templates/pages/shop.cart.tpl.php
Учтите вместо default - ваша тема!
меняем строчки
$href = $sess->url('index.php?page=checkout.index&ssl_redirect=1', true);
           $href2 = $sess->url( $mm_action_url . "/index2.php?page=checkout.index&ssl_redirect=1", true);
на
 $href = $sess->url('index.php?page=checkout.index&option=com_virtuemart&Itemid=3&redirected=1&Itemid=3', true);
           $href2 = $sess->url( $mm_action_url . "/index.php?page=checkout.index&option=com_virtuemart&Itemid=3&redirected=1&Itemid=3", true);
то есть на Ваш адресс этапа 1
Возвращаемся назад, включаем сео и вуаля!
Правда на следующем этапе при нажатии на "следующий" - снова эрор. Наверно снова надо править.
Кажется у меня был маленький оргазм ))))))
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #255 : 02.05.2010, 01:41:08 »
У меня все работает кроме флайпеджа товара. тое сть адреса ссылок категории такие
http://radiosila.ru/katalog/category/20/radiostantsii/27mgts/alan.html
а в товаре хвост хвостатый
http://radiosila.ru/php?page=shop.product_details&flypage=flypageforavtoracii.tpl&product_id=22&category_id=20&option=com_virtuemart&Itemid=127
((обидно блин..почти то что надо и облом!

Стоят: Joomla 1.15.14 и VirtueMart 1.1.14.
Плагинов нет чтобы конфликтовали с роутером. Все отключал специально. Хаков таких выдающихся нет, вроде..точно уже не помню, конечно, так то пришлось кое что подправить.
« Последнее редактирование: 02.05.2010, 12:57:49 от sinbad13 »
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #257 : 02.05.2010, 17:10:51 »
видимо, это происходит из-за flypage=flypageforavtoracii.tpl
Тогда получается если не родной флайпедж то роутер не работает? Неужели все используют родное название флайпеджа и ко всем товарам?) Может тогда добавить в роутере на замену те флайеры которые я добавил..надо попробывать
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #258 : 02.05.2010, 17:18:40 »
Хотя нет! Че это я торможу!)) У меня ведь и browse не родной для каталогов..я уже и поменял специально на flypage..не помогает..тем более что в роутере идет поиск флаеров независимо от их названия..загвоздка в чем то другом..

заметил такую штуку если товар положить в корзину и в ней нажать на товар, то выдаст вот такое http://radiosila.ru/katalog/details/27/20/radiostantsii/27mgts/alan/alan-77/120-esp2.html  yes!
не знаю радоваться тут или нет))

Во всем виновата вот эта фигня

http://radiosila.ru/php?page=shop.product_details&flypage=flypageforavtoracii.tpl&product_id=22&category_id=20&option=com_virtuemart&Itemid=127

Потому что по логике для правильной работы там должен стоять http://radiosila.ru/katalog.htm?page=shop.product_details&flypage=flypageforavtoracii.tpl&product_id=22&category_id=20&option=com_virtuemart&Itemid=127

Вот в корзине он стоит и поэтому ссылка правильная..нужно узнать как вызывается товар в корзине и прописать эту фигню во флаере..логика корзины где лежит, кто нибудь знает точно?)

Сам задал, сам отвечу))  в shop.basket_short.php...товар в shop.product_details.php..посмотрел их..бррррр..в дрожь взяло..что где менять непонятно пока) буду разбирать
« Последнее редактирование: 02.05.2010, 17:55:10 от sinbad13 »
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #259 : 04.05.2010, 12:35:01 »
Я устал ковырятся и поставил com_sh404SEF_1.5.9.434. На первый взгляд все нормально работает.
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #260 : 05.05.2010, 13:13:15 »
по случайной необходимости, которая не так уж и была)) пришлось перенести сайт с одного хоста на другой и поменять версию PHP и MYSQL с 4 на 5. После всего роутер выдает нормальные ссылки везде) так что товарищи вот где собака зарыта наверное..
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

matiass

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #261 : 07.05.2010, 12:46:34 »
Роутер отлично работает, но проблема с mod_virtuemart_manufacturers, через раз работают ссылки, подскажите как исправить?  Искал в файле модуля sefRelToAbs, не нашел. >:(
*

matiass

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #263 : 07.05.2010, 23:41:10 »
Подскажите чайнику ка исправить какие файлы рыть. Ссылка на производителя имет сейчас такой вид

magazin/products.html?manufacturer_id=583

когда перехожу по ней кидает на главную магазина и в строке адреса

index.php?manufacturer_id=583&vmcchk=1&option=com_virtuemart&Itemid=55
*

Sergio

  • Захожу иногда
  • 54
  • 22 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #265 : 08.05.2010, 13:37:32 »
Joomla 1.5.17, VirtueMart 1.1.4, плагин от beagler, mod rewrite включен, суффиксы отключены, htaccess имеется.

При попытки открыть прикрепленный файл в описании товара, выкидывает на главную магазина.
Проверено на двух сайтах с разными шаблонами. Где может быть засада?
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #266 : 08.05.2010, 18:43:40 »
Joomla 1.5.17, VirtueMart 1.1.4, плагин от beagler, mod rewrite включен, суффиксы отключены, htaccess имеется.

При попытки открыть прикрепленный файл в описании товара, выкидывает на главную магазина.
Проверено на двух сайтах с разными шаблонами. Где может быть засада?

такая же фигня..тоже хотел отписаться, не успел, опередили)) с выключенным роутером работает..значит надо его модифицировать для скачивания файла.
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #267 : 08.05.2010, 19:13:10 »
Решение проблемы уже описано. Смотреть надо а не задавать вопросы.
http://joomlaforum.ru/index.php/topic,50193.msg611939.html#msg611939
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergio

  • Захожу иногда
  • 54
  • 22 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #268 : 09.05.2010, 11:31:35 »
Решение проблемы уже описано...
Прошу прощения, не думал, что автор свою версию не подправил :-). И, спасибо.
*

alekseysch

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: SEF для VirtueMart (Joomla 1.5)
« Ответ #269 : 11.05.2010, 12:51:08 »
Сделал тоже самое. Тока этот роутер медленнее работает, чем роутер от beagler  :(.
он еще и хуже ссылки делает. но так как вариантов нет, никто даже за $(варианты-пиво) не хочет решать этот вопрос, то мать его так, пусть так будет)
Зато везде нормальные ссылки, и никаких ошибок)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос с 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