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

Turban

  • Захожу иногда
  • 115
  • 1 / 2
Здравствуйте
Использую  Joomla 1.5?
Использую модуль Sape для Joomla!.Установил плагин disallow
описание плагина

Плагин disAllow обрабатывает весь код страниц сайта и запрещает поисковым системам индексировать внешние ссылки размещенные на вашем сайте. Особенность этого плагина в том, что он обрабатывает ВЕСЬ код страницы. Т.е. он обработает даже ту ссылку, которая находится в футере, да и вообще, в любой части страницы.

Когда плагин находит ссылку он проверяет, является ли она внешней, т.е. ссылается она на какую-то страницу вашего сайта или же на какой-нибудь другой (внешний) сайт. Если же плагин определяет, что ссылка внешняя, то он помещает ее в контейнер "<noindex>" (запрет индексации для поисковой системы Яндекс) + присваивает ей параметр "rel='nofollow'" (запрет индексации для остальных поисковых систем) + присваивает параметр "target='_blank'" (чтобы ссылка открывалась в новом окне и пользователь не уходил с вашего сайта).

В настройках плагина можно настроить домены - исключения. Другими словами, указать плагину ссылки на какие сайты НЕ надо запрещать индексировать поисковым системам.

Чтобы указать плагину какую часть кода не обрабатывать, необходимо поместить эту часть кода в контейнер .
Например: <allow>
<a href="http://allowedLink">allowedLink</a>
</allow>
История изменений
v.1.0.1
Такой вопрос как мне исключить этот модуль из работы плагина.Чтоб ссылки из сапе нормально индексировались?
Благодарю
Прикрепленный Плагин не правленый

[вложение удалено Администратором]
« Последнее редактирование: 08.10.2010, 03:00:58 от Turban »
*

wd

  • Давно я тут
  • 538
  • 17 / 1
  • Просто юзер
Поддерживаю вопрос!
*

MaRt

  • Захожу иногда
  • 356
  • 20 / 2
  • SEO master
вам в общие вопросы наверно, это не оптимизация...я например не знаю, как этот плагин работает и как исключить не конкретную ссылку, а код, ее выводящий
Тра та та
*

Turban

  • Захожу иногда
  • 115
  • 1 / 2
Все решил ,добрые люди с саповского форума помогли, yes! *DRINK*
В общем в модуле sape в файле mod_sape.php

нужно заменить код
Код
$out_text.='<table cellpadding="0" cellspacing="0" class="moduletable'.$moduleclass_sfx.'"><tr><th valign="top">'.$module->title.'</th></tr>';
    $out_text.='<tr><td>'.$echo_link.'</tr></td></table>'; 

на

Код
$out_text.='<allow><table cellpadding="0" cellspacing="0" class="moduletable'.$moduleclass_sfx.'"><tr><th valign="top">'.$module->title.'</th></tr>';
    $out_text.='<tr><td>'.$echo_link.'</tr></td></table></allow>';

Вот и все ;D
*

MaRt

  • Захожу иногда
  • 356
  • 20 / 2
  • SEO master
типо просто показать выходящий текст? (выходящие ссылки), странно что запрет открывается другим разрешением, ну если сапа схавает и Яндекс вместе с ним, то гуд
Тра та та
*

wd

  • Давно я тут
  • 538
  • 17 / 1
  • Просто юзер
Отпишитесь, пожалуйста, если сработает.
И какая версия sape модуля?
*

Turban

  • Захожу иногда
  • 115
  • 1 / 2
Не,так не работает,во всяком случае у меня
нужно вот так
перед
Код
echo $out_text; 
вставьте строку
Код
$out_text = '<allow>'.$out_text.'</allow>'; 

отпишитесь у кого как ;)
*

MAXI_K

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Подскажите пожалуйста, скачал plg_disallow, установил, что дальше делать? Он как-то автоматически работает? или в ручную что-то нужно задавать ? Как проверить что он уже работает и дайте пожалуйста пару советов работы с ним.

В описание писалось, что можно задать список страниц для того,чтобы не закрывать внешние ссылки. так зачем их тогда задавать ? ведь лучше когда внешние ссылки не будет находить робот
« Последнее редактирование: 23.03.2012, 19:48:53 от MAXI_K »
*

shyler

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Тоже интересует данный вопрос,  как правильно то сделать?
*

tops974

  • Захожу иногда
  • 73
  • 5 / 0
Стоит Joomla 2.5 и последняя версия модуля на сегодня - mod_sape для Joomla 1.6/1.7 v0.11.0.
Отпишитесь, пожалуйста, если кто решил данный вопрос.
*

imsprice

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
  • http://www.imsprice.ru
Не, так не работает, во всяком случае у меня
нужно вот так
перед
Код
echo $out_text; 

вставьте строку
Код
$out_text = '<allow>'.$out_text.'</allow>'; 

отпишитесь у кого как ;)


Все верно - это правильное решение. Только после этого ссылки перестали иметь статус no follow и все остальное


Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT SEO Meta templates плагин сео-шаблонов для Joomla

Автор sergeytolkachyov

Ответов: 25
Просмотров: 5125
Последний ответ 24.11.2023, 10:24:11
от sergeytolkachyov
JL NO DOUBLES - плагин борьбы с дублями

Автор zikkuratvk

Ответов: 308
Просмотров: 65194
Последний ответ 17.11.2023, 09:16:29
от Театрал
lm_any - плагин Last-Modified для любого контента

Автор yunoshev

Ответов: 471
Просмотров: 59499
Последний ответ 15.03.2023, 12:23:54
от Cyberneer
Готовый плагин для генерации мета тегов по шаблону

Автор zloi_genii

Ответов: 9
Просмотров: 1222
Последний ответ 06.09.2021, 16:43:36
от sergeytolkachyov
[Решено!] Изменились адреса старниц. Что делать?

Автор dron

Ответов: 14
Просмотров: 1314
Последний ответ 13.07.2020, 14:01:32
от dron