Хаки или хуки?

Если возможностей движка не хватает, что лучше?

Используем хуки в Котонти

Многих начинающих пользователей, впервые сталкивающихся с Cotonti, привлекает простота кода этого фреймворка. Действительно, в плане юзабилити и простоты кода с Cotonti могут посоревноваться немногие фреймворки. Однако на определенном этапе у каждого пользователя возникает проблема нехватки функционала или его несоответствия требованиям веб-сайта. На самом деле в этом нет ничего негативного: Cotonti предлагает своим пользователям только самый необходимый функционал. Все дополнительные и часто "немассовые" возможности пользователь Cotonti наращивает самостоятельно. Для этого существует два способа: хак и плагин. Остановимся на каждом из них подробно.

Итак, по тем или иным причинам возможности движка вас не устраивают. Решения очевидны: исправить или дополнить. способов этому, как говорилось ранее, два: использование хака или установка плагина.

Что такое хак и в чем его преимущества и недостатки?

Хак — это непосредственное изменение программного кода, в нашем случае PHP-кода ядра фреймворка. Простой пример хака файла page.inc.php:

"PAGE_DATE" => $pag['page_date'],

добавляем

"PAGE_YEAR" => @date("Y", strtotime($pag['page_date']) + $usr['timezone'] * 3600),

, и получаем тег вывода года создания страницы.

Кстати, большинство разработчиков начинали свой путь в LDU/Seditio/Cotonti именно с хаков. Причин этому две:

  • Хак создается буквально за пару минут
  • Хак не требует знаний работы движка

Однако как у всех хороших вещей, у хаков есть серъезные недостатки:

  • Хаки создают ощутимые неудобства при переходе на новую версию движка
  • Очень часто хаки открывают бреши в системе защиты

Чем плагины лучше хаков?

Плагины лишены недостатков хаков, хотя и требуют понимания структуры движка и базового знания PHP. Что касается сроков, то при знании особенностей системы и небольшом опыте написания, плагины создаются достаточно оперативно.

В качестве примера попробуем реализовать предыдущую задачу при помощи плагина:

<?php
/* ====================
[BEGIN_SED_EXTPLUGIN]
Code=plugincode
Part=page
File=filename
Hooks=page.tags
Order=10
[END_SED_EXTPLUGIN]
==================== */
$t->assign(array(
    "PAGE_YEAR" => @date("Y", strtotime($pag['page_date']) + $usr['timezone'] * 3600)
));
?>

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

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

К посту «Хаки или хуки?» комментариев пока нет

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

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