Главная > Неразобранное > Движок темплейтов.

Движок темплейтов.

Выкладываю движок темплейтов, использующийся в моей 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.

  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.