[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHPTAL - крутой шаблонизатор
kirik
Наверное единственный шаблонизатор который мне реально понравился идеей! Думаю даже буду его использовать в дальнейшем (или напишу свой велосипед, ибо PEAR либа немалая smile.gif ).

http://xaxoxy.habrahabr.ru/blog/75082/



Спустя 10 дней, 16 часов, 16 минут, 10 секунд (23.11.2009 - 12:20) yazykov написал(а):
До сих пор не понимаю смысл использования шаблонизаторов...

По идее это должно было что-то там облегчить, а в результате - приходится учить второй подъязык (и не PHP, и не HTML, но чтобы понять, надо владеть и тем и другим, по мне - лучше просто владеть PHP и HTML)

+ (точнее это минус) включение кучи файлов ненужного кода, который будет использоваться дай Бог на 5%

Нафига такая бодяга? Может кто внятно разъяснить в чем он видит для себя удобство использования шаблонизаторов?

<html>
<head>
<title>
Smarty</title>
</head>
<body>

Hello, {$name}!
</body>
</html>

Давайте только отличать шаблоны от шаблонизаторов, шаблонами сам пользуюсь с удовольствием.

Чем код smarty, например, отличается от программирования?
    {if $error ne ""}
<tr>
<td
bgcolor="yellow" colspan="2">
{if $error eq "name_empty"}You must supply a name.
{elseif $error eq "comment_empty"} You must supply a comment.
{/if}
</td>
</tr>

{/if}


и в других шаблонизаторах происходит смешение кода и HTML

Спустя 8 минут, 29 секунд (23.11.2009 - 12:28) sergeiss написал(а):
yazykov - на эту тему уже были тут "холиварные" войны wink.gif Похоже, kirik хочет еще раз устроить одну из них...

Краткое резюме всех предыдущих 105 серий споров:
- противники шаблонизаторов - "По идее это должно было что-то там облегчить, а в результате - приходится учить второй подъязык" (это я тебя процитировал)
- сторонники - "ну это же круто!"

PS. К сторонникам шаблонизаторов не отношусь...

Спустя 7 минут, 21 секунда (23.11.2009 - 12:36) glock18 написал(а):
поправлю

ну это же круто!

=>

ну это же круто - полное разделение логики и представления biggrin.gif

Вообще, этот шаблонизатор нечто новое. Чем kirik'у и понравился. Да и мне тоже. Подход совсем не тот, что у всего остального.

Для меня лично показатель уже то, что эта либа попала в PEAR. Показатель того, что она хороша. Хотя лично я вряд ли по собственной воле опять начну использовать шаблонные движки.

Спустя 24 минуты, 26 секунд (23.11.2009 - 13:00) twin написал(а):
Подход интересный, но основные два недостатка так и остались.
1. Сложный для верстальщика код.
2. Необходимость парсить шаблон.
Да и обойти это невозможно по определению. Так что хоть и оригинально, но не особо интересно...

Спустя 13 минут, 44 секунды (23.11.2009 - 13:14) yazykov написал(а):
Цитата (glock18 @ 23.11.2009 - 13:36)
Вообще, этот шаблонизатор нечто новое. Чем kirik'у и понравился. Да и мне тоже. Подход совсем не тот, что у всего остального.

Чего там нового - непонятно
- остается внедрение псевдо-языка в HTML код
- необходимость парсить шаблоны
что twin уже отметил

Ничего интересного не вижу в шаблонизаторах.

Спустя 21 минута, 48 секунд (23.11.2009 - 13:35) glock18 написал(а):
*Филосовски* Интересное есть во всем.

Спустя 18 минут, 17 секунд (23.11.2009 - 13:54) yazykov написал(а):
Цитата (glock18 @ 23.11.2009 - 14:35)
*Филосовски* Интересное есть во всем.

Здравый смысл подсказывает, что у всего должны быть критерии
И обсуждается нужность/ненужность шаблонизаторов со вполне определенных критериев.

Какие задачи решают шаблонизаторы? Попробуйте озвучить ваши критерии.

А ерундой заниматься (типа извлечения корня на бумжке, вместо использования калькулятора) интересно, когда дофига свободного времени.

Спустя 26 минут, 28 секунд (23.11.2009 - 14:20) dr_Lev написал(а):
yazykov Полностью согласен, если нужно срочно слепить какойнить средней сложности сайт, то тогда есть смысл использовать шаблонизаторы и всякие разные либы типа adodb, jquery... а когда вообще приспичило, тогда можно взяться и за CMS типа джумлы или модикс.
Другое дело, когда требуют качество и скорость, а сроки не критичны...

Спустя 5 минут, 2 секунды (23.11.2009 - 14:25) glock18 написал(а):
yazykov
шаблонизаторы предлагают определенный уровень разделения логики и представления. если для кого-то она удобней, то так тому и быть.

Цитата
И обсуждается нужность/ненужность шаблонизаторов со вполне определенных критериев.

критерии остаются под сомнением. необходимость парсить шаблоны исчезнет только вместе с шаблонами.

Цитата
А ерундой заниматься (типа извлечения корня на бумжке, вместо использования калькулятора) интересно, когда дофига свободного времени.


ассоциация. поэтому я в большнистве случаев считаю его приблизительно в уме. если мне не нужен калькулятор, а траты времени на его поиск не оправдывают его. это все верно, только кто-то все равно пойдет за калькулятором (посчитает на бумажке).

Спустя 1 час, 8 минут, 22 секунды (23.11.2009 - 15:34) yazykov написал(а):
Цитата (glock18)
критерии остаются под сомнением. необходимость парсить шаблоны исчезнет только вместе с шаблонами.

Мне кажется, что вы не делаете различия между шаблонами и шаблонизаторами.
Выше я писал: "Давайте только отличать шаблоны от шаблонизаторов, шаблонами сам пользуюсь с удовольствием."

Зачем, например, использовать
Hello, {$name}!
а не просто
Hello, {name}!

или зачем нужно
{if $error eq "name_empty"}You must supply a name.
{elseif $error eq "comment_empty"} You must supply a comment.
{/if}
а не просто код PHP?

PHP и так является компилятором, а тут еще делать над ним лишнюю надстройку? Зачем?
Зачем верстальщику элементы программирования?
Зачем программисту смешивать PHP и HTML (да еще в такой извращенной форме, разве чтобы показать свое мастерство...)?

Спустя 14 минут, 9 секунд (23.11.2009 - 15:48) Joker написал(а):
А вы заметили кирик создал темку отписал два поста и молчит)) а остальные снимают 106 серию новый спор начали.

Спустя 2 часа, 3 минуты, 17 секунд (23.11.2009 - 17:51) glock18 написал(а):
Joker
Кирик сейчас спит, ему можно smile.gif

yazykov
теперь сравните приведенные примеры взятые из smarty-подобного движка, и того, что предлагает phptal.

вообще странно: доказывать то, что шаблонизатор такой же, как и все, но при этом приводить совершенно не подходящие для него примеры кода.

я кстати говорил прежде, что не использую движки шаблонов. просто я достаточно либерален.

А вот теперь объясните мне, чем лучше
Hello, {name}!
чем
Hello, {$name}!

Шаблон есть - есть движок шаблонов, иначе что с ними работает? Другое дело, что движок этот по сравнению с подавляющим большинством сильно упрощен. И все различие.

Спустя 21 минута, 27 секунд (23.11.2009 - 18:13) waldicom написал(а):
Я вообще не понимаю, о чем спор. Те, кто не использует шаблонизаторы, те и не будут. А кто использует, потому что это удобно, то тот так и будет.
А заявления типа "До сих пор не понимаю смысл использования шаблонизаторов" это вообще верх совершенства. Некоторые до сих пор не видят смысл использования автомобилей, компьютеров, калькуляторов... Но это не мешает другим людя с успехом и по назначению использовать эти вещи.

Kirik'а как зачинателя надо того...медаль выдать tongue.gif

Спустя 2 часа, 30 минут, 46 секунд (23.11.2009 - 20:43) kirik написал(а):
Мда.. Вот уйдешь поспать а тут smile.gif

glock18
Спасибо, поддержал схожую с моей точку зрения smile.gif

Цитата (waldicom @ 23.11.2009 - 10:13)
Kirik'а как зачинателя надо того...медаль выдать

А вот не откажусь! smile.gif

yazykov
Странный вы тролль человек. Приплели сюда дурацкий шрмарти.

Цитата (yazykov @ 23.11.2009 - 07:34)
Зачем, например, использовать

Затем что вот код на нативе:
<?php foreach ($values as $value): ?>
<div
class="item">
<div
class="title">
<?php
if ($value->hasDate()): ?><?=$value->getDate()?><?php endif; ?>
<a
href="<?= $value->getUrl() ?>"><?=
htmlentities($value->getTitle())
?></a>
</div>
<div
class="content">
<?=
htmlentities($value->getContent()) ?>
</div>
</div>
<?php
endforeach; ?>



А вот на "Атрибутном Языке Шаблонов":
<div class="item" tal:repeat="value values">
<div
class="title">
<span
tal:condition="value/hasDate" tal:replace="value/getDate"/>
<a
tal:attributes="href value/getUrl" tal:content="value/getTitle"/>
</div>
<div
id="content" tal:content="value/getContent"/>
</div>


Если разницы до сих пор стало не видно, почитайте тут. А если и после этого мысль "Шаблонизаторы - гавно" не оставляет голову - используйте PHP, я разрешаю wink.gif

Цитата (twin @ 23.11.2009 - 05:00)
1. Сложный для верстальщика код.

На самом деле не сложнее чем с нативом. Более того, верстальшик сразу может посмотреть сверстанный шаблон как он будет выглядеть.
Цитата (twin @ 23.11.2009 - 05:00)
2. Необходимость парсить шаблон.

Ну тут собственно есть такая штука smile.gif Пхп ведь тоже парсит шаблон smile.gif А по скорости тут не сильно отличается от натива потому что шаблоны "компилируются" в натив и потом читаются оттуда.

Цитата (dr_Lev @ 23.11.2009 - 06:20)
yazykov Полностью согласен

Но ведь вы не согласны smile.gif yazykov речь ведет о том, что "Шаблонизаторы - сакс, абсолютно бесполезные поделки".


Тыц smile.gif

Спустя 32 минуты, 49 секунд (23.11.2009 - 21:16) twin написал(а):
Цитата
На самом деле не сложнее чем с нативом.

А я никогда за натив в чистом виде не ратовал. Даже наоборот...
Для себя я вижу единственно разумный компромисс - вывод в шаблон только переменных, без логики. Тогда точно так же
Цитата
верстальшик сразу может посмотреть сверстанный шаблон как он будет выглядеть.
- раз и нет никакого логического суррогата - два.
Вот так примерно выглядел бы мой шаблон.

<div class="item">
<div
class="title">
<?php
echo $date; ?>
<a
href="<?php echo href() ?>"><?php echo $title; ?></a>
</div>
<div
class="content">
<?php
echo $content; ?>
</div>
</div>

У моей схемы тоже есть недостаток - приходится шаблон дробить на более мелкие части, но по опыту знаю, что с этим верстальщики справляются куда проще, нежели со странными тегами или куда страшнее - языком смарти.

Идеального решения все равно нет и не будет, нельзя написать грамотный шаблонизатор на шаблонизаторе, коим php и является по сути своей.

Этот язык был придуман для программиста и верстальщика в одном лице, по этому никакие заплатки не скроют его дырявости в этом отношении.

Спустя 21 минута, 49 секунд (23.11.2009 - 21:38) kirik написал(а):
Цитата (twin @ 23.11.2009 - 13:16)
Идеального решения все равно нет и не будет

Вот! Только мне не нравится последнее слово smile.gif

Спустя 9 минут, 44 секунды (23.11.2009 - 21:48) twin написал(а):
Никому не нравится(( А что делать... Жить то как то надо. biggrin.gif

Спустя 7 дней, 16 часов, 39 минут, 37 секунд (1.12.2009 - 14:27) AmberLEX написал(а):
Все равно я чего-то недопонимаю. Попробую выразить мысль.
Скажу на реальном примере (упрощенный пример).
Нужно сделать средненький сайт. Определились со структурой, какие будут страницы и что на них будет. Потом работу делает верстальщик.

Например. На сайте есть страница гостевой. Верстальщик мне дает полность готовую страницу сайта (Т.е. от <html> до </html>)
Сверстанный вариант guest.html (даю только часть самих сообщений в гостевой):
...
<p>Отзывов: 36</p>

<table
class="table1" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th>
Екатерина - Киев (21.10.2009)</th></tr>
<tr><td>
Огромное спасибо</td></tr>
</table>

<table
class="table1" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th>
Паша Гоблин - Ростов (11.10.2009)</th></tr>
<tr><td>
Текст сообщения</td></tr>
</table>

...</span>

Шаблон есть, css и js подключены. Я запустил файл и сразу вижу как выглядит страница.

Т.е. на странице мне нужно вывести:
Количество отзывов ($kol)
И в цикле: имя ($name), город ($city), дату ($date) и сообщение ($message).

Мой шаблон guest.tpl для Smarty такой:

<p>Отзывов: {$kol}</p>

{foreach from=$rows item=elem}
<table class="table1" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th>
{$elem.name} - {$elem.city} ({$elem.date|date_format:"%d.%m.%Y"})</th></tr>
<tr><td>
{$elem.message}</td></tr>
</table>

{/foreach}</span>

где $rows - массив с сообщениями пользователей (именем, городом, датой и сообщением)

Ну естесственно, шапку, меню, подвал, я отделил в другие части: типа header.tpl, menu.tpl и footer.tpl или там уже как душа пожелает.

В модели (model) я например пишу функцию для чтения всех записей гостевой и функцию подсчета количества сообщений, в контроллере (controller) вызываю эти функции и присваиваю переменным результат их работы и передаю их в шаблон (или представление - view) А в шаблоне (представлении - view) в цикле вывожу все на страницу. Шаблон страницы уже есть.

Так вот, зачем верстальщику вообще знать смарти или еще что-то (ну конечно он обязан разбираться в логике и программировании на элементарном уровне, да не понимающих сейчас нет, наверное) Я как программист могу использовать какой угодно шаблонизатор или вообще с помощью php это вывести - это как мне удобнее, так и cделаю. Верстальщику вообще уже побарабану как я буду делать вывод сообщений, в цикле на смарти или на php.

И я знаю, что так реально делаются многие сайты. И верстальщик вообще не заморачивается по поводу шаблонизаторов, логики, изучением языка шаблонизатора и т.п. Он занимается версткой, рисованием, css, js, jQuery.

Программисты спорят какой шаблонизатор лучше, а верстальщик сверстал все нужные страницы, подключил все стили и js. Как выглядит каждый элемент сайта и страницы - есть (т.е. фактически есть весь сайт, только статичный). Все файлы на html. Бери вставляй переменные {$kol} или <?= $kol ?>, логику если надо и все. Объясните, может я что то не так понимаю?

Спустя 8 минут, 37 секунд (1.12.2009 - 14:36) Семён написал(а):
имхо жалкий клон smarty в другом фантике.

Спустя 4 часа, 39 минут, 51 секунда (1.12.2009 - 19:16) Shurick написал(а):
а чего? по моему с шаблонизаторами легче. в коем веке решил вникнуть в смарти а тут такое пишут unsure.gif blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.