Минимальные требования к шаблонизатору.

TutanXamoN

Новичок
jrip
Если же мы хотим нечто безумно универсальное - мы хотим написать подобие PHP.
Я не спорю пхп хорош, но вы кажется его перехваливаете)
Касательно конкретных задач целиком и полностью согласен.
ИМХО лучше два грамотных костыля чем 1000 строк кода описывающих ситуацию применения такой возможности в универсальной системе.
почему шаблонизатором не может выступать PHP в таком случае?
А вам кто-либо сказал что не может? Может конечно но вопрос шаблонизации здесь рассматривают с абстрактной точки без привязки к языку, синтаксису, планете, системе, галактике...
 

dark-demon

d(^-^)b
> а вот применения остальным математическим операциям в шаблоне я не вижу.

вывод логарифмической гистограммы, например
 

jrip

Новичок
TutanXamoN
Я как раз о том же и говорю, что с очень уж абстрактной точки это всё рассматривается :) Если мы хотим выводить табличку хватит цикла. Если мы хотим чтоб табличка была полосатой нужна переменная. Если мы хотим чтоб табличка была как-то по особому полосатой нам нужны условия. Если уж вообще-вообще по особому полосатой нужна некая работа с переменными, может быть какие-то встроенные функции.. ну и так далее..
 

TutanXamoN

Новичок
jrip
Пример достаточно актуален для меня)
Но всё же тут тоже нужно найти грань ибо всегда быстрее и проще в конкретный момент времени настрочить что-то такое:
PHP:
while($r=mysql_fetch_row($res))
{
$i++;
$i%2==0?$c='green':$c='white';
echo '<tr bgcolor="'.$c.'"><td>'.$r[0].'</td><td>'.$r[1].'</td><td>'.$r[2].'</td><td>'.$r[3].'</td></tr>';
}
А вот когда в системе 500+ таких выводов))) Ето уже головняк.
 

jrip

Новичок
TutanXamoN
а как бы по вашему это выглядело в шаблонизаторе? :)

{while $var}
<tr bgcolor="{$i%2==0?'green':'white'}">
{while $var->data}
<td>{$var->data->data}</td>
{end while}
</tr>
{end while}

Наверное было бы что-то типо подобного :) И в чём плюс?

Я это вообщем к чему всё... Ну не понять мне, нафиг нужны подобные шаблонизаторы :) Вот недавно была ситуация, нужно было переделать некий сайт. Открываю шаблоны а там подобное непотребство. Пришлось потратить время, чтобы разобраться с незнакомым синтаксисом. А вот если бы шаблонизатор был по максимуму прост и вся логика была бы в PHP всё было на порядок проще.
 

TutanXamoN

Новичок
Даже в конкретном примере плюс с источником данных и с выводом заголовков.

-~{}~ 04.02.08 23:11:

всё было на порядок проще.
Вам так кажется)
Когда я пишу вещи подобные моему первому посту - у меня отличная логика которую я отлично понимаю и отличный вывод.
Когда я открываю ето через три месяца с целью добавить пару полей в таблицу изменить заголовки и т.д. я лезу в скул запрос глядеть что соответствует
PHP:
$r[0]; $r[1]; //etc
изменяя всё вручную имхо выгода есть просто не всегда можно сразу её прочуствовать).
 

jrip

Новичок
TutanXamoN
Не понял, какой плюс? :) Этож вообщем тоже самое. Я даже кстати, ошибся, в оригинале у нас нет вложенного цикла, а есть ограниченое количество переменных.

-~{}~ 05.02.08 00:18:

TutanXamoN
Ну начнём с того, что лично я, показанный вами код изобразил несколько по другому.
Шаблон выглядел бы примерно вот так:
<!- Body ->
<table>
{Row}
</table>
<!- Body ->
<!- Row ->
<tr class="bgcolor_{color}">
<td>{Title}</td><td>{Summ}</td><td>{Что-то ещё}</td>
</tr>
<!- Row ->

При этом модуль, который бы это обробатывал бы универсальным.
 

TutanXamoN

Новичок
Пример:
PHP:
//start_1.php
echo '<TR><TD>Поле 1</TD><TD>Поле 2</TD><TD>Поле 3</TD><TD>Поле 4</TD></TR>';
while($r=mysql_fetch_row($res)) 
{ 
echo '<tr><td>'.$r[0].'</td><td>'.$r[1].'</td><td>'.$r[2].'</td><td>'.$r[3].'</td><td>'.$r[4].'</td></tr>'; 
}

//end_1.php
//start_2.php
$a=array('Поле 1', 'Поле 2', 'Поле 3', 'Поле 4');
echo '<TR>';
for($i=0; $i<count($a); $i++)
echo '<TD>'.$a[$i].'</TD>';
echo '</TR>';
while($r=mysql_fetch_row($res)) 
{ 
echo '<TR>';
$b=array($r[0], $r[1], $r[2], $r[3]);
for($i=0; $i<count($b); $i++)
echo '<TD>'.$b[$i].'</TD>';
echo '</TR>';
}
//end_2.php
ИМХО: проще вносить изменения во втором примере. Ето не шаблонизация, но простой пример абстракции вывода.
При написании мы всегда мега-гении и только внесение изменений может показать насколько мы были глупы.
 

MagnetiZ

Новичок
jrip
МАЛАДЕЦ!

Вот тут
http://spectator.ru/technology/php/easy_templates
Кадр омень доходчиво высказался по поводу "зашиваться"
Получается дело стоит за чем?
Выбрать средний промежуток между заменой переменных и smarty
Чтож..... думаю "незабаром" Так оно и будет
А-ля модульная шаблонная система
Хош циклы - включай модуль1
Хош условия - + модуль2
Хош вызовы других шаблонов - модуль3....

А что хочет программер?
Под эгидой переноса дизайна на плечи верстальщика снять с себя нобязаности. Ему нужно думать о "бизнес логике" попивая пиффко в курилке.
 

jrip

Новичок
TutanXamoN
гм... если честно я уже не совсем понимаю о чём вы :) как это относится к шаблонизации? На счёт внесения каких либо изменений... одинаково неудобно в обоих случаях. А если мы потом захотим не таблицу а кучу div`ов?
 

TutanXamoN

Новичок
jrip
Ето уже изменение вывода)
Что с шаблонами что с моим вариантом придётся поиметься.
Я о том что шаблоны дают не только возможность
думать о "бизнес логике" попивая пиффко в курилке.
Но и в случае если программер и верстальщик один и тот же человек - меньше иметь мозг себе)
 

jrip

Новичок
TutanXamoN
Ну вот я к примеру и верстаю сам частенько :) И мне это даже временами нравится. Лично мне шаблоны нужны во-первых для некоторой абстракции. Это позволяет не писать постоянно один и тот же код в большинстве случаев, а пользоваться однажды написанными, универсальными модулями.

А править подобный блочный шаблон, всяко проще чем какой-либо код. В этом шаблоне есть всего лишь два понятия - блок и переменная.
 

atv

Новичок
а можно это как-то формализовать?
что значить использовать "возможность использования отношений родитель-потомок в шаблонах"?
Я имел виду, что в XSLT можно указать, например, что такой-то шаблон применяется для div вложенного в td, или который имеет определённого потомка, и т.д. Хотя, в принципе, для случая шаблонизации это редко применяется.
 

Ирокез

бессмертный пони
Команда форума
Партнер клуба
А править подобный блочный шаблон, всяко проще чем какой-либо код. В этом шаблоне есть всего лишь два понятия - блок и переменная.
Очень грамотное и правильное решение, тем более, что реализованный экстеншен по такому методу превосходит по скорости пхп (в соседней ветки это было, сам реализовывал)

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

Ирокез

бессмертный пони
Команда форума
Партнер клуба
Автор оригинала: zerkms
т.е. ты хочешь сказать, что логики отображения не бывает?
Конечно бывает, но есть языки программирования, которые способны реализовать логику, я вот до сих пор немогу найти логичного решения, для получения количества элементов в массиве с использованием смарти (написание смарти функций, и assign("c",count($a)), по мне не очень красиво), в итоге получаем язык программирования в шаблоне, особенно приятно это верстальщикам.

Это лишь моё мнение.
 

jrip

Новичок
zerkms
А что вы имеете ввиду под понятием "логика отображения"?
 

Фанат

oncle terrible
Команда форума
Ирокез
не превосходит он по скорости.
И вообще, не надо сравнивать шаблоны с явной логикой и шаблоны с неявной.
Надо просто принять, как данность, что они есть. И те и другие.
И рассматривать их по отдельности, а не какой лучше.

Ко всем относится.

-~{}~ 05.02.08 11:37:

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