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

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Подскажите, пожалуйста, по такому вопросу.
Сайт по продаже спецтехники, есть раздел "Статьи". Там предполагается 12-15 небольших тематических статей (типа "Автобус такой-то", "Грузовик такой-то: почему самый лучший", "Самосвал такой-то: описание и характеристики" и т.п.).
Вопрос: как лучше оформить данный раздел? Варианты:
1. Заголовок статьи, изображение, вступительный текст в несколько предложений. На странице - 4 превью, соответственно, есть разбивка на страницы.
2. Заголовок статьи, маленькое изображение, сокращённый вступительный текст. На странице - все превью статей, разбивки нет.

В первом варианте получаются ссылки типа /stati?start=2, а в роботсе есть Disallow: /*?. То есть получается, что в первом варианте проиндексируется только одна первая страница /stati. Во втором же варианте проиндексируется тоже одна страница /stati, но на ней будут ключевики из всех вступительных текстов статей.

Правильно ли я понимаю?
*

karsalex

  • Захожу иногда
  • 136
  • 20 / 0
Re: Ключевые слова на одной странице
« Ответ #1 : 16.10.2012, 14:29:51 »
Если есть карта сайта или перелинковка, то все статьи в любом случае должны проиндексироваться. А как лучше оформить? посмотрите со стороны пользователя, что и как для него будет удобнее: видеть всю информацию сразу и найди что ему нужно или искать ее по страницам?
Самобытный самарский вебмастер
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Ключевые слова на одной странице
« Ответ #2 : 16.10.2012, 14:39:09 »
И что вам дадут эти все ключевые слова на одной странице?
Если человек ищет "Самосвал такой-то: описание и характеристики" он должен попасть конкретно на страницу этого материала, а ни как не на страницу блога.
PS: меня очень раздражает, когда что-то ищу и вместо того чтобы попасть сразу в нужный материал,я оказываюсь в списке, где нужно еще найти нужное и перейти =(

Можно блог назвать - "Статьи по выбору [чего-то там]" - так будет правильнее и честнее по отношению к пользователям.

Поэтому если у вас пока предполагается 12-15 - этого уже достаточно чтоб дробить на страницы, к тому же, не будьте так уверены, что еще не потребуется добавлять.

+ Карта сайта обязательно
+ Роботс оставить как есть
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Re: Ключевые слова на одной странице
« Ответ #3 : 16.10.2012, 15:04:09 »
Спасибо за отклики.
Сайт - это каталог, продаёт спецтехнику. Поэтому статьи здесь больше для поисковиков - не в том смысле, что нашпигованы ключевиками (статьи небольшие, пишутся самостоятельно со словарями), а в том, что в основном люди, ищущие самосвалы и автобусы, чаще всего знают, что им нужно. А если не знают, то идут в раздел "Спецификации" с таблицами характеристик, а не в раздел "Статьи", где эти же характеристики поданы под красивым соусом (писать о недостатках мне, наверное, не позволят...).

Поэтому в теме и сделан акцент на поисковиках, ведь кроме самой статьи есть общая страница с первьюшками статей, а это тоже ключевики. Людям-то в данном случае не угодишь всем сразу, вот уже два мнения: кому-то проще страницы, кому-то лучше все статьи перед глазами.

Карта сайта есть.
Роботс есть, работает, лишнее в индекс не пущает :)
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Ключевые слова на одной странице
« Ответ #4 : 16.10.2012, 15:11:52 »
Я так понимаю ситуацию - когда на коммерческом ресурсе по продаже [чего-то там] создают раздел "Статьи", то это делается для поддержания штанов главных входных страниц с этими товарами (прокачать веса, релевантность и пр.), ну а если еще и заходить на них будут из поиска по некоммерческим запросам - тоже хорошо :)
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Re: Ключевые слова на одной странице
« Ответ #5 : 16.10.2012, 15:16:57 »
Я так понимаю ситуацию - когда на коммерческом ресурсе по продаже [чего-то там] создают раздел "Статьи", то это делается для поддержания штанов главных входных страниц с этими товарами (прокачать веса, релевантность и пр.)...

Я вот тоже так понимаю. Возникла необходимость "наполнить сайт статьями", смотрю сайты конкурентов - картина одинаковая: грузовик такой-то и такой-то, подвеска такая, движка такая, О-его-можно-купить-у-нас-вот-здесь, и дальше про грузовик. Так что Вы правы, "Статьи" - это рекламко товара + замануха для поисковика.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться