Помагал кому-то на форуме и решил увековечить здесь.
Несколько вариантов вывода дерева категорий в вашем магазине или редактирование файла category_tree.html
Удаляем все из файла category_tree.html и пишем там
{newtree}
Затем в папке /kernel/includes/smarty/plugins создаем файл function.newtree.php, в котором пишем:
На главной странице видны родительские категории, внутри категории видны только подкатегории Для этого заменяем все содержимое файла category_tree.html следующим кодом:
UPD: исправления для ЧПУ:
Замените
на
Оригинал статьи
Несколько вариантов вывода дерева категорий в вашем магазине или редактирование файла category_tree.html
1. Дерево категорий всегда раскрыто.
Удаляем все из файла category_tree.html и пишем там
{newtree}
Затем в папке /kernel/includes/smarty/plugins создаем файл function.newtree.php, в котором пишем:
<?php
function smarty_function_newtree($params, &$smarty){
$disp='';
$disp.='<ul>';
$sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent=1 order by name';
if($r=mysql_query($sql))
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="parent';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
$disp.='"><span class="bullet"> </span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';
$disp.=subcat($res['categoryID']);
}
$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 name';
if($r=mysql_query($sql))
while($res=mysql_fetch_assoc($r)){
$disp.='<li class="child';
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
$disp.='"><span class="bullet"> </span><span class="tab"> </span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';
$disp.=subcat($res['categoryID']);
}
return $disp;
}
?>
2. Видны только подкатегории.
На главной странице видны родительские категории, внутри категории видны только подкатегории Для этого заменяем все содержимое файла category_tree.html следующим кодом:
{* category navigation tree *}
<ul>
{if $categoryID eq 0}
{section name=i loop=$categories_tree} {if $categories_tree[i].categoryID != 1}
<li class="{if $categories_tree[i].level>1}child{else}parent{/if}{if $categoryID == $categories_tree[i].categoryID}_current{/if}">
{section name=j loop=$categories_tree max=$categories_tree[i].level-1}<span class="tab"> </span>{/section}
{if $categories_tree[i].slug}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`&category_slug=`$categories_tree[i].slug`"|set_query_html}
{else}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`"|set_query_html}
{/if}
<span class="bullet"> </span><a href='{$_category_url}'>{$categories_tree[i].name|escape:'html'}</a>
</li>
{/if} {/section}
{else}
{section name=i loop=$categories_tree} {if $categories_tree[i].categoryID != 1 && $categories_tree[i].parent eq $categoryID}
<li class="{if $categories_tree[i].level>1}child{else}parent{/if}{if $categoryID == $categories_tree[i].categoryID}_current{/if}">
{section name=j loop=$categories_tree max=$categories_tree[i].level-1}<span class="tab"> </span>{/section}
{if $categories_tree[i].slug}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`&category_slug=`$categories_tree[i].slug`"|set_query_html}
{else}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`"|set_query_html}
{/if}
<span class="bullet"> </span><a href='{$_category_url}'>{$categories_tree[i].name|escape:'html'}</a>
</li>
{/if} {/section}
{/if}
</ul>
UPD: исправления для ЧПУ:
Замените
$disp.='"><span class="bullet"> </span><span class="tab"> </span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';
на
if($res['slug']!='')
$disp.='"><span class="bullet"> </span><span class="tab"> </span><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a></li>';
else
$disp.='"><span class="bullet"> </span><span class="tab"> </span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';
Оригинал статьи