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

aster

  • Новичок
  • 4
  • 0 / 0
Здравствуйте!
вот столкнулся с проблемой.сразу скажу,FAQ читал и не только сдесь, не встретил подобного...
Суть проблемы:
сайт пренес на другой хост, и на другой домен.все отлично стало, ошибок нет. НО, по адресу нового сайта к примеру
hxxp://новый_сайт.ru загружается только главная страница, при переходе в  любое меню меня переносит на мой старый домен к примеру hxxp://старый_сайт.com...сайт по старому адресу еще стоит и работает..
вот вопрос в чем причина, и почему он рвется на старый адресс? помогите плз разобратся,зарание благодарен!
« Последнее редактирование: 28.05.2009, 22:29:40 от Forget-me-not »
*

skysky

  • Осваиваюсь на форуме
  • 44
  • 1 / 0
Проверь конфиг + смени все записи в базе данных
*

aster

  • Новичок
  • 4
  • 0 / 0
конфиг уже до буквы проверен ^-^
>смени все записи в базе данных
  а вот про это не понял, какие записи именно,намекни пожалста)
*

skysky

  • Осваиваюсь на форуме
  • 44
  • 1 / 0
конфиг уже до буквы проверен ^-^
>смени все записи в базе данных
  а вот про это не понял, какие записи именно,намекни пожалста)
В дампе базы данных mysql замени все записи старый_сайт.com на новый_сайт.ru и восстанови базу, либо просто запросом через phpmyadmin произведи замену.
*

aster

  • Новичок
  • 4
  • 0 / 0
ааа, ну это я сделал еще до установки БД.
блин, что еще может быть то, может есть какие нить мысли?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
меню случайно не статикой в шаблоне (или другом файле) прописано?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

aster

  • Новичок
  • 4
  • 0 / 0
меню случайно не статикой в шаблоне (или другом файле) прописано?
мммм..я вот если чесно не понимаю самого вопроса)если ты имееш ввиду адреса в меню, то они начинаются без названия домена, начинаются с .index.php/и так далее, я проверил все
*

nomadap

  • Новичок
  • 9
  • 0 / 0
Здравствуйте!
Такая же проблема.
Joomla 1.5.10, VirtueMart 1.1.3

Был сайт на локальном сервере (Денвер) с доменом mysite.biz, купил домен mysite.ru.
Перенес на хостинг и точно также работала только первая страница.
Все остальные страницы вели на localhost/mysite.biz
На Денвере поиском нашел все упоминания и ссылки mysite.biz и переделал на mysite.ru.
Перезалил на хостинг-все заработало.

Но! Картинки товаров, меню на сайте и вся графика админской части
VirtueMart 1.1.3 не отображается.
Все ссылки в админской части VirtueMart 1.1.3 выкидывают на localhost/mysite.biz и
соответственно ничего не работает.

Нашел 4 таблицы в Бд в которых есть упоминания про mysite.biz.

D:\WebServers\usr\local\mysql5\data\mysite\jos_session.myd
D:\WebServers\usr\local\mysql5\data\mysite\jos_csvi_templates.myd
D:\WebServers\usr\local\mysql5\data\mysite\jos_acajoom_queue.myi
D:\WebServers\usr\local\mysql5\data\mysite\jos_acajoom_mailings.myd

Но если я в них меняю ссылки на mysite.ru. то вылетает такие ошибки

jtablesession::Store Failed
DB function failed with error number 126
Incorrect key file for table '.\mysite\jos_session.MYI'; try to repair it SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'f23cf59b2f3e322c9c88721659f1db0e','1243491257','','0','1','0' )

или

jtablesession::Store Failed
DB function failed with error number 145
Table '.\mysite\jos_session' is marked as crashed and should be repaired SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'f23cf59b2f3e322c9c88721659f1db0e','1243491332','','0','1','0' )

Ссылки менял в блокноте. skysky советует менять запросом в phpmyadmin или в дампе БД.
Как это сделать, подскажите пожалуйста, а то я в пхп и mysql пока ноль. :(
*

vagkrsk

  • Давно я тут
  • 731
  • 125 / 0
  • Дорогу осилит идущий
А Вы папку cache пустую переносили на новый сайт(хостинг)?
Попробуйте почистить весь кеш через панель управления на хостинге.

Ошибочка вышла, невнимательно прочитал последний пост. Сорри.
« Последнее редактирование: 28.05.2009, 13:36:10 от vagkrsk »
*

nomadap

  • Новичок
  • 9
  • 0 / 0
Здравствуйте!
Такая же проблема.
Joomla 1.5.10, VirtueMart 1.1.3

Был сайт на локальном сервере (Денвер) с доменом mysite.biz, купил домен mysite.ru.
Перенес на хостинг и точно также работала только первая страница.
Все остальные страницы вели на localhost/mysite.biz
На Денвере поиском нашел все упоминания и ссылки mysite.biz и переделал на mysite.ru.
Перезалил на хостинг-все заработало.

Но! Картинки товаров, меню на сайте и вся графика админской части
VirtueMart 1.1.3 не отображается.
Все ссылки в админской части VirtueMart 1.1.3 выкидывают на localhost/mysite.biz и
соответственно ничего не работает.

Нашел 4 таблицы в Бд в которых есть упоминания про mysite.biz.

D:\WebServers\usr\local\mysql5\data\mysite\jos_session.myd
D:\WebServers\usr\local\mysql5\data\mysite\jos_csvi_templates.myd
D:\WebServers\usr\local\mysql5\data\mysite\jos_acajoom_queue.myi
D:\WebServers\usr\local\mysql5\data\mysite\jos_acajoom_mailings.myd

Но если я в них меняю ссылки на mysite.ru. то вылетает такие ошибки

jtablesession::Store Failed
DB function failed with error number 126
Incorrect key file for table '.\mysite\jos_session.MYI'; try to repair it SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'f23cf59b2f3e322c9c88721659f1db0e','1243491257','','0','1','0' )

или

jtablesession::Store Failed
DB function failed with error number 145
Table '.\mysite\jos_session' is marked as crashed and should be repaired SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'f23cf59b2f3e322c9c88721659f1db0e','1243491332','','0','1','0' )

Ссылки менял в блокноте. skysky советует менять запросом в phpmyadmin или в дампе БД.
Как это сделать, подскажите пожалуйста, а то я в пхп и mysql пока ноль. :(

Решил свою проблему! Может кому понадобится.

Копал совсем в другом месте. таблицы БД здесь были не причем.

Просто обратил внимание, что вся неотображающаюся графика и
картинки на товар имеют ссылки типа:
http://localhost/mysite.ru/components/com_VirtueMart/shop_image/и далее/бла-бла-бла

Как сюда затесался localhost не пойму, хотя configuration.php был правильно настроен.

Решил проблему удалением из ссылок упоминание о  localhost в файле
\home\www\mysite.ru\administrator\components\com_VirtueMart\VirtueMart.cfg
*

cortez

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Решил проблему удалением из ссылок упоминание о  localhost в файле
\home\www\mysite.ru\administrator\components\com_VirtueMart\VirtueMart.cfg

а можно поподробнее... удалял целиком строку или менял на имя сайта?
если не сложно можно файлик этот прикрепить? а дальше сам разберусь надеюсь+)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Каков ваш заработок на сайте?возможно ли пролететь и создать не прибыльный сайт?

Автор bedalex

Ответов: 3
Просмотров: 4987
Последний ответ 05.06.2023, 11:00:40
от Ритулька88
Проблемы с входом на сайт

Автор belovpaha

Ответов: 7
Просмотров: 4356
Последний ответ 20.09.2022, 14:30:51
от sivers
Проблема со входом в Админ панель после переноса сайта

Автор Vlad Ermolaev

Ответов: 11
Просмотров: 3940
Последний ответ 12.12.2019, 15:48:25
от SeBun
[Решено] Проблема с авторизацией Invalid Token

Автор treX

Ответов: 100
Просмотров: 96493
Последний ответ 06.10.2019, 16:55:45
от PaLyCH
Нужно удалить старый тег Google Analitics и вставить новый

Автор daria_ab

Ответов: 3
Просмотров: 2418
Последний ответ 10.06.2019, 11:48:52
от daria_ab