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

maximum1

  • Захожу иногда
  • 97
  • 7 / 0
  • Севастополь==Россия!!!
предлагаемый код я вставляю перед тегом </body> как гугл аналиткс. после проверки гугл выдает что все нормально, а яндекс пишет код установлен не на всех страницах. как быть????  :o
« Последнее редактирование: 25.05.2009, 22:31:23 от smart »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Вставка кода Яндекс.Метрика
« Ответ #1 : 25.05.2009, 22:31:26 »
А вы наверно добавили только в index.php, шаблона, а про component.php забыли. А этот шаблон используется например в версии для печати, на который у Яндекса наверняка есть ссылка ;)
*

maximum1

  • Захожу иногда
  • 97
  • 7 / 0
  • Севастополь==Россия!!!
Re: Вставка кода Яндекс.Метрика
« Ответ #2 : 25.05.2009, 22:36:14 »
Уважаемый smart, ваш совет помог) а скажите  нужно ли вставлять в component.php код от гугл аналитикс?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Вставка кода Яндекс.Метрика
« Ответ #3 : 25.05.2009, 22:37:50 »
Ну если тебе интересна статистика посещений страниц с версиями для печати - ставь, неинтересно - не ставь. В принципе-то есть не просит, можно и добавить. Так сказать для полноты картины.

Re: Вставка кода Яндекс.Метрика
« Ответ #4 : 21.07.2009, 19:26:36 »
А вы наверно добавили только в index.php, шаблона, а про component.php забыли. А этот шаблон используется например в версии для печати, на который у Яндекса наверняка есть ссылка ;)
Сделал как советовали  выдает странцу -Forbidden
You don't have permission to access /~ashainforu/index.php on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
*

monah46

  • Захожу иногда
  • 87
  • 0 / 1
Re: Вставка кода Яндекс.Метрика
« Ответ #5 : 09.11.2009, 22:19:04 »
А вы наверно добавили только в index.php, шаблона, а про component.php забыли. А этот шаблон используется например в версии для печати, на который у Яндекса наверняка есть ссылка ;)

сделал все как написано, а сайт перестал работать...
что я не так сделал?
*

Ramzesito

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #6 : 14.01.2010, 16:53:20 »
а я создавал новый модуль (пустой) и в него вставлял код, вроде работает, так будет правильно?
*

dirijat

  • Осваиваюсь на форуме
  • 17
  • 2 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #7 : 03.04.2010, 20:44:04 »
Вот создал Плагин на базе Bigshot. Сразу предупреждаю я далек от программирования, но мне УДАЛОСЬ адаптировать код для Яндекс Метрика. Работает на УРА! Единственное что Вам нужно сделать - это ввести код из 6 цифр который предоставляет Яндекс Метрика в Параметрах Плагина.

http://depositfiles.com/files/wj8njr5a3

Изначально РАСПАКОВЫВАЕМ АРХИВ и читаем инструкцию (на Английском)
« Последнее редактирование: 08.04.2010, 16:37:23 от dirijat »
*

style.ilya

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
  • http://dreambikes.ru
Re: Вставка кода Яндекс.Метрика
« Ответ #8 : 26.05.2010, 11:36:20 »
Есть еще вот такой счетчик http://www.gordejev.lv/ru/exiting-extensions/7-modules-joomla/58-agyandexmetrika.html

Только что установил, буду смотреть что покажет )

Отпишусь позже..

---------------------------------------------

Что-то не очень..пишет "некорректно установлен счетчик на главной странице".
Сейчас попробую Bigshot.
« Последнее редактирование: 27.05.2010, 11:22:49 от style.ilya »
*

style.ilya

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
  • http://dreambikes.ru
Re: Вставка кода Яндекс.Метрика
« Ответ #9 : 27.05.2010, 11:21:01 »
Вот создал Плагин на базе Bigshot. Сразу предупреждаю я далек от программирования, но мне УДАЛОСЬ адаптировать код для Яндекс Метрика. Работает на УРА! Единственное что Вам нужно сделать - это ввести код из 6 цифр который предоставляет Яндекс Метрика в Параметрах Плагина.

Все таки поставил твой. Работает! Единственная поправка - код 7 значный.

*

qwerty456

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #10 : 24.06.2010, 15:26:51 »
component.php -  файл встречается в различных каталогах сайта, вы не могли бы точно указать путь к файлу в который нужно вставить код
*

qwerty456

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #11 : 24.06.2010, 15:39:22 »
установил в index.php шаблона, Яндекс пишет : * Код счётчика установлен, но данные не поступают. Что это значит пожалуйста помогите разобраться
*

ip-ua

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #12 : 29.06.2010, 13:03:43 »
А кто нибудь победил установку счетчика при наличии CssJsCompress плагина? Перепробовал все варианты - изменение inex.php, установка модуля, установка плагина.
Яндекс говорит, что счетик не установлен. При выключении плагина CssJsCompress все ОК.
Плагин убирает строку <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
Как ее видоизменить, чтобы она не исчезала?
Спасибо!
*

dirijat

  • Осваиваюсь на форуме
  • 17
  • 2 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #13 : 05.07.2010, 01:19:32 »
А кто нибудь победил установку счетчика при наличии CssJsCompress плагина? Перепробовал все варианты - изменение inex.php, установка модуля, установка плагина.
Яндекс говорит, что счетик не установлен. При выключении плагина CssJsCompress все ОК.
Плагин убирает строку <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
Как ее видоизменить, чтобы она не исчезала?
Спасибо!
Для того чтобы счетчик работал, нужно в параметрах CSSJsCompress прописать имя яваскрипта яндекса watch.js  в поле "Exclude JavaScript Files", так как он не должен быть сжатым, тоже самое через запятую добавляйте и ga.js (Google Analytics Java Script) если конечно он у вас установлен.

« Последнее редактирование: 05.07.2010, 01:26:11 от dirijat »
*

ip-ua

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #14 : 06.07.2010, 14:12:43 »
Спасибо! Теперь работает!
Админы, это нужно добавить в FAQ! (я думаю...)
*

yogun

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • ...квадратные мозги
Re: Вставка кода Яндекс.Метрика
« Ответ #15 : 20.12.2010, 18:01:19 »
Для того чтобы счетчик работал, нужно в параметрах CSSJsCompress прописать имя яваскрипта яндекса watch.js  в поле "Exclude JavaScript Files", так как он не должен быть сжатым, тоже самое через запятую добавляйте и ga.js (Google Analytics Java Script) если конечно он у вас установлен.
Для того чтобы счетчик работал, нужно в параметрах CSSJsCompress прописать имя яваскрипта яндекса watch.js  в поле "Exclude JavaScript Files", так как он не должен быть сжатым, тоже самое через запятую добавляйте и ga.js (Google Analytics Java Script) если конечно он у вас установлен.
А кто нибудь победил установку счетчика при наличии CssJsCompress плагина? Перепробовал все варианты - изменение inex.php, установка модуля, установка плагина.
Яндекс говорит, что счетик не установлен. При выключении плагина CssJsCompress все ОК.
Плагин убирает строку <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
Как ее видоизменить, чтобы она не исчезала?
Спасибо!

..а что длелать если скрипт метрики  строку <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
дописывается сам  строку  на такую  <script src="http://mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
правка кода в модуле через функцию HTML

Re: Вставка кода Яндекс.Метрика
« Ответ #16 : 22.12.2010, 23:53:22 »
 ! Пробовал поставить Яндекс Метрику через модуль jumi, хеширование отключил, код поставил , сам модуль разместил в дебаге , но Яндекс пишет что счетчик не установлен на главной странице , но данные поступают, после n-количества времени статистику так и е показал, а в состоянии счетчика показывает что он не установлен . . . index.php прописать не могу так как на моем шаблоне нет в index вообще тэгов /body , помогите пожалуйста !
*

dirijat

  • Осваиваюсь на форуме
  • 17
  • 2 / 0
Re: Вставка кода Яндекс.Метрика
« Ответ #17 : 08.04.2011, 20:53:24 »

..а что длелать если скрипт метрики  строку <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
дописывается сам  строку  на такую  <script src="http://mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
правка кода в модуле через функцию HTML

А ты не усложняй себе жизнь. Используй для подтверждения прав на сайт текстовый файл и закинь его в корневой каталог.
А про модули забудь. Используй плагины для вставки кодов счетчика и не нужен тебе HTML, потому как они вкапываються в систему а не публикуються на каждой страничке.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Редирект для страницы с добавлением кода языка

Автор zeus07

Ответов: 0
Просмотров: 2163
Последний ответ 26.06.2023, 11:25:10
от zeus07
Яндекс и его роботы

Автор Захар

Ответов: 2
Просмотров: 800
Последний ответ 22.10.2021, 09:52:59
от Захар
JL NO doubles не работает с Яндекс Маркетом

Автор espam

Ответов: 0
Просмотров: 844
Последний ответ 27.06.2021, 22:54:24
от espam
Яндекс не индексирует вообще картинки с сайта

Автор Девушка с веслом

Ответов: 6
Просмотров: 1248
Последний ответ 10.05.2021, 17:21:18
от xpank
Яндекс директ есть ли отдача?

Автор Mehanick

Ответов: 5
Просмотров: 1404
Последний ответ 27.04.2019, 14:15:18
от smallplushbear