Lightning
Трудоголик
где сделать иф?я не понимаю, в чем проблема сделать иф
где сделать иф?я не понимаю, в чем проблема сделать иф
<?foreach($tree as $v):?>
<?if($tree->is_start_position()):?>
<ul>
<?endif;?>
<li><?=$v?></li>
<?if($tree->has_childs()):?>
<?$tree=$tree->get_childs()?>
<?endif;?>
<?if($tree->is_end_position()):?>
</ul>
<?if($tree->get_parent()): ?>
<?$tree=$tree->get_parent();?>
<?endif?>
<?endif;?>
<?endforeach;?>
В твоем примере один цикл и четыре ифа, в моем один цикл и три ифа. Мой пока проще.Если менюху поместить в класс, а классу кастануть Iterator, то всё будет давольно просто...
я говорил про то, чего ты хочешь - http://tinyurl.com/dlcmkqУ меня не блочный шаблон! И нет подшаблонов!
если из твоей цели исходить, то можно, в принципе, сделать функцию tree, в которую передается шаблон ветки, в нем находится шаблон узла и на основе этого всего генерируется дерево. Такой себе вариантА почему native php не обойдусь?! Если не придумаю лучшего решения на нативе чем текущее, то придется оставить как есть



Ты хочешь меня убедить, что у меня блочный шаблон? или что мне нужен блочный шаблон? или что?Автор оригинала: x-yuri
я говорил про то, чего ты хочешь - http://tinyurl.com/dlcmkq
что такое tree, branch и leaf как не блоки? branch, leaf можно рассматривать как подшаблоны custom-тэга tree (но это уже детали терминологии)
если из твоей цели исходить, то можно, в принципе, сделать функцию tree, в которую передается шаблон ветки, в нем находится шаблон узла и на основе этого всего генерируется дерево. Такой себе вариант
варианты С. и попытки упростить шаблон в случае нативного шаблонизатора - имхо, это попытки усесться на 2 стула. Если дизайнер боится циклов, ветвлений и функций - используй какой-нибудь шаблонизатор. Приведи, кстати, свой текущий вариант
<ul id="tree">
<? Tree::init($tree, 'children') ?>
<? while(Tree::get($item)) { ?>
<? if(Tree::branch()) { ?>
<li><div><?= $item['title'] ?></div>
<ul>
<? } elseif(Tree::leaf()) { ?>
<li><a href="<?= $item['href'] ?>"><?= $item['title'] ?></a></li>
<? } elseif(Tree::endbranch()) { ?>
</ul>
</li>
<? } ?>
<? } ?>
</ul>
У меня тоже ничего готовить не нужно. Дерево не преобразовывается в список, а выводится в том виде, в каком поступает из модели.Зато у меня массивы готовить не нужно
Всё выплюнется на ходу
А ты воротишь целую кучу малу..
1) Удобство верстки и удобство программирования у меня не зависят друг от другаНу а если тебе взамен удобства программирования, требуется удобство вёрстки, то советывать, я думаю, здесь больше не чего... Потому как натянуть шаблон - это 1% от всей работы над проектом.
<ul id="tree">
<? Tree::begin($tree, 'children') ?>
<? while(Tree::item($item)) { ?>
<? if(Tree::branch()) { ?>
<li><div><?= $item['title'] ?></div>
<ul>
<? } elseif(Tree::leaf()) { ?>
<li><a href="<?= $item['href'] ?>"><?= $item['title'] ?></a></li>
<? } else { ?>
</ul>
</li>
<? } ?>
<? } ?>
</ul>
<ul id="tree">
<? while( tree($tree) ) { ?>
<? if( branch($tree) ) { ?>
<li><div><?= prop( $tree, 'title' ) ?></div>
<ul>
<? } elseif( leaf($tree) ) { ?>
<li><a href="<?= prop( $tree, 'href' ) ?>"><?= prop( $tree, 'title' ) ?></a></li>
<? } else { ?>
</ul>
</li>
<? } ?>
<? } ?>
</ul>
Можно. Но я бы тоже так не делал. Все равно структура останется такая же. Избыточность синтаксиса - это отдельный разговор. А вот prop ($tree, 'href') - это плохо. В циклах $item['href'], значит и в деревьях должно быть item['href'].а твой шаблон можно сократить до
Может быть, а может быть не видишь сути ты?а может ты просто за деталями не видишь сути
Я свой стул пометил однозначно -- простота шаблона, даже за счет усложнения бэк-енд кода. Не моя вина в том, что даже "сложный" код все равно много раз быстрее и эффективнее всяких курчавых шаблонизаторов получается.попытки упростить шаблон в случае нативного шаблонизатора - имхо, это попытки усесться на 2 стула