Развернутое древо категорий (category_tree.html)

Статус
В этой теме нельзя размещать новые ответы.

Vehement

Писатель
Регистрация
26 Окт 2007
Сообщения
7
Реакции
3
Мне необходимо сделать развернутое древо категорий с подкатегориями на главной.

Долго рылся в поисках решения задачи. На этом форуме ниодного внятного ответа, а плодящихся вопросов тьма.

Решение нашел на официальном форуме. Вот так его реализовал пользователь webcomplit:

1. Вместо
Код:
<!-- cpt_container_start -->{cpt_category_tree}<!-- cpt_container_end -->
вставляем в нужном вам месте
Код:
<!-- cpt_container_start -->{newtree}<!-- cpt_container_end -->

2. Идем в /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">&nbsp;</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">&nbsp;</span><span class="tab">&nbsp;</span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';
            $disp.=subcat($res['categoryID']);
        }
    return $disp;
}

?>


:az:
 
Да, работает. Но при включенном ЧПУ адреса категорий всё равно выводятся в обычном формате ?categoryID=557. Нужно откорректировать вот эту ссылку:
<a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>
Кто в курсе, как поправить?
 
Если кто подскажет, как поправить баг с ЧПУ, то в этой же теме выложу готовое решение для дерева категорий с использованием jQuery. Пример тут:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху