Помощь Создание плагина - Выбор типа

dirdir

Постоялец
Регистрация
19 Мар 2012
Сообщения
112
Реакции
16
В общем, я не до конца понял как правильно выбирать тип создаваемого расширения.

Чем с технической точки зрения будет отличаться плагин System от Content?

По сути, создавая плагин, в классе могу определяться любые методы, как относящиеся к контенту, так и к системным функциям?
В свою очередь эти функции(методы) будут вызваны при срабатывании триггеров на эти события.



Так что 2 кода будут работать одинаково???

1 Плагин Content
PHP:
class plgContentMysPlugin extends JPlugin {

function onBeforeCompileHead()
   {
  }

public function onContentAfterDisplay($context, &$row, &$params, $page = 0)
   {
  }


2 Плагин System
PHP:
class plgSystemMysPlugin extends JPlugin {

function onBeforeCompileHead()
   {
  }

public function onContentAfterDisplay($context, &$row, &$params, $page = 0)
   {
  }


разница будет только
1) В какой папке будет находится плагин.
2) Очерёдность его обработки. Плагины системы - первые, плагины, контента потом, и в каких-то глубинных свойствах джумалы.

Даже из плагина, методы, которого обрабатываются платформой джумала в самую послденю очередь (перед рендерингом и отправкой страницы в браузер ) можно, в созданном методе, переопределить заголовки страницы и прочее.

Есть ёщё что-то что надо знать?
 
В первую очередь нужно почитать доки на оф сайте
Так же, если плагин делается для "масс", а не только для себя - то нужно быть человеком и делать правильно.
В сети ТУЧА манов как делать расширения.
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
В доках об этом написано не лучше чем в книге Марка Декстера.
Примерно тоже что я выше написал. Я имею ввиду выбор типа плагина. Основные технологические отличия одних плагинов от других. Так как кроме порядка вызова плагинов, и реализации в самих функциях (триггерах и обработчиках) в платформе джумалы не заметил. Один и тот же плагин с одним и тем же набором функций отлично работает при разных его типах.


Если есть конкретное место с описанием - просьба дать ссылку (на конкретный раздел)
 
Последнее редактирование:
если плагин в группе content, то он дергается не всегда, а только компонентами которые занимаются выводом контента
в некоторых модулях и компонентах можно отключить обработку плагинов этого типа - если это ненужно. Но не все это умеют и вообще не парятся особо по этому поводу

например K2 дергает группу content и потом свою группу k2 плагинов при выводе статей и в коде это продублированно друг за дружкой
а могли бы и не дергать эти группы плагинов (есть настройка в K2 не дергать свои плагины K2 при выводе контента). Всё исходит от того для чего этот компонент или модуль

А вообще они не зря поделены на группы
Единственное чего не сделали - это прерывание выполнения остальных плагинов, если текущий допустим решил, что остальные уже ненужны (это было бы полезно как минимум для плагина кеша, чтобы он был первый и отдавал кеш, и остальные плагины группы system не выполнялись)
 
Назад
Сверху