Как сделать раскрытое дерево категорий в каталоге webasyst Shop Script

Объявления:

Долго искал и нашел решение для реализации раскрытого дерева категорий в каталоге Интернет магазина на webasyst Shop Skript. Пишу как памятку для себя, но думаю эта статья так же будет полезна начинающим веб-мастерам.

В общем если вы хотите сделать раскрытое дерево категорий вам необходимо удалить весь код из файла /ваш-сайт/published/SC/html/scripts/templates/frontend/category_tree.html  и вместо него прописать {newtree}

Далее создать в каталоге /kernel/includes/smarty/plugins - файл function.newtree.php и прописать в нем следующий код:

<?php
function smarty_function_newtree($params, &$smarty){
$disp='';
$disp.='<ul id="navmenu-v">';
$sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent=1 order by sort_order,name';
if($r=mysql_query($sql))
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="parent';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
if($res['slug']!='')
$disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
else
$disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
$disp.=subcat($res['categoryID']).'</li>';
}
$disp.='</ul>';
return $disp;
}
 
function subcat($parid){
$disp='';
$sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent='.$parid.' order by sort_order, name';
if($r=mysql_query($sql)){
if(mysql_num_rows($r)>0){
$disp.='<ul>';
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="child';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
if($res['slug']!='')
$disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
else
$disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
$disp.=subcat($res['categoryID']).'</li>';;
}
$disp.='</ul>';
}
}
return $disp;
}
?>
<?php
function smarty_function_newtree($params, &$smarty){
$disp='';
$disp.='<ul id="navmenu-v">';
$sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent=1 order by sort_order,name';
if($r=mysql_query($sql))
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="parent';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
if($res['slug']!='')
$disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
else
$disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
$disp.=subcat($res['categoryID']).'</li>';
}
$disp.='</ul>';
return $disp;
}

function subcat($parid){
$disp='';
$sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent='.$parid.' order by sort_order, name';
if($r=mysql_query($sql)){
if(mysql_num_rows($r)>0){
$disp.='<ul>';
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="child';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
if($res['slug']!='')
$disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
else
$disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
$disp.=subcat($res['categoryID']).'</li>';;
}
$disp.='</ul>';
}
}
return $disp;
}
?>

И о чудо — у нас получилось раскрытое дерево категорий.

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Об авторе

Иван Родуман © 2012 Все права защищены

Пишу что думаю. Думаю, что пишу.

Создание сайтов в Саратове

.