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

 
Посетитель
small user social cms
Медаль
Сообщений: 132
В одном плагине появилась необходимость вызвать некоторые компоненты (точнее их содержимое).
Основные компоненты:
Статьи
$this->events[] = 'GET_ARTICLE';
Блоги
$this->events[] = 'GET_POST';
Объявления
// $this->events[] = 'GET_BOARD_RECORD';

а как вызвать премиум компонент iVideo и iMaps?
у Видео как я поняла GET_ROUTE_VIDEO ? а в Мапс вообще не нашла.
Подпись на форуме:
Можно использовать BBCode
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4379
Доротея, вы путаете. Вот прямо все спутали.
Если вам нужно вызвать компонент, то подключаете файл фронтэнда и вызываете функцию компонента, например content(), а еще более наглядно вызывается компонент комментариев.
То, что вы видимо хотите, это просто обслужить нужный вам эвент. Эвенты проставляет разработчик в нужных, на его взгляд, местах. Кстати в двойке эвенты названы хуками, но смысл в принципе тот же.
Например, если рассмотреть эвент GET_ARTICLE, то он вызывается при получении массива данных статьи и ему этот массив передается для изменения/дополнения/удаления содержимого этого массива, в зависимости от цели плагина.
Доротея:
а как вызвать премиум компонент iVideo и iMaps?
Для этого нужно знать их названия и что им передается. Это можно узнать у разработчиков.
Доротея:
у Видео как я поняла GET_ROUTE_VIDEO
Этому эвенту передается массив роутинга видеокаталога в большинстве случаев для его динамического дополнения. Но кроме него есть еще очень много эвентов на разные действия. Уточнить нужные вам эвенты можно, повторюсь, у разработчиков.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 132
Fuze:

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

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

Хорошо разработчик, спасибо)
Подпись на форуме:
Можно использовать BBCode
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1981
Рыжик, или уровень твоего мастерства программирования во много раз превосходит мой, или ты не можешь толком объяснить, что хочешь.
Насколько я помню, строчки вида
Код PHP:
  1. $this->events[] = 'ИМЯ_ЛОВУШКИ';
указываются в самом плагине как имя ловушки, которую плагин должен отработать. Сама же ловушка устанавливается в компоненте.

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

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

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

PS. И ваще ты вот эту статью в моем блоге читала? Там все подробно расписано.
Редактировалось: 4 раз (Последний: 5 марта 2015 в 11:00)
NOP
Посетитель
small user social cms
Медаль
Сообщений: 132
Спасибо большое)
Подпись на форуме:
Можно использовать BBCode
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: