
Многих начинающих пользователей, впервые сталкивающихся с 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 в Минске. Мы будем рады помочь Вам в реализации Вашего проекта.