Разные шаблонизаторы. Плюсы и минусы.

BubenPupen

Новичок
hermit_refined
если потребуется вложенными дивами или списками - код помонструозней будет.
Конкретный пример ?

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

AmdY

Пью пиво
Команда форума
BubenPupen и hermit_refined, прикольный спор затеяли. Помотрите в смарти транслированные шаблоны, думаю сразу станет понятно, кто прав.
 

BubenPupen

Новичок
AmdY
Что-то я поискал в мануале Smarty про транслированные шаблоны и ничего не нашел... Дашь ссылку ?
 

AmdY

Пью пиво
Команда форума
сорри, имел ввиду компилированные. BubenPupen, там примерно тоже, о чём пишешь ты.
 

Bermuda

Новичок
BubenPupen
Не обращай внимания. "Птица говорун отличается умом и сообразительностью, умом и сообразительностью." :)
 

Фанат

oncle terrible
Команда форума
Bermuda
увижу ещё проявление личной неприязни - придушу

-~{}~ 06.02.07 14:50:

всех касается.
 

Angerslave

Новичок
Фанат, интересно, как ты из США придушишь чела из Испании? Длинными руками ФБР? ;)
Ну а ваще имхо нужно для начала всем участникам дискуссии поюзать оговариваемые темплейт-движки, ибо я, например, читая про спор "что лучше - смарти или иксэмэль-иксэсэльтэ(хаха, верно было подмечено, что язык сломаешь)" пропускаю добрую половину постов мимо мозга, ибо понимаю что имхо отдельного человека не может считать истиной в последней инстанции... Вообще есть мысль, что в каждом случае нужно использовать наиболее подходящий движок, а не наиболее привычный.
 

hermit_refined

Отшельник
Конкретный пример ?
конкретный пример чего? кода? так я и говорю о том, что вложенными дивами столь же - как с помощью css - компактно и аккуратно на php-native дерево сверстать нельзя.
Зачем ? Все данные, необходимые для шаблона, должны быть уже доступны. У верстальщика просто не должно возникать желание доставать еще какие-то данные.
разумеется, web-сайты - самые неизменяющиеся сущности в этом мире.
и, безусловно, все люди должны переходить улицу только на зеленый свет и не садится за руль пьяными.
Автор оригинала: AmdY
думаю сразу станет понятно, кто прав
кто прав - это пустяки, знать бы в чем.
судя по всему, вы не поняли, про что речь.
 

BubenPupen

Новичок
hermit_refined
конкретный пример чего? кода? так я и говорю о том, что вложенными дивами столь же - как с помощью css - компактно и аккуратно на php-native дерево сверстать нельзя.
1) Для одного дерева я показал аккуратное решение раньше, если твое дерево чем-то отличается, то опиши его и заодно напиши результат, который нужно получить.

2) Ты, как я понимаю, стороник Smarty ? Тогда хотелось бы пример кода на Smarty, аккуратно выводящего твоё дерево.


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

AmdY

Пью пиво
Команда форума
hermit_refined я понимаю так
----------------------------
<tr>
<td><span class="error">*</span>
<?php if ($this->options['strict'] || (isset($t) && method_exists($t, 'translate')))
echo htmlspecialchars($t->translate("name","ucfirst"));?>
:</td>
<td>
<?php if (!$t->error['inforequest_name']) {?>
<input type="text" name="inforequest[name]" value="<?php echo htmlspecialchars($t->inforequest->name);?>"
style="width: 250px;" /><?php }?>
<?php if ($t->error['inforequest_name']) {?><input class="errorField" type="text" name="inforequest[name]"
value="<?php echo htmlspecialchars($t->inforequest->name);?>" style="width: 250px;" /><?php }?>
</td>
--------------------
вот примерно так выглядит код код откомпилированного шаблона (правда, это не смарти, его нет сейчас под рукой), а в шаблоне прописавал {var}{function}.
Т.е. BubenPupen, делает тоже самое, только на прямую.
 

BubenPupen

Новичок
AmdY
Отредактируй своё сообщение, а то код тему "разрывает"

-~{}~ 07.02.07 21:19:

hermit_refined
Ну так что, я дождусь примеров ?
 

john.brown

просто кулибин
Нда, прочитал, и рискну высказать свое скромное мнение.
ИМХО, в шаблоне никаких циклов, условий и тому подобной логики быть не должно по определению - на то он и шаблоном называется. И маркеры блоков отнють не означает, что это какие то "скрытые операторы" - это порсто блоки шаблона, и не надо им придумывать какой то скрытый смысл. Тот же
Код:
<!-- BEGIN: row -->
<tr>
<td>{ROW_NR}</td>
<td>{DATA.ID}</td>
<td>{DATA.NAME}</td>
<td>{DATA.AGE}</td>
</tr>
<!-- END: row -->
меня никто не заставляет выводить в цикле - могу просто однократно вывести. И куда девается "скрытый цикл"?

Без этого смартиевского "масла масленного" и шаблон становится понятнее, и верстальшик не грузится необходимостю вникать в логику, и логика вся переходит в ведение програиимста, что есть гут. Да, контрольер становится увесистее, но и логика происходяшего - понятнее и контролируется одним человеком - программистом.
 

Angerslave

Новичок
john.brown, в основном согласен, но вот задача передо мной встала: реализовать вывод страниц, причём между страницами, например, какой-то разделитель(" | "), текущую страницу не следует отображать ссылкой. ИМХО чтобы это сделать, уже нужно задействовать логику. Причём логику вывода. Опять-таки ИМХО, дизайнер должен сам определять логику, по которой будут выводиться данные.
 

Фанат

oncle terrible
Команда форума
ну почему же.
можно. вот таких блоков, как выше нарисован, напихать десяток - и все будет.
Логика станет понятная - только в путь!
 

john.brown

просто кулибин
Ну а типа, так?
Код:
<!-- BEGIN: page_link --><a href="{$url}">{$title}</a><!-- END: page_link -->
<!-- BEGIN: separator --> | <!-- END: separator -->
<!-- BEGIN: cur_page -->{$title}<!-- END: cur_page -->


<?php
	$pages = array(array('url' => 'http://server.com/page1','title' => 'Page title','is_current' => false),array(...),...);
	
	$i = 1;
	$count = count($pages);
	foreach($pages as $page) {
		if($page['is_current']) $template->display('cur_page',$page);
		else $template->display('page_link',$page);
		if($i < $count) $template->display('separator');
		$i++;
	}

?>
 

Angerslave

Новичок
john.brown, а ты часто сталкивался с выводом навигации по страницам в начале\конце модуля?
 

AmdY

Пью пиво
Команда форума
ИМХО, шаблоны нужно использовать не только для разделение логики и представления, а для облегчения работы. Если дизайнер не способен заучить пару тегов смарти, я буду верстать сам, для экономии времени и нервов.
 

john.brown

просто кулибин
2 Angerslave
Ты что имееш в виду? Писать код вывода, или физически на странице резултирующей размещать в начале и в конце? Если первое, то нет. Есть у меня обект, который этим занимается - заглядывать в него давно не приходилось :)
А если второе, то да - какая же страница без навигации...

2 AmdY

Ну мне проще самому на пхп написать, чем ебсть*сь со смарти, или дизайнеру логику обяснять :)
 

BubenPupen

Новичок
john.brown
<!-- BEGIN: page_link --><a href="{$url}">{$title}</a><!-- END: page_link -->
<!-- BEGIN: separator --> | <!-- END: separator -->
<!-- BEGIN: cur_page -->{$title}<!-- END: cur_page -->
А в каких файлах это все лежит ? На каждый блок отдельный файл ?
 
Сверху