Какой шаблонизатор был бы удобнее для Вас?

Коля Дубр
На сайте с 02.03.2005
Offline
153
6377

Hello, all.

В дале-е-еких планах есть написание скрипта каталога ссылок с человеческим лицом =) Продукт будем раздавать бесплатно, либо за совсем маленькую денюжку, ну, и всячески популяризовывать.

Предполагается, что скрипт должен максимально комфортно встраиваться в любой сайт.

Так вот, вопрос номер раз.

Какой шаблонизатор был бы для Вас наиболее удобен? Есть два основных варианта:

Я всю жизнь работаю с XSL и ничем не обламываюсь, а вот большинство товарищей почему-то его не любят, говорят, что это сложно. Типа, "так верстальщик еще и XSL должен выучить" (а учить самопальный шаблонизатор - конечно, проще). Кроме того, у такого решения есть проблемы с поддержкой: для нормальной работы XSL нужен PHP5, который есть далеко не везде. Как работает Sablotron (в PHP4) я вспоминаю с ужасом, и возвращаться к нему неохота =) Хотя, с другой стороны, пока пхп5 не появился, и на саблотроне довольно резво работали (хоть и с матом =)).

Еще есть Smarty. Плюсы у него такие:

1) Есть документация

2) Работает на PHP 4.0.6 и выше

3) Многие им уже пользовались

Лично мне он не нравится скорее из холиварных соображений (XML forever! =)), но вообще - хвалят.

Если есть еще какие-то варианты, для которых хотя бы есть документация, буду благодарен.

Варианты с самопалом, использующим конструкции вида

{NEWS_ROW_DATE}
и разметку комментами - не рассматриваю, как неуниверсальные и кривые.

Про функционал пока речи не идет, мыслей-то дофига, но сначала надо разобраться с подходом =)

Какой шаблонизатор Вам удобнее использовать для каталога (довольно навороченного)?

XSLT
27% (14)
Smarty
37% (19)
Есть другой (плиз, отметьтесь в топике)
8% (4)
Вообще пофиг, с любым разберусь
37% (19)
Всего проголосовало: 51
Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
YI
На сайте с 06.12.2004
Offline
59
#1

Хорошее решение шаблонов у форума PunBB. Просто и понятно - обычный HTML файл, разобраться можно за 15 минут и быстро встроить в любой дизайн.

Kolyaj
На сайте с 28.03.2006
Offline
69
#2

На Смарти хорошее решение будет, если его использовать не просто как шаблонный движок, а уже как контроллер. Конечно в этом случае верстальщику еще больше возможностей Смарти придется изучить (а не только вставку переменных). Но если использовать по максимуму все возможности (плагины, кэширование, ...) получится логически структурированное приложение, реализуещее паттерн MVC.

gofman
На сайте с 31.10.2004
Offline
100
#3

самый лучший шаблонизатор - это вставки в html коде <?=$str;?>

Kolyaj
На сайте с 28.03.2006
Offline
69
#4
gofman:
самый лучший шаблонизатор - это вставки в html коде <?=$str;?>

Это не шаблонизатор, а "хтмл-файлы с php-вставками". А если серьезно, то если ваше приложение допускает такие "шаблоны", то шаблонизатор вам просто напросто не нужен.

Creeping Shadow
На сайте с 05.10.2005
Offline
98
#5

Коля Дубр, уточняю:

- Sablotron как раз-таки есть не у всех. Но его можно поставить и самому - наМастерхосте например.

- В PHP5 используется libxslt. Там же возникают некоторые проблемы с с динамически генерируемым XML, но все решается с помощью нового расширения PHP5 - streams

Лично я приверженец XSLT - как минимум из-за того, что это стандартно, описано W3C. Плюс еще и удобно... Сейчас пишем CMS на XSLT

Лучшие, на мой взгляд, VPS/VDS в Германии (https://bill2fast.com/aff.php?aff=449) Я поддерживаю Сапу, я не поднимаю цены, не снимаю ссылки, не бегу в биржи-клоны. (/ru/forum/comment/3758255) Антикризисные проекты коттеджей! За персональной скидкой - в личку ;) (http://architek.spb.ru/)
Ayavryk
На сайте с 11.10.2003
Offline
209
#6

Имхо лет через пять XSLT вытеснит все прочее.

И верстальщики научаться.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
NetBot
На сайте с 26.10.2005
Offline
172
#7

Охх.

Вообще пых-пых сам по себе навороченный шаблонизатор. И вставки <?=$str ?> не такими страшными кажутся верстаку как странноватый язык смарти или хлт, хотя научить можно котого угодно чему угодно... но!..

По опыту могу сказать, что шаблоны а-ля phpbb {THIS_ANY_DATA} более всего понятны людям. Правда больши ипаться с подготовкой данных приходится и куча промежуточных шаблонов, но в общих чертах процесс идёт быстрее.

всё это - ИМХО.

dkameleon
На сайте с 09.12.2005
Offline
386
#8

Так же в последнее время на ХСЛТ перебираюсь, хоть не на любом хосте поддержка есть.

Пробую свой движочек-с написать - приходится в онлайне смотреть в client-side режиме :)

А так, в основном заказчикам устанавливаю с шаблонами типа {MOJA_VARIABLA}

Преимуществом ХСЛТ перед смарти является хотя бы то, что не нужно тащить довесок в виде пары десятков килобайт скриптов. Хотя, так же в некоторывх случаях можно списать на недостаток - зависимость от сервера.

Вцелом, если поддержку ХСЛТ будут ставить на всех хостах, то все остальные шаблонизаторы попросту не будут иметь смысла.

ПС. Мож кто знает парсер ХСЛТ написаный на ПХП? :)

Дизайн интерьера (http://balabukha.com/)
Creeping Shadow
На сайте с 05.10.2005
Offline
98
#9

dkameleon, я не просто так тут недавно перепалку с HostCMS http://hostcms.ru затеял 🚬 Они используют XSL. Правда не полностью , но что-то реализовано весьма удачно. Но - закрытый код... Однако - описание API.

Если что обращайтесь - я их дилер теперь ;)

MVH
На сайте с 03.05.2005
Offline
64
MVH
#10

Я использую смарти, т.к. всё нет времени, что бы разобраться с XSL.

Смарти, как уже писал Kolyaj, по умолчанию смарти работает по принципу модели MVC (Model View Controller). Т.е. пользователь обращается к контроллеру (php скрипт), который берёт данные из модели и скрещивает их с шаблоном (view). А потом выдаёт результат пользователю.

Но мне понравилась одна концепция, описанная в книге Д. Котерова "PHP5". Там описано как при помощи смарти реализовать компонентный подход. Отличие от MVC в следующем. Если в MVС пользователь обращается к контроллеру, то в компонентном подходе пользователь обращается к ШАБЛОНУ. Т.е. пользователь обращается к шаблону (обычный html файл, например, без php кода, но со смартивскими тэгами), который вызывает контроллер (такой вызов делается с помощью директив веб-сервера), который берёт данные из модели (или, если модель в скрипте не реализуется, то сам занимается этим).

Шаблон выглядит примерно так:


<html>
<body>
<h1>Новости</h1>
{t_component src="Test_News_Show" name="news" num="2" file="news.txt"}
{foreach from="$news" item="n"}
<li><b>{$n.date}</b> {$n.text}
{/foreach}
{/t_component}
</body>
</html>

Смартивский тэг {t_component} вызывает, так сказать, php скрипт (точнее при обращении к шаблону он обрабатывается php скриптом) и в переменной $news оказывается массив с новостями.

Этот способ показался мне наиболее удобным, т.к. структура файлов более понятная особенно для малограмотных пользователей. Им не надо будет искать где хранятся шаблоны. Кроме того, если, например, пользователь захочет видоизменить каталог ссылок и сделать форму для добавления ссылки не на отдельной странице, а на каждой, то ему не надо будет копаться в php коде и выискивать куски кода, который генерирует необходимые данные для шаблона и переносить их в другие скрипты, а только потом изменять шаблон (как в случае с MVC). Ему просто надо будет открыть шаблон страницы для добавления, вырезать оттуда код:

{t_component src="Test_News_Show" name="news" num="2" file="news.txt"}

{foreach from="$news" item="n"}
<li><b>{$n.date}</b> {$n.text}
{/foreach}
{/t_component}

и перенести его в другой шаблон. И всё.

Правда шаблонизаторов, работающих по этой схеме, я особо не встречал.

Есть правда шаблонизатор templier (в основе которого лежит смарти), который и описывался в книге Котерова. Взять его можно отсюда: http://php5.dklab.ru/ -> download src. Лежит он там в папке templier. Правда я с ним ещё не разбирался.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий