Часто существует необходимость в магазине выводить структуру каталога с разными шаблонами для разных уровней.
Я посмотрел идею как это сделано в Неткате и написал соответствующую функцию для Инстант Шопа
Пример использования:
А вот сама функция, надеюсь что будет полезна
Я посмотрел идею как это сделано в Неткате и написал соответствующую функцию для Инстант Шопа
Пример использования:
<? //Выводим каталог $inCore = cmsCore::getInstance(); $inCore->loadModel('shop'); $model = new cms_model_shop(); global $tmpl2, $tmpl3, $tmpl4, $tmpl5; $tmpl5['prefix'] = '<ul class="menu1 level6">'; $tmpl5['postfix'] = '</ul>'; $tmpl5['inactive'] = "'<li><a href=\"%URL\">%TITLE</a></li>'"; $tmpl5['active'] = "'<li><a class=\"active\" href=\"%URL\">%TITLE</a></li>'"; $tmpl4['prefix'] = '<ul class="menu1 level5">'; $tmpl4['postfix'] = '</ul>'; $tmpl4['inactive'] = "'<li><a href=\"%URL\">%TITLE</a></li>'"; $tmpl4['active'] = "'<li><a class=\"active\" href=\"%URL\">%TITLE</a>';global \$tmpl5; \$el.= \$this->showShopStructure(%CAT, \$tmpl5); \$el.='</li>'"; $tmpl3['prefix'] = '<ul class="menu1 level4">'; $tmpl3['postfix'] = '</ul>'; $tmpl3['inactive'] = "'<li><a href=\"%URL\">%TITLE</a></li>'"; $tmpl3['active'] = "'<li><a class=\"active\" href=\"%URL\">%TITLE</a>';global \$tmpl4; \$el.= \$this->showShopStructure(%CAT, \$tmpl4); \$el.='</li>'"; $tmpl2['prefix'] = '<ul class="menu1 level3">'; $tmpl2['postfix'] = '</ul>'; $tmpl2['inactive'] = "'<li><a href=\"%URL\">%TITLE</a></li>'"; $tmpl2['active'] = "'<li><a class=\"active\" href=\"%URL\">%TITLE</a>';global \$tmpl3; \$el.= \$this->showShopStructure(%CAT, \$tmpl3); \$el.='</li>'"; $tmpl['prefix'] = '<ul class="menu1 level2">'; $tmpl['postfix'] = '</ul>'; $tmpl['inactive'] = "'<li><a href=\"%URL\">%TITLE</a></li>'"; $tmpl['active'] = "'<li><a class=\"active\" href=\"%URL\">%TITLE</a>';global \$tmpl2; \$el.= \$this->showShopStructure(%CAT, \$tmpl2); \$el.='</li>'"; print $model->showShopStructure(1, $tmpl);
/* ========================================================================== */ /* ========================================================================== */ public function showShopStructure($cat_id, $tmpl_menu, $strict=0) { $structure = $tmpl_menu['prefix']; $inCore = cmsCore::getInstance(); $seolink = $inCore->request('seolink', 'str'); $cat = $this->getCategoryByLink($seolink); if(!$cat) { $item_id = $this->getItemBySeolink($seolink); if($item_id) $cat = $this->getCategory($item_id['category_id']); } $sql = "SELECT id, NSLeft, NSRight, title, seolink FROM cms_shop_cats WHERE published = 1 AND parent_id = $cat_id ORDER BY NSLeft"; $result = $this->inDB->query($sql); if (!$this->inDB->num_rows($result)) { return false; } while($con = $this->inDB->fetch_assoc($result)) { //проверяем есть ли дочерние элементы $sql_in = "SELECT id FROM cms_shop_cats WHERE published = 1 AND parent_id = ".$con['id']." LIMIT 1"; $res_in = $this->inDB->query($sql_in); if($this->inDB->num_rows($res_in)>0) $has_children = true; else $has_children = false; if($tmpl_menu["inactivehaschildren"]) { $inactivehaschildren = str_replace('%URL', '/shop/'.$con['seolink'], $tmpl_menu["inactivehaschildren"]); } if($tmpl_menu["activehaschildren"]) { $activehaschildren = str_replace('%URL', '/shop/'.$con['seolink'], $tmpl_menu["activehaschildren"]); } $current = false; if(!$strict) { if($con['NSLeft']<=$cat['NSLeft'] && $con['NSRight']>=$cat['NSRight'] ) $current = true; } else { if($con['id']===$cat['id'] ) $current = true; } if($current) { $code = '$el = '.$active.';'; if($tmpl_menu["activehaschildren"]) { if($has_children) { $code = '$el = '.$activehaschildren.';'; } } } else { $code = '$el = '.$inactive.';'; if($tmpl_menu["inactivehaschildren"]) { if($has_children) { $code = '$el = '.$inactivehaschildren.';'; } } } $structure.=$el; } $structure.= $tmpl_menu['postfix']; return $structure; }
Реклама #
Amurland 12 лет назад #
vicoder 12 лет назад #
Amurland 12 лет назад #
eoleg 12 лет назад #
PET 12 лет назад #
vicoder 12 лет назад #
PET 12 лет назад #
vicoder 12 лет назад #
остальные две цены просто для оптовых клиентов, для информации