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

homelux

  • Захожу иногда
  • 190
  • 1 / 1
ключевые слова
« : 01.06.2011, 09:02:39 »
Здравствуйте, в общих настройках есть поле мета-описание для всего сайта, я так понимаю оно должно появляться, если всести название сайта в поисковике, в Google так и есть, а Яндекс почему-то выдает каждый раз разное, вчера было:

"Пропустить и перейти к материалам. Перейти к Главной навигации и Войти. ", а сегодня выводит текст статьи главной страницы.

Как сделать чтобы выпадало всегда описание сайта, введенное в мета-поле?
И сколько желательно слов при этом использовать?
*

homelux

  • Захожу иногда
  • 190
  • 1 / 1
Re: ключевые слова
« Ответ #1 : 06.06.2011, 09:56:09 »
И все же проблема, остается открытой, может кто разбирается в SEO, подскажет почему Yandex выводит текст статьи главной страницы если всести название сайта, я в этом новичек.
И как правильно вписать метаслова и титлы к страницам?
*

roga_i_kopita

  • Осваиваюсь на форуме
  • 32
  • 4 / 0
Re: ключевые слова
« Ответ #2 : 17.06.2011, 23:49:34 »
Из собственных наблюдений (документацию не читал, возможно там это описано):
В Joomla существует некая иерархия по приоритету показа keywords и description. От материала до общих настроек приоритет уменьшается.
Как это понимать?
Допустим, есть материал. В нём заполнены поля description и keywords.
Этот материал выводится через пункт меню Главная на главную страницу. У этого пункта меню (главная) указанные поля, а также title (поле "Заголовок страницы в браузере") тоже заполнены.
В общих настройках сайта поля description и kewords, а также title (поле "Название сайта") тоже заполнены.
Что увидим в исходном коде страницы?
Мы увидим в мета-теге description то описание, которое ввели при написании материала, несмотря на то, что это поле также описано (другим образом) и в настройках пункта меню Главная, и в общих настройках сайта. Т.е. описание description материала имеет приоритет над description в настройках пункта меню и в общих настройках. Если в материале это поле будет пустым, то в исходном коде будет описание description пункта меню Главная (описание меню имеет меньший приоритет относительно материала, но больший относительно общих настроек). Соответственно, если будет заполнено поле description только в общих настройках, а в материале и настройках пункта меню оно будет пустым, то и выводиться будет только description из общих настроек сайта.
Аналогично с полями keywords и title.
Думаю, это весьма очевидные вещи, становятся понятны с опытом использования Joomla даже без чтения документации любому пользователю.

Относительно правильности описания этих полей может помочь эта статья.
В дополнение к ней даже на этом форуме есть темы с обсуждением данной проблематики. Например, в этой ветке человек говорит, что Яндекс не любит тайтлы длиннее 80 символов. Я не знаю, на чём основано это утверждение, написал этому пользователю в личку. Ответа пока не получил.

Также вот очень полезная ссылка и вот целая тема по SEO на этом форуме. Там же, в теме, есть пост с вложением рекомендаций от Яндекса в виде архива.

Относительно Вашего вопроса Google пишет:
"Содержимое тега <title> будет названием вашей страницы в результатах поиска. Слова, содержащиеся в поисковом запросе пользователя, будут выделены жирным шрифтом в заголовках поисковой выдачи. Это помогает пользователю найти страницы, наиболее соответствующие его запросу."
В большинстве случаев так оно и есть. Более того, представители Google, в недалёком прошлом как-то заявляли, что будут пересматривать логику работы своей поисковой системы. Связано это было с тем, что, например, при запросе Lufthanza в выдаче на первых позициях показывались организации, которые просто торгуют билетами от этой авиакомпании (и не только этой). Таких организаций было великое множество, а сайт самой авиакомпании Lufthanza, которая собственно "кормит" всех этих продавцов, был в выдаче на самых последних местах. Получился такой вот несправедливый перекос. Google, видимо, пересмотрел реализацию этого вопроса. Ситуация изменилась.

Чего не скажешь о Яндексе!
Яндекс, видимо, работает по другим алгоритмам и логике.  ;D В выдаче Яндекса зачастую, лично для меня, вообще не видно никакой логики. Он, как женщина. Ему, видимо, вообще плевать на тайтлы и кейворды. Индексирует только контент. Но я заметил, что Яндекс очень хорошо реагирует на уникальный контент. А вот сайты с размноженным контентом по методике "copy -> paste" он добавляет в выдачу далеко не на первых страницах. Это всё мои сугубо личные наблюдения и выводы. Если ошибаюсь, пусть профессионалы меня поправят.
« Последнее редактирование: 18.06.2011, 00:30:07 от roga_i_kopita »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Составляю семантическое ядро, где конкретно нужно прописывать слова?

Автор Руслан Н.

Ответов: 9
Просмотров: 2020
Последний ответ 24.02.2017, 00:30:44
от ELLE
Стоит ли в описании категории выделять слова?

Автор Артём 2014

Ответов: 5
Просмотров: 1359
Последний ответ 13.02.2016, 11:45:59
от ChaosHead
Ключевые слова в Joomla

Автор vladaha

Ответов: 0
Просмотров: 1369
Последний ответ 06.11.2015, 15:06:55
от vladaha
Странные левые ключевые слова в содержании

Автор Kinimania

Ответов: 0
Просмотров: 1020
Последний ответ 18.04.2015, 11:59:33
от Kinimania
Как правильно написать ключевые слова?

Автор Dinar

Ответов: 12
Просмотров: 17967
Последний ответ 16.06.2014, 09:48:39
от Hot_Gomer