Я пытаюсь запилить шаблон под хотелки погремушки свои. Попал в тупик, надо создать дерево категорий, чтоб с набором только нужных мне полей, а как сделать лучше, не знаю. Может поделитесь оптыом.
Мне нравится правило движок ничего не готовит в шаблон, нужные струтктуры делаем по месту применения. Так вот я взял заготовку хэлпера, вставил отказ подготовки переменных до шаблона, написал свои функции.
<?php class TemplateEmulator { protected $cms = null; public $not_preassignable = array('*'); public function __construct ( & $cms ) { $this->cms = & $cms; $this->setSmartyPlugins($cms); } protected function setSmartyPlugins ( & $cms ) { $items = array('My', 'Template', 'Functions'); foreach ($items as $name) { $cms->smarty->registerPlugin('function', $name, array($this, $name)); } $cms->smarty->assignByRef('emulator', $this); } public function My ( $params = null, & $smarty = null ) {...} public function Template ( $params = null, & $smarty = null ) {...} public function Functions ( $params = null, & $smarty = null ) {...} } ?>
И вот вопрос собственно касается функции BuildCategoryTree. Заселектить то категории я могу, могу в конце передать в переменную шаблона, но между что
public function BuildCategoryTree ( $params = null, & $smarty = null ) { $items = array(); $query = 'SELECT category_id, parent, name, url FROM categories WHERE enabled = 1'; $result = $this->cms->db->query($query); if (!empty($result)) { как теперь собрать дерево? } $smarty->assignByRef('cats', $items); } ?>
Сласть малина была, чтоб одним проходом, максимально скорость, сократить расход памяти и код желательно покороче) Моё дерево имеет 6K узлов, поэтому такие требования.