Движок темплейтов.
Выкладываю движок темплейтов, использующийся в моей CMS.
Его я писал сам, но под влиянием двжика темплейтов из phpbb.
Лицензия: GNU LGPLv3+.
Оригинал — 305 строк с шапкой и комментариями, выкладываемая версия — 326 строк, из-за того, что поддержку кэша пришлось вносить в саму библиотеку.
Примеры синтаксиса:
{L_NAME}: {USER_NAME}
<date /> <date time="{TIME}">Y-m-d H:i</date> [date time='{TIME}+60*60*24*7' /]
<ul>
<block name="row">
<li class="row[var expr='{row.BLOCK_NUM}%2' /]">{row.CONTENTS}</li>
</block>
</ul>
<if expr="{IS_ADMIN} || {IS_USER}">
текст
<else expr="{IS_INDEX}">
другой текст
</else>
<else>
третий текст
</else>
</if>
<switch expr="{ERROR_CODE}">
<case expr="404">Не найдено.</case>
<case expr="403">Запрещено.</case>
<case expr="{MY_ERROR_CODE}">{MY_ERROR}</case>
<case>Ошибка {ERROR_CODE}.</case>
</switch>И так далее, подробности – внутри, документация – в архиве.
Тут часть вещей срезана из-за зависимости от других модулей, но я выкладываю diff-файл с разницей от оригинала. Конкретно:
- даты в cms обрабатывались через специальную функцию, поддерживали чуть более гибкое представление (локальные имена месяцев в родительном падеже), зависели от выбранного языка, и по умолчанию использовали формат, настраиваемый в профиле пользователя/админке,
- кэш работал через специальный модуль,
- функции-обёртки для переменных вида L_NAME и ICON_SAVE использовали не название функции, а название модуля и название функции в нём.
Ставится простой распаковкой, и, если понадобится – проставлением прав на папку кэша. Там внутри есть файл с примерами использования и комментариями. При открытии по http покажет примеры кода темплейтов, а как использовать со стороны php кода – можно посмотреть в файле „index.php“.
Да, .htaccess файлы я в архив класть не стал, но напоминаю, что к папке cache доступ по http хорошо бы запретить.
Скачать: template.tar.bz2.
Обновлено 2009-08-15.


