Ага, не сразу сообразил про что он. Присоединяюсь к вопросу. Такие конструкции хороши только в теории, на практике же реально проще написать ul/ul, потому как оно можно снабжаться не только классом, но и другими атрибутами, в т.ч. и в li. Обычно либо подобная штука такого не позволяет, либо конструкция становится более громоздкой, чем оригинал.
Циклы и рекурсии отменили? И вообще, вы смотрели скрипт-код данный мной? Я же сделал там процедуру в цикле, разве не видно? Я наглядно показал, что можно делать с блоками. На счет: товаров, новостей, категорий, прочее... То, что относится к шаблонному файлу, можно сделать отдельно шаблонный файл и сделать новость. new.html Код (PHP): while($new=$db->query($news,true,'fetch_assoc')) { $this->file('new'); if(!$new['general']) { $this->struct('action'); } $noindex=$new['noindex']; if(!$noindex) { $this->struct('noindex'); } $this->tag('{rel}',$noindex?' rel="nofollow"':''); $this->tag('{checked}',!$noindex?' checked="checked"':''); $this->tag('{url}',$new['url']); $this->tag('{title}',$new['title']); $this->tag('{date}',date('d.m.Y',$new['date'])); $this->tag('{text}',$new['brief']); $this->parse('content',true); } А можно не создавая отдельный файл, сделать блок (секцию): Код (PHP): $cacheNews=cache::is('news')?cache::get('news'):''; if(!$cacheNews) { while($new=$db->query($news,true,'fetch_assoc')) { $this->struct('news',array( '{title}'=>$new['title'], //,.,.,.,.,.,., ),array( 'cache', 'set' )); } } $this->html('content',$cacheNews); Ну это так пример, на самом деле, все гораздо красивее будет)))