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

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
rel="canonical" в Joomla! 3.0
« : 17.10.2012, 13:23:26 »
Итак, Я лично познакомился с Joomla! 3.0 и встретил очень неприятную вещь в обновленном плагине SEF. Точнее задумана она конечно как приятная, однако работает она не корректно. Разговор идет о добавления тега rel="canonical" к страницам новоиспеченной Joomla. Даже в демке можно увидеть, что категории прописываются нормально, а материалы не прописываются вовсе. Например открываем материал в демке и в исходнике видим это:
Цитировать
<link href="http://joomla30.cloudaccess.net/index.php/using-joomla/extensions/components/content-component/article-category-list" rel="canonical" />
То есть категория прописывается и на странице самой категории и еще на странице материала, что есть нехорошо. Обнаружил Я это когда пилил соц кнопки, потому как они юзают этот тег в первую очередь.
Короче можно было бы выпилить эту функцию из плагина, однако мне хотелось бы его подправить, но Я, к сожалению, тот еще быдлокодер, поэтому вот кусок кода, который, как мне кажется, отвечает за теги канонических ссылок:
Код: php
public function onAfterRoute()
{
$app = JFactory::getApplication();
$doc = JFactory::getDocument();

if ($app->getName()!= 'site' || $doc->getType()!== 'html')
{
return true;
}

$uri     = JUri::getInstance();
$domain  = $this->params->get('domain');
$current = JUri::current();

if ($domain === null || $domain === '')
{
$domain = $uri->toString(array('scheme', 'host', 'port'));
}

$link = 'index.php' . $uri->toString(array('query', 'fragment'));
$link = $domain . JRoute::_($link);

if ($current !== $link)
{
$doc->addHeadLink($link, 'canonical');
}
}
Если не трудно - подскажите, что подправить, чтобы материалы тоже отображались как канонические ссылки. (у меня добавление .html присутствует).
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Re: rel="canonical" в Joomla! 3.0
« Ответ #2 : 17.10.2012, 14:10:10 »
Исправят думаю.
Уже есть в баг трекере
Понятно, что исправят, однако мне хотелось бы исправить сейчас. Потому как переехал с 1.5 на 3.0 и раньше были указаны канонические ссылки, а теперь убрать пришлось =\
*

skai

  • Moderator
  • 1198
  • 153 / 1
  • skaiseo
Re: rel="canonical" в Joomla! 3.0
« Ответ #3 : 17.10.2012, 19:13:14 »
сегодня ночью тоже поставил посмотреть что нового...
- сначала восторг,
- затем абсолютное разочарование...  похоже SEOшника в команде разработчиков как небыло так и нет.
Даже беглый осмотр админки вызвал полное разочарование.. Ни одной сколь-либо значимой хоетлки я не увидел. Про демо-шаблоны вообще молчу - это здец.

..слабо надеюсь что что-то будет сделано в ближайшей перспективе.
по прежнему придётся использовать сторонние решения и хаки.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: rel="canonical" в Joomla! 3.0
« Ответ #4 : 17.10.2012, 19:28:38 »
Ничего не будет в плане SEO.
В команде похоже никто это даже не признает, любые правки - в штыки.
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Re: rel="canonical" в Joomla! 3.0
« Ответ #5 : 17.10.2012, 20:38:24 »
Честно говоря Я закрыл на все глаза и обновил свой сайт. Хотя всегда был сторонником зла LTS и от обнов отказывался, но мне хотелось вплотную приблизиться к Bootstrap, поэтому и решился...
А админка мне напротив очень понравилась... Они вроде некую панель админа хотят на фронт вывести еще, чтобы видимо было как в WP...
Хотя это все оффтоп...
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Re: rel="canonical" в Joomla! 3.0
« Ответ #7 : 24.10.2012, 20:27:41 »
http://joomlaforum.ru/index.php/topic,233793.msg1217651.html
Спасибо. Думаю тему можно закрыть, хоть это и не совсем то, что спрашивалось в теме, тем не менее конечным результатом Я доволен.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор sergeytolkachyov

Ответов: 25
Просмотров: 5125
Последний ответ 24.11.2023, 10:24:11
от sergeytolkachyov
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 2938
Последний ответ 20.09.2022, 20:53:56
от darkghost
Расширенные описания страниц в Joomla (микроданные, микроформаты, RDFa, schema.org)

Автор ELLE

Ответов: 151
Просмотров: 112709
Последний ответ 20.11.2021, 18:15:42
от Byzi
Вопрос по отличию SEO MODx и Joomla

Автор vovafit

Ответов: 7
Просмотров: 1873
Последний ответ 20.11.2021, 18:15:09
от Byzi
Не получается поменять description на главной странице Joomla 3.

Автор illimited

Ответов: 11
Просмотров: 1549
Последний ответ 21.12.2020, 14:39:49
от illimited