phptemplates Extra for MODX Revolution

Итак, предлагаю все, кому интересно и кто силен в php, установить и обкатать phpTemplates.

Источники:
sourceforge.net/projects/modxphptemplate/ (готовый пакет)
github.com/Fi1osof/phptemplates

Этот пакет устанавливает в систему новый тип ресурсов (phpTemplateResource) и новый тип шаблонов (phpTemplate). Это решение позволяет в статических MODX-шаблонах писать не только HTML-код и MODX-теги, но и php-код, то есть подгружает такие шаблоны как обычный php-файл. Это позволяет непосредственно в шаблоне писать чистый php-код с использованием API MODX и без него, использовать сторонние шаблонизаторы (такие как Smarty) и так далее.

Обратная сторона медали (пока до конца не исследована, потому и надо как можно больше тестов): данное решение направлено на то, чтобы как можно меньше использовать MODX-парсер (в перспективе вообще отказаться), и как можно больше писать на чистом php. Велика вероятность того, что при использовании большого числа MODX-тегов производительность может понизиться. Так же при использовании таких шаблонов управление кешем придется полностью брать на себя, то есть использовать $modx->cacheManager, кеширование шаблонизаторов и т.п. Но в руках опытного программиста это стать очень гибким инструментом.

P.S. Отдельное спасибо proxyfabio за участие в разработке пакета!



UPD: Пакет phpTemplates теперь доступен в официальном репозитории.

3 комментария

avatar
Народ, кому интересно, теперь пакет можно скачать из официального репозитория MODX через панель управления пакетами.
Предлагаю установить, погонять и высказать мнение.
avatar
все сделал по видео, но имею на выходе

<html>
<head>
<title>[[++site_name]] - [[*pagetitle]]</title>
<base href="[[++site_url]]" />
</head>
<body>
[[*content]]
1365270974</body>
</html>1

что я сделал не так? спасибо
avatar
Пример в видео немного устарел. Изначально контроллеры (статические MODX-шаблоны) сразу делали print; Это не по религии.
Теперь контроллер должен делать именно return результат. Он будет отправлен дальше MODX-парсеру, и тот уже допарсит то, что осталось от первичного выполнения (MODX-теги), а так же произведет кеширование, корректное закрытие сессии и т.п.

То есть единственное что надо сделать, это в контроллере прописать return $output; который будет содержать код для вывода.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.