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

buto

  • Давно я тут
  • 570
  • 1 / 0
Добрый день. Сегодня обнаружил какую то длинную ссылку в индексе /lodki-i-katera/lodka-naduvnaya-brig-d285?_openstat=bWFya2V0LnlhbmRleC5ydTvQm9C-0LTQutCwINC90LDQtNGD0LLQvdCw0Y8gQnJpZyBEMjg1O2t3eFoyTENzRHZqVkRoZDhLc2xSQWc7
откуда она вообще могла такая образоваться, вроде как ни одним компонентом такого не формируется.
Вопрос как с этим бороться?
Я так понимаю лучше всего сделать в robots.txt
disallow: /*?_openstat=
и редирект в htaccess ?

« Последнее редактирование: 19.11.2013, 11:03:41 от buto »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Какая то длинная ссылка в индексе?
« Ответ #1 : 19.11.2013, 10:47:56 »
после знака - ? можно писать что хош, если еще и ссылкой написать, то это что угодно попадет  индекс
закройте в роботс
*

buto

  • Давно я тут
  • 570
  • 1 / 0
Re: Какая то длинная ссылка в индексе?
« Ответ #2 : 19.11.2013, 10:56:25 »
Т.е. лучше в robots.txt писать сразу
disallow: /*?
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Какая то длинная ссылка в индексе?
« Ответ #3 : 19.11.2013, 11:02:16 »
сразу, если не нужны еще ?start=24 и т.д - страницы пагинации
« Последнее редактирование: 19.11.2013, 11:10:17 от ELLE »
*

buto

  • Давно я тут
  • 570
  • 1 / 0
Re: Какая то длинная ссылка в индексе?
« Ответ #4 : 19.11.2013, 11:02:56 »
Спасибо Elle.Плюсану, вопрос рещен
*

buto

  • Давно я тут
  • 570
  • 1 / 0
RE: Какая то длинная ссылка в индексе?
« Ответ #5 : 01.12.2013, 16:12:47 »
сразу, если не нужны еще ?start=24 и т.д - страницы пагинации
Проворонил, у меня сайта мэп (Xmap) имеет ссылку  Sitemap: http://instrumenty.by/index.php?option=com_xmap&view=xml&tmpl=component&id=1, указав disallow: /*? автоматически она скрыта от индексации, я правильно понимаю?Как выкрутится из этого?
*

ViktorMah

  • Захожу иногда
  • 253
  • 30 / 0
Re: Какая то длинная ссылка в индексе?
« Ответ #7 : 04.12.2013, 01:04:10 »
Проворонил, у меня сайта мэп (Xmap) имеет ссылку  Sitemap: http://instrumenty.by/index.php?option=com_xmap&view=xml&tmpl=component&id=1, указав disallow: /*? автоматически она скрыта от индексации, я правильно понимаю?Как выкрутится из этого?
.
Создать sitemap.xml файл с кодом
Код: php
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=1</loc>
   </sitemap>
/*<sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=2</loc>
   </sitemap>
   <sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=3</loc>
   </sitemap>
для раздельных карт на: новости, статьи, товары и т.д. Позволяет обойти ограничение 50 000 ссылок на одну карту*/
</sitemapindex>

положить его в корень сайта. + прописать его в robots.txt

P.S. Буквально вчера подсмотрел это решение тут: http://www.jooxmap.com/documentation/6-howto-xmap-as-sitemap-xml.html новый сайт Xmap
« Последнее редактирование: 04.12.2013, 01:30:11 от ViktorMah »
*

buto

  • Давно я тут
  • 570
  • 1 / 0
RE: Какая то длинная ссылка в индексе?
« Ответ #8 : 05.12.2013, 23:22:50 »
.
Создать sitemap.xml файл с кодом
Код: php
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=1</loc>
   </sitemap>
/*<sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=2</loc>
   </sitemap>
   <sitemap>
      <loc>http://instrumenty.by/index.php?option=com_xmap&amp;view=xml&amp;id=3</loc>
   </sitemap>
для раздельных карт на: новости, статьи, товары и т.д. Позволяет обойти ограничение 50 000 ссылок на одну карту*/
</sitemapindex>

положить его в корень сайта. + прописать его в robots.txt

P.S. Буквально вчера подсмотрел это решение тут: http://www.jooxmap.com/documentation/6-howto-xmap-as-sitemap-xml.html новый сайт Xmap
СпасибО. я воспользовался FAQ от Elle. Решил сделать генерацию. нормального url (по стандарту) http://instrumenty.by/sitemap.xml
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ссылка на продавца.

Автор stparts

Ответов: 3
Просмотров: 1007
Последний ответ 20.02.2018, 21:45:06
от dmitry_stas
Ссылка кнопки купить в списке товаров категории

Автор orexov_m

Ответов: 5
Просмотров: 1347
Последний ответ 16.01.2017, 23:00:11
от dmitry_stas
[Решено] Алиасы с точками "."

Автор dron

Ответов: 3
Просмотров: 1214
Последний ответ 17.02.2016, 15:05:04
от dron
Почему ссылка вида сайт.ру/товар/, а не сайт.ру/категория/товар ?

Автор crucian

Ответов: 6
Просмотров: 2052
Последний ответ 24.11.2014, 12:37:55
от crucian
[Решено] Яндекс.Острова для JoomShopping

Автор pepeto

Ответов: 32
Просмотров: 11497
Последний ответ 19.11.2014, 13:37:45
от yunoshev