дерево категорий по-своему (shop-script)
Помагал кому-то на форуме и решил увековечить здесь.
Несколько вариантов вывода дерева категорий в вашем магазине или редактирование файла 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 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; } ?>
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: ответ на комментарий:
http://easyweb.org.ua/?p=252#comment-220
Замените
$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>';
по идее должно работать.


Спасибо! работает но не так как нужно, в результате получается два одинаковых списка всех категорий, причем раскрывает не по приоритету, а по алфавиту!
адрес сайта
Мне необходимо чтобы по умолчанию была раскрыта тольо одна категория (электроинструменты), оставльные бы раскрывались только если я на них нажму, например на измерительные инструменты, чтобы автоматические электроинструменты сворачивались а измерительные инструменты раскрывались, причем чтобы все корневые катерогии столи по порядку по умолчанию!
так это вы описываете стандартный вариант работы шоп-скрипт
если хотите, чтобы раскрывалась любая категория без перезагрузки страницы, нужно использовать первый вариант и немного знаний JavaScript
Не могли бы Вы если не сложно написать код для того, чтобы на главной странице у меня раскрывался список только электроинструменты по умолчанию..буду очень признателен!=)
обещать не буду. если будет время, посмотрю
обратится к фрилансерам не пробовали?
пробовал заявка 3 дня висела потом я ее снял!
Никто не хочет помочь…эх
могу продать за 15 wmz
А такой тип меню (пример tools-msk.ru) у тебя сколько будет стоить ?
30 $
угу! хозяину магазина все равно на этот модуль, а мне нет… я хотел полазить по форумам потратить время….. а где его купить я и так знаю! спасибо за помощь!
Все работает, автору спасибо! Сайт
Требуется доработка магазина, интересует цена!
Подскажите, где искать category_tree.html
/published/SC/html/scripts/templates/frontend/
подскажите, а как сделать чтобы выводилась на ВСЕХ страницах без раскрытия подкатегорий ТОЛЬКО категории 1-го уровня?
если можно, код подкиньте плиз.
И еще вопрос: Вам удалось сделать динамическое меню категорий и подкатегорий? т.е. чтобы при подведении мышки к категориям 1-го уровня выезжали подкатегории и подподкатегории ну и т.д., или Вы видели где-нибудь такое решение?
Спасибо
такого решения не видел, но его можно сделать.
если нужно — свяжитесь со мной.
по поводу первой просьбы — тоже самое
а как подружить первый вариант (всегда раскрыто) меню с ЧПУ7 а то как то странно получается… в меню динамичные url а во всех остальных местах ЧПУ?
смотрите обновление в записи
у меня эта конструкция
$disp.=’»>‘.$res['name'].’
ну никак не хочет воспринимать ЧПУ ((
не сразу увидел обновление… СПАСИБО
в первом скрипте ещё
?categoryID=’.$res['categoryID']
надо заменить на
/category/’.$res['slug']
чтобы корневые директории каталога имели ЧПУ
ну да.но неплохо бы и там сделать проверку
так как при импорте товара поле slug может быть пустым
если оно не пустое, то /category/’.$res['slug'], если пустое/, то ?categoryID=’.$res['categoryID']
этот модуль позволяет сделать меню категорий какое угодно.
в том числе с использованием javascript
Подскажите пожалуйста, как сделать что бы меню было не двух, а хотя бы трёхуровневым, т.е. категория-подкатегория-подподкатегория, что бы каждый уровень можно было по разному оформить!
Подскажите как вывести дерево не по алфавиту, а по сортировке в админке, по приоритету в общем.
order by name
замените на
order by sort_order
Артем, где имненно и что нужно сделать (первый вариан) чтобы корневые директории каталога были с ЧПУ
я обновил запись.
скопируйте первый код в свой файл и должно работать!
Теперь все отлично работает. Спасибо!!!
Спасибо, но при включенных ЧПУ у меня не определяется переменная $_REQUEST['categoryID'] и соответственно не добавляется к классу ‘_current’. При выключенных все работает нормально.
И еще вопрос: мне для модификации списка категорий надо знать уровень вложенности. Как его можно узнать, используя ваш пример?
При включенных ЧПУ следует использовать $_GET['catgoryID']
Нужно добавить еще одну функцию, которая будет возвращать уровень. Она должна быть рекурсивной.
Берем категорию, если поле parent у нее не 1, то переменную $level (например) увеличиваем на 1 и снова запускам эту функцию. Если parent равно 1, то выходим и в переменной level у нас уровень пункта меню
Что-то не получается у меня правильно добавить эту функцию, не могли бы вы написать, как это должно выглядеть.
Еще, если у какой-то категории нет подкатегорий, то в коде выводятся лишние и пустые «». Может добавить проверку есть ли подкатегории, а потом уже начинать их выводить?
И возвращаясь к функции определения вложенности. Как можно сделать, чтобы меню третей вложенности разворачивалось только при переходе на пункт второй вложенности. Т.е. что-то среднее между стандартным category_tree и вашим вариантом.
можно и проверку добавить, если элемент лишний появляется
по поводу функции — сейчас точно нет. может попозже напишу. но я так рассказал все, что необходимо.:)
Не могли бы подсказать как в WebAsyst-е убрать корзину, но при этом что бы она активировалася после регистрации аккаунта…. Заранее благодарен..
в файле shoping_cart.html и shoping_cart_info.html
в начале файла добавьте
{if $smarty.session.log}
в конец файла
{/if}
так корзина и блок корзины будут показываться только для авторизованных
Огромное спасибо!
Артем, не найдешь время для написания функции для подсветки текущего уровня меню на сайте с ЧПУ? С меня пиво (в виде WMR)
, а?
не совсем понял, что означает подсветка текущего уровня)
Сообщение №29 «Спасибо, но при включенных ЧПУ у меня не определяется переменная $_REQUEST['categoryID'] и соответственно не добавляется к классу ‘_current’. При выключенных все работает нормально.»
Т.е. если мы находимся в категории в меню для этого пункта добавлялся класс _current
http://easyweb.org.ua/?p=252#comment-310
Вместо $_REQUEST['categoryID'] используйте $_GET['categoryID']
Точно, я ступил — спасибо. Очень нужная вещь! Куда и сколько подвозить пива
?
Не могли бы подсказать, как в спецпредложение вывести подкатегорию, в которой товар находится?
Только подкатегорию первого уровня.
К примеру у нас есть категория — Крупная бытовая техника, подкатегория 1-го — Холодильник, подкатегория 2-го — LG.
Так вот в спепредложении нам нужно вывести подкатегорию — Холодильник.
дописать небольшой плагин, который будет по id товара определять нужную категорию
как стандартными средствами реализовать — я не знаю
то, что стандартными средствами не реализуемый, это понятно.
Принцип понятен, но как его для webAsyst прописать — не получается…
А подскажите, как сделать, чтобы в меню на всех страницах отображались категории и подкатегории первого уровня:
Категория 1
Подкатегория 1.1
Подкатегория 1.2
Категория 2
Подкатегория 2.1
Подкатегория 2.2
А подкатегории второго уровня — только если выбрана соответствующая подкатегория первого уровня.
Категория 1
Подкатегория 1.1
Подкатегория 1.1.1
Подкатегория 1.1.2
Подкатегория 1.2
Категория 2
Подкатегория 2.1
Подкатегория 2.2
в первом варианте внутри функции subcat
заменить
$disp.=subcat($res['categoryID']);
на
if($_GET['categoryID'] ==$res['categoryID'])
$disp.=subcat($res['categoryID']);
Огромное Вам спасибо!
И от меня ПАСИБА!))
если выбрать категорию «Подкатегория 1.1.2″, то в меню пропадает всё что внутри «Подкатегория 1.1″. Подскажите как сделать что бы если я нахожусь внутри «Подкатегория 1.1″ в любой категории выводились соседние?
Выбирать все категории у которых parent является текущая и категорию
Потом выбрать категорию, которая является parent для текущей (пусть это будет категория2)
И выбрать все категории, для которых «категория2″ является parent
Не подскажите как это оформить в коде? Буду очень благодарен Вам
в двух словах не опишешь. а переписывать модуль пока возможности нет
Прикольно, спасибо.. .НАРОД!!! если скрипт не в корне, то перед /category/ добавьте /shop_path/, где /shop_path/ — это путь от корня к магазу
Пожалуйста, выложите исходную версию дерева категорий. Сайт достался по наследству и там как раз сделано по первому варианту, а хочется как было.
Привет.!
Есть проблема, необходимо делать раскрывающееся меню категорий, как что делать разобрался, использовал ваш метод, однако не получается написать такой if, чтобы у категорий не обладающих подкатегориями не было «плюсика» для раскрытия списка…. не могу придумать что сделать …
в функции subcat($parid)
перед while($res=mysql_fetch_assoc($r)){
напишите
if(mysq_num_rows($r)<1) return false;
а внутри функции smarty_function_newtree($params, &$smarty){
используйте
if(subcat($res['categoryID']))
выаодите плюсик
else
не выводите плюсик
Артее, спасибо. Все работает, единственное что — не определена переменная «mysq_num_rows($r)», заменил ее «mysq_num_rows($r)» и все ОК ))..
Возникла еще проблема… не могу написать if, чтобы список был раскрыт в категории, в которой мы находимся (if (($res['categoryID']=$categoryID) не работает … надо идти учить PHP …
решил проблему ))
Михаил, как вы решили этот вопрос?
А как скрыть определенную категорию? (categoryID=582)?
внутри цикла
while($res=mysql_fetch_assoc($r)){
добавьте
if($res['categoryID']==348)
continue;
348 — id вашей категории
По 1. Дерево категорий всегда раскрыто.
не работают ссылки если ЧПУ не включено (включается — ваш сайт/installer/)
А так все образцово-показательно.
специально не делал для отключенных ЧПУ
ЧПУ очень важно. и включать его необходимо!
А как быть с $_REQUEST['categoryID']? В котором ничего нету. Как выделить текущую категорию?
используйте
$_GET['categoryID']
А этот участок кода говорит о том, что попытка все-таки была. Зачем городить огород если не работает без ЧПУ?
//————————————————-
if($res['slug']!=»)
$disp.=’»> ‘.$res['name'].’‘;
else
$disp.=’»> ‘.$res['name'].’‘;
$disp.=subcat($res['categoryID']).»;
}
//————————————————
1. Этот вариант не будет работать при отклюенных ЧПУ. Если вы импортируете категории, а не добавляете их вручную то поле slug заполнено не будет и ваша категория не откроется
В этом слуае ссылка будет вида /category/678/
А это тоже ЧПУ!
2. По поводу «огорода» — требую больше уважения и выбирайте выражения. Использовать данный скрипт никого не заставляю. Не нравится — пишите сами!
Спасибо Артем.
Ваш кусок кода очень меня выручил. Я его использую. Я не хотел грубо как-то неосторожно задеть, просто я привык к конструктивной критике.
Просто если бы вы сразу написали, что при таки-то условиях работать не будет. Я бы не потерял битый час выясняя в чем причина, ведь написано:
$disp.=’»> ‘.$res['name'].’‘;
По идее все должно работать.
Объясните для ТУПОГО — что значит импортировать категории и, что такое — добавлять их вручную?
Все что вы пишите в своем блоге, это круто, много подчерпнул!
значит я не так вас понял
если загружаете через csv файл продукты(импорт товаров через админ панель), так же создаются и категории
а вручную — это добавление категорий и товаров через админ-панель вручную
подробнее про импорт —
Товарищи.!!! Как реализовать дерево категорий с разбивкой
каталог слева
отсеивать по ID категории
Добрый день. Помогите пожалусто разобраться со следующей задачей.
По умолчанию при выборе категории открываетса страница с перечнем товаров а сверху находиться поиск и перечень подкатегорий.
Как сделать чтобы подкатегории (на странице с перечнем товаров) отображались с картинками.
АЁУ!!! Проблема решина!!!
Описал бы здесь, так для этого лучше целую тему завести
Подскажите пожалуйста, как добавить к подкатегориям 2 уровня еще один пробел ( ), т.е. как это сделано в оригинальном файле. Заранее благодарен.
с уровнями сложнее.
я бы во второй функции заменил
$disp.=subcat($res['categoryID']);
на
$disp.=’<div style="padding-left:20px;">’.subcat($res['categoryID']).’</div>’;
Обновил первый вариант кода. теперь в нем меньше ошибок
Люди, а все таки возможно как то реализовать «всегда раскрыто» без ЧПУ. Просто я хочу обновить PREMIUM до webasyst, магазину 2 года и он на хороших позициях, боюсь если включу ЧПУ ЯША на меня обидеться.
вместо
вставьте
Спосибо огромное за быстрый ответ. Теперь работают категории, а под категории нет.
Спасибо огромное разобрался — надо было тоже самое сделать с subcat.
Готов отблагодарить скажи куда.
кошельки есть в правой колонке
USD: Z162512271280
UAH: U400898999615
RUB: R128798640813
не забудьте прислать ссылку на свой магазин для каталога
http://easyweb.org.ua/ads/catalog/
А как можно скрыть категории подкатегорий, т.е. есть категория «А» в ней подкатегория «B», все что находится в подкатегории «В» скрыть, до нажатия на этой категории.
P.S. добавьте в блог крупная и мелкая бытовая техника, мобильные телефоны, кондиционеры, компьютерные комплектующие в Красном Луче, в Украине
Здравствуйте Артем, воспользовался Вашим скриптом, как раз то что я искал. Но вот не нашел решения для того мне требуется. Может Вы сможете мне помочь.
1.РОДИДЕЛЬСКАЯ ССЫЛКА
ссылка
ссылка
2.РОДИТЕЛЬСКАЯ ССЫЛКА
ссылка <— подскажите пожалуйста как скрыть подкатегории во второй родительской ссылке, но так, что при нажатии на нее и последующем переходе в эту категорию ссылки были видны.
3.РОДИТЕЛЬСКАЯ ССЫЛКА
Заранее спасибо, надеюсь на Вашу помощь.
сходу я не подскажу вам решение.
2-3 строчками там не обойтись
вы можете заказать разработку такого решения.
если заинтересует — пишите
в первом варианте внутри функции subcat
заменить
$disp.=subcat($res['categoryID']);
на
if($_GET['categoryID'] ==$res['categoryID'])
$disp.=subcat($res['categoryID']);
P.S. Артем писал выше, видимо забыл)))
попытался заменить, но что то не выходит… меняю вот здесь:
else
$disp.=’»>‘.$res['name'].’‘;
$disp.=subcat($res['categoryID']).»;;
}
$disp.=»;
}
на:
else
$disp.=’»>‘.$res['name'].’‘;
if($_GET['categoryID'] ==$res['categoryID'])
$disp.=subcat($res['categoryID']).»;;
}
$disp.=»;
}
только вот не могу понять куда вписывать нужный ID…
значит неправильно понял описание.
прошу прощения
А как добавить вывод иконок категорий всех уровней подскажите? Очень нужно
Уважаемый Артем!
Объясните еще раз тупорылым, пожалуйста, по 1 варианту.
Вобщем, у меня в файле function.newtree.php сейчас вот это:
<?php
function smarty_function_newtree($params, &$smarty){
$disp='';
$disp.='’;
$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.=’‘.$res['name'].’‘;
else
$disp.=’»>‘.$res['name'].’‘;
$disp.=subcat($res['categoryID']).»;
}
$disp.=»;
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.=»;
while($res=mysql_fetch_assoc($r)){
$disp.=’‘.$res['name'].’‘;
else
$disp.=’»>‘.$res['name'].’‘;
$disp.=subcat($res['categoryID']).»;;
}
$disp.=»;
}
}
return $disp;
}
?>
Категории раскрылись, все прекрасно. Но, при переходе по любой категории или подкатегории я получаю следующую ошибку:
Not Found
The requested URL /category/podveski/ was not found on this server.
Подсказка Денвера
Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/localhost/www/category/podveski/, которого не существует.
Как Вы поняли, я на локальном сервере работаю.
Подскажите, пожалуйста, что и где я не так делаю.
вы включили ЧПУ?
дайте адрес, посмотрим в чем проблема
Простите, пожалуйста за беспокойство!
Еще раз очень внимательно перечитала все комментарии и поняла, что ступила))) скрипт находится не в корневом каталоге)))
СПАСИБО!!!
пожалуйста
подскажи, как скрыть категорию?
т.е. убрать ее с главной страницы, категорий, меню
(идентификатор категории известен)
Здравствуйте.
сделал как во втором варианте(2. Видны только подкатегории.)
на что получил такую вот ругань
Parse error: syntax error, unexpected ‘>’ in /kernel/includes/smarty/compiled/SC/templates_c/SCDBTHEWEARRU/%%A4^A42^A428899D%%category_tree.html.php on line 33
подскажите что не так? правка вышеупомянутого файла ничего не дала кроме новой ругани на другую строку
поудалял классы для тегов теперь ругань на 95-ю строку этого же файла что и выше. я так понимаю компиляция не проходит нормально.
Ув. Андрей. гляньте плиз второй вариант менюхи, там помоему какаято опечатка в код закралась и я ее не могу найти
описанные вами ошибки говорят о синтаксических ошибках
а если вы самостоятельно что-то удаляли, то ничем помочь не можем
Андрею передадим, чтобы он глянул
Здравствуйте, спасибо за отклик. я разобрался сам спустя несколько часов. Вот суть траблы:
В приведенном листинге вместо привычного && закрался некий && в двух местах оно есть. и естественно при компиляции того что я скопировал у вас тут пошла ругань на этого зверя. исправте плиз листинг для второго примера чтоб люди не нервничали)))) спасибо!
Здравствуйте, спасибо за отклик. я разобрался сам спустя несколько часов. Вот суть траблы:
В приведенном листинге вместо привычного && закрался некий
&&в трех местах оно есть. и естественно при компиляции того что я скопировал у вас тут пошла ругань на этого зверя. исправте плиз листинг для второго примера чтоб люди не нервничали)))) спасибо!в общем не получается у меня этот amp изобразить. форма его исправляет))
Заменил амперсанды на нормальные, но все равно ругается
могу выслать свой вариант с исправлениям. пишите на мыло yseff@rambler.ru если еще актуально
Кто-нибудь пробовал сделать категории выпадающим списком (через form)?
а в чем сложность?
здесь сейчас категории в выпадающем списке
Здравствйте, Артем.
Подскажите, пожалуйста, как вывести подкатегории в качестве отдельных меню. Условно: мы имеем категорию «FIRST» с подкатегориями «A-1″ и «A-2″, и категорию «SECOND» с подкатегориями «B-1″ и «B-2″. Нам нужно отобразить два блока исключительно вложенных категорий:
В одном блоке:
A-1
A-2
Во втором блоке:
B-1
B-2
Спасибо!
В частности, такой вывод реализован в файле category.tpl.html, но у меня не хватает знаний, чтобы изъять оттуда нужное и грамотно модифицировать.
Уважаемый Артем, пришла задача раскрыть полностью меню, попробовал Ваш способ, работает, спасибо!, но есть еще вариант!
раскрыть меню можно добавив всего лишь одну! строку в стандартные функции:
в файле
\published\SC\html\scripts\core_functions\category_functions.php
в функции
function catGetCategoryCompactCList( $selectedCategoryID )
после $res[] = $row;
и перед if ( count($path) > 1 )
получится:
.
.
.
$res[] = $row;
$path = catCalculatePathToCategory( $row["categoryID"] ); //для раскрытия меню целиком
if ( count($path) > 1 )
.
.
.
и все, у меня работает)
да. спасибо большое
я теперь тоже использую подобные методы
описанному методу 2 года и он не идеален
со временем опубликую более простое решение
Попробовал Ваш код,работает идеально. Но вот проблема, у главной родительской категории выводятся только субкатегории, а если у субкатегории есть также суб категории, то они вообще не отображаются. Подскажите пожалуйста,как раскрыть все категории с использованием вашего подхода так, чтобы если субкатегория является родителем для других категорий,ее дочерки также бы выводились?
To: Никита
для раскрытия на более глубокий уровень необходимо проделать те-же манипуляции для рекурсивной функции
recursiveGetCategoryCompactCList
т.е. так-же в ней заменить
$res[] = $row;
if ( $level <= count($path)-1 )
на
$res[] = $row;
$path = catCalculatePathToCategory( $row["categoryID"] ); //для постоянного расрытия подкатегорий
if ( $level <= count($path)-1 )
Делаю все как в первом варианте (1. Дерево категорий всегда раскрыто.)
Выдает такую ошибку Fatal error: Class ‘LanguagesManager’ not found in /home/u106124/aromashevoru/www/smarty/plugins/function.newtree.php on line 4
с новыми версиями проблем не возникало
у вас свежая версия?
Версия 1.24
о такой версии мне ничего неизвестно
начина я с 268 все должно работать
Заметил что когда заходим в товар, то категория в которой находиться этот товар не отмечается активным т.е. не присваивается _current, а когда находимся просто в категории то все нормально. Как можно решить эту проблему?
добавьте функцию
function getcat(){
if((int)$_GET['categoryID']>0){
return $_GET['categoryID'];
}else if ((int)$_GET['productID']>0){
$sql=’SELECT categoryID FROM SC_products WHERE productID="’.(int)$_GET['productID'].’"’;
if($res=mysql_query($sql))
$row=mysql_fetch_assoc($res);
return $row[0];
} else
return false;
}
обновленный файл можно скачать —
все криво отображает, когда нахдишься в категории под категория пропадает, классы вообще не где не присываиваются активные
если криво, то не пользуйтесь этим
пользуйтесь стандартным функционалом, там все «прямо»
не работаеть
почему-не пойму.
гляньте. пните куда надо, пожалуйста.
спасибо!
Артем, спасибо за код. Все работает.
Никак не могу его доработать, чтобы актвный пункт меню высвечивался. (в какой сейчас категории находимся)
a class=»какой тут php код вставить что если Текущая категория = $res['categoryID'], то current» ….
а там есть такой кусочек
if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
если активная категория, то к классу parent добавляется _current
или не работает?
Как заменить эти &
Не подскажите как сделать так чтобы у категории всегда был _current пока мы находимся в подкатегориях, т.е.
Пункт 1
Пункт 2
Под пункт 1
Под пункт 2
Под пункт 3
Пункт 3
мы находимся в под пункте 1 но верний пункт все равно активен
достаточно одного комментария.
ответ на ваш вопрос: «не подскажу»