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

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Ребят помогите разобраться!
Спасибо Elle, с ее помощью создал все что нужно для внутренней оптимизации, ну конечно прям не все!)
Мой robots.txt:
Спойлер
[свернуть]
Что говорит Yandex:
-Внимание! Главная страница сайта исключена из индекса:Документ содержит мета-тег noindex.
-Файл SITEMAP - http://stylerocket.ru/index.php?option=com_xmap&view=xml&id=1 Ошибка 1 (Неверная кодировка), по Валидатору, ВСЕ ОК!
Может еще не просканировали файл sitemap

Что говорит панель Google:
Проверка состояния сайта - Блокирует ли файл robots.txt важные страницы? - Некоторые важные страницы блокируются в файле robots.txt.
Странно но блокируется типа страница которую я исключил в РОБОТЕ.txt - это простая страница с товаром /shop/product/view/27/155
Почему то панель WebGoogle видит 786 страниц, хотя по Xmap их 796, может еще меня не проиндексировали!?((
В панели же стоит красный знак восклицания!
В панели файла Sitemap - /index.php?option=com_xmap&view=xml&id=1 - URL, запрещенный файлом robots.txt

URL брал из плагина Sitemap, вроде он, в robots.txt его открыл, да и вообще сделал все как написано в FAQ по роботу, сделал нужные закрытия /index.php, переименовал .htaccess Mod_Rewrite - ON Все как полагается, а ПС меня засят(((((((
Помогите сограждане!
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Re: Google и Yandex выдают странные вещи
« Ответ #1 : 13.12.2012, 04:06:09 »
Что говорит Yandex:
-Внимание! Главная страница сайта исключена из индекса:Документ содержит мета-тег noindex.

1. Что-то не вижу у Вас в коде Главной тега noindex. В админке  в пункте меню "Главная" не проставлен соответствующий тег? Напишите в Службу поддержки Яндекса, спросите.

2. У меня Xmap тоже выдают ссылку на карту сайт index.php?option=com_xmap&view=xml&id=1
Однако в теме про роботс было рекомендовано скормить Яндексу и Google вот такую ссылку index.php?option=com_xmap&sitemap=1&view=xml
Попробуйте изменить соответствующие строки в роботсе, т.е. должно получится
Код
Allow: /index.php?option=com_xmap&sitemap=1&view=xml
Sitemap: http://site.ru/index.php?option=com_xmap&sitemap=1&view=xml

3. По исключению остальных страниц не подскажу. У меня в роботсе, например, Disallow: /component/ (т.е. стоит слеш на конце) и нет строки Disallow: /*product (но это у меня, а роботс у всех свой).
Пробуйте в панели вебмастера менять роботс (прям в ней, при этом реальный robots.txt не будет затронут): удаляйте какую-нибудь строку, ниже в поле указывайте адрес страницы, которая по мнению поисковика блокируется, и внизу жмите "Проверить".

« Последнее редактирование: 13.12.2012, 04:17:08 от Maxum »
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Re: Google и Yandex выдают странные вещи
« Ответ #2 : 13.12.2012, 18:09:19 »
2. У меня Xmap тоже выдают ссылку на карту сайт index.php?option=com_xmap&view=xml&id=1
Однако в теме про роботс было рекомендовано скормить Яндексу и Google вот такую ссылку index.php?option=com_xmap&sitemap=1&view=xml
Попробуйте изменить соответствующие строки в роботсе, т.е. должно получится
Код
Allow: /index.php?option=com_xmap&sitemap=1&view=xml
Sitemap: http://site.ru/index.php?option=com_xmap&sitemap=1&view=xml
Ты знаешь, изменил строки по твоему совету, моментальное изменение данных в админке, вроде теперь нормально обрабатывает! Удивительно!

Цитировать
3. По исключению остальных страниц не подскажу. У меня в роботсе, например, Disallow: /component/ (т.е. стоит слеш на конце) и нет строки Disallow: /*product (но это у меня, а роботс у всех свой).
Пробуйте в панели вебмастера менять роботс (прям в ней, при этом реальный robots.txt не будет затронут): удаляйте какую-нибудь строку, ниже в поле указывайте адрес страницы, которая по мнению поисковика блокируется, и внизу жмите "Проверить".
Disallow: /*product - я использую с одной лишь целью избавить ПС от проглатывания дублей.
Если коротко, у всех моих товаров есть алиасы, у всех категорий и подкатегорий, также имеются алиасы, ссылка в магазине до конечного товара имеет вид:
/muzhskaya-odezhda/muzhskie-aksessuary/muzhskie-solntsezashchitnye-ochki/ray-ban-clubmaster-rb-3016-1016
Но если руками прописать, зная ID товара и ID категории, допустим:
/shop/product/view/24/1016 - то это один и тот-же товар. Странное то, что разработчик JShoping вроде как улучшил роутер, но как выясняется не совсем!

Надеюсь ясно объяснил, и вопрос, что посоветуете прописать в роботс, Disallow: /*product или Disallow: /shop - без слеша?
/shop/ - это Пункт меню Скрытое - Категории ALL, его бы вообще не хотелось выводить, так как использую конкретные Пункты меню Мужское(/muzhskaya-odezhda) и Женское(/zenskoe/)
« Последнее редактирование: 13.12.2012, 18:13:22 от StyleRocket »
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Re: Google и Yandex выдают странные вещи
« Ответ #3 : 13.12.2012, 19:17:01 »
Надеюсь ясно объяснил, и вопрос, что посоветуете прописать в роботс, Disallow: /*product или Disallow: /shop - без слеша?
/shop/ - это Пункт меню Скрытое - Категории ALL, его бы вообще не хотелось выводить, так как использую конкретные Пункты меню Мужское(/muzhskaya-odezhda) и Женское(/zenskoe/)

Вот тут пусть знающие люди присоединяются, я могу оказаться сомнительным советчиком. Лучше всего непосредственно в веб-панелях Яндекса и Google добавлять строки Disallow в robots.txt, вбивать адрес товара или категории (в том виде, в каком они не должны индексироваться) и смотреть, запрещены ли они к индексации или нет. И потом уже править реальный robots.txt.
Мне так думается, что лучше запретить /shop/ (но это только предположение, проверяйте!).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Дополнительное название домена в Google

Автор web1

Ответов: 1
Просмотров: 2047
Последний ответ 18.12.2023, 12:56:21
от SeBun
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 2938
Последний ответ 20.09.2022, 20:53:56
от darkghost
Странные дубли

Автор Lemonez

Ответов: 3
Просмотров: 3003
Последний ответ 03.09.2022, 23:02:10
от Alexeyman
Google не индексирует страницы через ajax ссылки

Автор illimited

Ответов: 0
Просмотров: 1363
Последний ответ 31.03.2022, 23:53:05
от illimited
meta-description не отображается в Google

Автор Игарь

Ответов: 39
Просмотров: 7197
Последний ответ 20.11.2021, 18:17:12
от Byzi