«Мультихуки» в Cotonti (Seditio)

Оптимизируем использование повторяющегося PHP-кода в CMF Cotonti/Seditio

Данная статья предназначена для плагин-мэйкеров — тех, кто пишет плагины для CMF Cotonti/Seditio. Если вам часто приходится писать несколько файлов с одинаковым кодом, эта статья для вас, поскольку поддержка мультихуков в Cotonti до настоящего времени являлась недокументированной возможностью.

Сначала определимся с терминологией.

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

Мультихук — применение одного и того же кода в разных частях системы.

Большинство плагинов для Котонти работают именно благодаря хукам, которые позволяют реализовать самые невероятные задумки в ваших сайтах.

Однако часто мы сталкиваемся с тем, что один и тот же код нам нужен 2 раза, и, поэтому, пишем соответственно 2 одинаковых файла, в которых немного отличаются заголовочные части (хедеры). На практике это очень неудобно, поскольку приходится каждый раз (например, при обновлении плагина) редактировать оба файла или искать различия в с виду одинаковых файлах. При этом каждый раз возникает мысль: «Ну почему же Котонти не поддерживает мультихук???»

На практике все совсем не так: мультихук все-таки поддерживается. Для начала разберемся с заголовками файлов:

/* ====================
[BEGIN_SED_EXTPLUGIN]
Code=indexpolls
Part=main
File=indexpolls
Hooks=index.tags
Tags=index.tpl:{PLUGIN_INDEXPOLLS}
Order=10
[END_SED_EXTPLUGIN]
==================== */

Разбираемся с каждой строчкой:

  • Code — код (совпадает с именем папки, в которой расположен плагин)
  • Part — часть (весь плагин можно условно разделить на части для того, чтобы в последствии иметь возможность отключать плагин по частям, а не целиком)
  • Hooks — «хук» (место в котором будет подключен плагин, т.е. где он будет выполняться)
  • Order — последовательность (по умолчанию 10, необходим при сложном подключении последовательности плагинов для правильного их исполнения)
  • Tags — тэги (по умолчанию пусто, список тегов, которые использует плагин, и которые необходимы для того, чтобы облегчить простому пользователю работу с системой)
  • File — файл. Это и есть наша заветная часть! Если вы писали плагин, и в этой части указывали неверное имя файла, при загрузке сайта сразу же появлялись ошибки. Знакомая ситуация, не так ли? Но ведь именно здесь можно указать другой файл.

Итак, рецепт мультихука очень прост: в поле File пишем имя файла, код которого, в данном месте должен быть выполнен, а сам файл оставляем пустым. В итоге все просто, быстро, красиво и удобно!

Заинтересовались? Звоните нам по телефонам +375 (29) 774-35-89 и +375 (44) 774-35-89 в Минске. Мы будем рады помочь Вам в реализации Вашего проекта.

К посту ««Мультихуки» в Cotonti (Seditio)» комментариев пока нет

Новый комментарий

Для редактирования комментария осталось 10 минут