1.10.5 Вызов компонента в плагине

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 4 марта 2015 в 23:07
В одном плагине появилась необходимость вызвать некоторые компоненты (точнее их содержимое).
Основные компоненты:
Статьи
$this->events[] = 'GET_ARTICLE';
Блоги
$this->events[] = 'GET_POST';
Объявления
// $this->events[] = 'GET_BOARD_RECORD';

а как вызвать премиум компонент iVideo и iMaps?
у Видео как я поняла GET_ROUTE_VIDEO? а в Мапс вообще не нашла.
#2 4 марта 2015 в 23:53
Доротея, вы путаете. Вот прямо все спутали.
Если вам нужно вызвать компонент, то подключаете файл фронтэнда и вызываете функцию компонента, например content(), а еще более наглядно вызывается компонент комментариев.
То, что вы видимо хотите, это просто обслужить нужный вам эвент. Эвенты проставляет разработчик в нужных, на его взгляд, местах. Кстати в двойке эвенты названы хуками, но смысл в принципе тот же.
Например, если рассмотреть эвент GET_ARTICLE, то он вызывается при получении массива данных статьи и ему этот массив передается для изменения/дополнения/удаления содержимого этого массива, в зависимости от цели плагина.

а как вызвать премиум компонент iVideo и iMaps?

Доротея
Для этого нужно знать их названия и что им передается. Это можно узнать у разработчиков.

у Видео как я поняла GET_ROUTE_VIDEO

Доротея
Этому эвенту передается массив роутинга видеокаталога в большинстве случаев для его динамического дополнения. Но кроме него есть еще очень много эвентов на разные действия. Уточнить нужные вам эвенты можно, повторюсь, у разработчиков.
#3 5 марта 2015 в 00:21


Для этого нужно знать их названия и что им передается. Это можно узнать у разработчиков.


повторюсь, у разработчиков.

Fuze

Fuze

Хорошо разработчик, спасибо)
#4 5 марта 2015 в 10:27
Рыжик, или уровень твоего мастерства программирования во много раз превосходит мой, или ты не можешь толком объяснить, что хочешь.
Насколько я помню, строчки вида
  1. $this->events[] = 'ИМЯ_ЛОВУШКИ';
указываются в самом плагине как имя ловушки, которую плагин должен отработать. Сама же ловушка устанавливается в компоненте.

В целом механизм срабатывания плагинов таков: например у тебя в компоненте стоит ловушка плагина ИМЯ_ЛОВУШКИ.
  1. $item = cmsCore::callEvent('ИМЯ_ЛОВУШКИ', $item);
Работает все так:
ИМЯ_ЛОВУШКИ ->обращение к ядерному методу callEvent() -> обращение к таблице БД "cms_plugins" и формирование массива включеных плагинов -> перебор этого массива и поиск плагина с именем ловушки ИМЯ_ЛОВУШКИ ->передача данных этому плагину и выполнения метода плагина, соответствующего данной ловушке -> отправка данных, полученных плагином в результате его работы обратно в ядро -> возвращение данных плагина из ядра в ту точку компонента, откуда плагин вызывался.

Таким образом, строчка в компоненте
  1. $item = cmsCore::callEvent('ИМЯ_ЛОВУШКИ', $item);
позволяет изменить значение переменной или массива $item в плагине, если тот присутствует в движке и включен. Если отсутствует или выключен, значение $item НЕ меняется.

Вот и вся кухня плагинов. Все просто.

PS. И ваще ты вот эту статью в моем блоге читала? Там все подробно расписано.
#5 5 марта 2015 в 12:57
Спасибо большое)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.