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

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
SEF Wizard — это расширение, предназначенное для улучшения маршрутизации и ЧПУ в Joomla! Аббревиатура SEF расшифровывается как Search Engine Friendly (дружественный для поисковых машин), а ЧПУ — Человечески Понятные URL. Пакет SEF Wizard состоит из системного плагина — “Engine”, и компонента для панели администратора — “Controls”. Простая архитектура кода расширения обеспечивает его высокую производительнось.

Возможности:

  • Удаление ID из URL стандартных компонентов Joomla!
  • Устранение дублей страниц: полное удаление с вызовом ошибки 404, перенаправление запросов к дублям на канонические страницы при помощи 301 редиректа, установка канонических ссылок для дублей, установка мета-тега NOINDEX для служебных URL. Имеется несколько режимов фильтрации дублей, позволяющие производить блокировку дублей по гибким или строгим критериям.
  • Красивая пагинация: установка произвольных тегов постраничной разбивки материалов и категорий вместо стандартных параметров строки запроса — теги пагинации становятся частью URL, например “category/article/page-1”.
  • “Умный” обработчик ошибок, позволяющий создавать собственную страницу ошибок на основе вашего шаблона, при этом дизайн вашего сайта будет полностью сохранён, так же как и все модули, которые используются.
  • Отправка уведомлений на email о возникших фатальных ошибках.
  • Улучшение маршрутизации тегов: коррекция URL вида “component/tags/tag/item”, при этом теги, привязанные к меню, всегда будут иметь корректные пути.
  • Редактор robots.txt, позволяющий редактировать этот файл прямо из панели администратора.
  • Менеджер перенаправлений, позволяющий создавать правила внешней переадресации с выбранным кодом ответа сервера, а также производить внутреннюю переадресацию на документы Joomla! Менеджер перенаправлений работает как с абсолютными, так и с относительными URL. Правила могут задаваться точными и регулярными выражениями. Имеется поддержка UTF-8, позволяющая указывать домены в кодировке UTF-8 без punycode.

Требования: Joomla! 3.x

Скачать!

Демо: https://разработчик.москва/sefwizard/
Документация: https://разработчик.москва/extensions/sefwizard/documentation
Журнал изменений: https://разработчик.москва/extensions/sefwizard/documentation?changelog

В случае обнаружения багов и при наличии пожеланий, пожалуйста, оставляйте ваши комментарии.
« Последнее редактирование: 05.07.2019, 08:18:04 от Филипп Сорокин »
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Столкнулся со следующей проблемой — неправильно выводится список материалов при клике на некоторые метки. Нажимаю на метку и выводится список материалов для совершенно другой метки. Об этом я написал в этой теме. Предложенный способ, упомянутый в той теме, не помог. Помогает один из двух вариантов:
1. Изменение алиаса метки
2. Отключение плагина SEF Wizard (что само-собой влечёт изменение алиаса метки).

После изучения обнаружил, что данная проблема возникает, если у метки и категории одинаковый алиас.
Допустим, у нас есть метка с алиасом "cool-name" у которой id=3, а также у нас есть категория с таким же алиасом "cool-name" у которой id=6. В этом случае, если мы на сайте кликнем по метке "cool-name", то отобразятся материалы для метки с id=6, а должны отобразиться материалы для метки с id=3. То есть при совпадении алиасов метки и категории, материалы показываются для совершенно другой метки с id категории.

Входит ли решение данной проблемы в вашу компетенцию в виде возможного фикса в SEF Wizard или это баг самой Joomla, который разработчикам не удалось засечь по той лишь причине, что совпадение алиасов меток и категорий маловероятно?

Можно конечно поменять алиасы, исключив совпадения, но хотелось бы решение проблемы на уровне Joomla/плагина.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
В настоящее время теги полностью сломаны на уровне CMS — маршрутизация в этом компоненте хромает "на все четыре" независимо от того, работает плагин или нет. Однако можно попробовать её скорректировать извне насколько это возможно. Думаю, это будет одной из следующих моих целей. А по поводу вашей проблемы — вполне возможно, что это баг плагина. Спасибо за информацию, проверю!
« Последнее редактирование: 01.06.2016, 07:34:24 от Филипп Сорокин »
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Yamamura, один уточняющий вопрос: проблема возникает, когда теги имеют URL типа /component/tags/tag?
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Yamamura, один уточняющий вопрос: проблема возникает, когда теги имеют URL типа /component/tags/tag?
Да.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Версия 1.5
Введена опция, позволяющая изменять мета-заголовок страницы при постраничной навигации. Исправлена ошибка, упомянутая выше.
*

fandjuml

  • Захожу иногда
  • 59
  • 6 / 3
После обновления до 1.5 - не отображается CAPTCHA в JComments.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Цитировать
не отображается CAPTCHA в JComments.
Обновитесь :)

Версия 1.6

1. Добавлена интеграция с SEF плагином wbAMP.
2. Исправлена ошибка, упомянутая выше.
*

fandjuml

  • Захожу иногда
  • 59
  • 6 / 3
Обновился до 1.6 возникшие ранее проблемы с капчей и слогином исчезли.
Проверил по остальным компонентам - полёт отличный, проблем не обнаружил.
*

Сергей777

  • Осваиваюсь на форуме
  • 17
  • 1 / 0
Плагин создает дубли страниц.
В результате его использования в течение 2 дней в индексе появились дубли - вместо продвигаемых URL из меню появились те же материалы с URL из названия категории и материала.
Доработайте для начала, а потом выкладывайте, а то от плагина больше вреда чем пользы..
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Плагин создает дубли страниц.
В результате его использования в течение 2 дней в индексе появились дубли - вместо продвигаемых URL из меню появились те же материалы с URL из названия категории и материала.
Доработайте для начала, а потом выкладывайте, а то от плагина больше вреда чем пользы..
Безосновательно и бездоказательно.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Версия 1.7

Добавлена опция, которая корректирует маршрутизацию тегов при неправильном формировании их пути.

Иногда нативный роутер Joomla! игнорирует привязку тегов к пунктам меню, при этом URL тегов выглядят по типу /component/tags/tag/item. Теперь SEF Wizard может корректировать пути тегов "на лету" в том случае, если они будут сформированы неправильно. Работает как с родительскими тегами, так и с дочерними.
*

fandjuml

  • Захожу иногда
  • 59
  • 6 / 3
Здравствуйте!
Сегодня с утра случайно в Яндекс метрике в виджете Адрес страницы (типа популярные страницы) заметил такой вот урл: мой_домен/?catid=0&id=22. Вот прочитал отзыв про дубли - решил проверить. Вбил в Google и в яндексе запрос:
site:мой_сайт

По Google всё чисто - подобного не нашёл - всё чётко как заявлено в возможностях плагина.
 В Яндексе же нашёл пять страниц (из 500) со странными урлами: /?catid=0&id=22, /?catid=0&id=13, /?catid=0&id=17, /?catid=0&id=14, /?catid=0&id=11 - страницы рабочие и на них можно зайти, правда генерируются неправильно (отсутствуют названия статей и некоторые модули). Одна из "кривых" страниц в топе выдачи, по другим правильные страницы даёт.
Данные "кривые" страницы размещены в сети намного раньше чем на сайт был установлен плагин - может Яндекс не может их забыть? Но какого то х они работают...
Проверил по двум молодым сайтам, где SEF Wizard установлен сразу после Joomla (раньше первой записи на сайте) - слов нет - всё чики-трики.
Ну и напоследок полез на старый сайт в яшке позырить. Просмотрел 2000 урлов - Нашёл только 2 кривых урла - одну страницу мой_сайт/?start=5 в которой выводится только название сайта и меню, и вторую: "мой_сайт/component/content/article?id=удалённая_прошлым_летом_категория". В целом картина очень приятная - работа плагина "на лицо".

  В связи с большим количеством просмотренных за сегодня урлов, хочу в который раз сказать разработчику СПАСИБО - я помню как и сколько дублей генерирует Joomla, но с плагином SEF Wizard я уже начинаю подзабывать "как это было".
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
fandjuml, спасибо!
Плагин не обрабатывает урлы типа /?catid=0&id=22, потому что это параметры строки запроса, которые, в общем-то, к дублям не относятся. С момента введения "красивой пагинации" плагин может блокировать страницы типа мой_сайт/?start=5 или редиректить такие адреса на ЧПУ-пагинацию. В связи с этим я добавил опцию, которая вообще вышибает из индекса страницы, имеющие в адресе знак вопроса - это очень эффективно, но радикально. Поэтому, кому необходимо, – осторожно активируйте данную опцию.
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Что-то у меня ЧПУ в пагинации поломались. Не могу точно сказать после какого обновления — 1.7 или 1.7.1
Вместо корректного /page-2.html, /page-3.html и тд, теперь ссылки имеют вид /page-21.html, /page-31.html и выдают страницу 404.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Yamamura
Когда это произошло? Раньше вы такого не замечали? Сложно сказать о причинах, не видя сайт, так что я был бы вам благодарен, если бы вы скинули мне в личку адрес.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Посмотрите, пожалуйста, старые версии. Я их тоже выложил на GitHub: ссылка
Вы можете скачать ZIP архивы и проверить на Вашем сайте.
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Дополнил, что либо после версии 1.7, либо после 1.7.1, до которой только что обновился.
Ссылку скинуть не могу, так как на локалхосте.

На сайте есть один из разделов, в котором пункт меню «Список материалов категории» — там пагинация корректная (/page-2.html, /page-3.html), а вот на главной странице пагинация стала неправильной (/page-21.html, /page-31.html) и нерабочей.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
На главной у меня выводятся «Избранные материалы»
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Скорее всего это "орфографическая" ошибка, которую я допустил не знаю где. Надо её вылавливать. Посмотрите, пожалуйста, старые версии, ссылки на которые я опубликовал в предыдущем сообщении.
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Удалить текущую версию и поставить старую? Или старую поверх текущей?
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Удалить текущую версию и поставить старую? Или старую поверх текущей?
По-моему, я разобрался. Обновите поверх предыдущей новую версию: https://github.com/addondev/sefwizard-for-joomla/releases/download/1.7.1.1/sefwizard-for-joomla.zip
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
По-моему, я разобрался. Обновите поверх предыдущей новую версию: https://github.com/addondev/sefwizard-for-joomla/releases/download/1.7.1.1/sefwizard-for-joomla.zip
Не помогло. Проверил версии 1.7 и 1.6 — такая же ошибка. Есть более старые версии?
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
К слову, если включить отладку, то такое выводится:
Код
Array
(
    [url] => /page-11.html
    [vars] => Array
        (
            [option] => com_content
            [view] => featured
            [Itemid] => 101
            [limitstart] => 10
        )

)
Array
(
    [url] => /page-21.html
    [vars] => Array
        (
            [option] => com_content
            [view] => featured
            [Itemid] => 101
            [limitstart] => 20
        )

)
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Спасибо. Буду разбираться!

Есть более старые версии?

Добавил версии 1.4 и 1.5 по той же ссылке.
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
Добавил версии 1.4 и 1.5 по той же ссылке.
В 1.5 проблема присутствует. Вместо 1.4 вы выложили 1.1.4
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

Yamamura

  • Захожу иногда
  • 99
  • 3 / 0
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Вы выложили плагин JSLazyLoading :)
Не буду Вас больше мучить, по-ходу, эта ошибка присутствовала всегда. Ухожу в глубокую отладку, надеюсь вернусь скоро :)
« Последнее редактирование: 07.06.2016, 10:48:00 от Филипп Сорокин »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работают SEF-ссылки на Joomla 5

Автор Detonator

Ответов: 2
Просмотров: 2680
Последний ответ 29.03.2025, 07:26:44
от azm1n
Как убрать ID из URL Joomla 3?

Автор SaxMusicOnly

Ответов: 142
Просмотров: 61636
Последний ответ 02.03.2021, 14:47:35
от Vasiliy111
Как сделать короткие ссылки Joomla 3.9?

Автор ezheck

Ответов: 12
Просмотров: 5589
Последний ответ 10.01.2020, 07:44:37
от arma
SEF wizard закидывает ошибками почту у кого такое было?

Автор polezniy

Ответов: 2
Просмотров: 3797
Последний ответ 25.09.2019, 10:31:43
от polezniy
Artio JoomSEF ничего не делает. Joomla! 1.5

Автор ybosco

Ответов: 5
Просмотров: 3602
Последний ответ 05.06.2019, 18:53:26
от draff