дерево категорий по-своему (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 но верний пункт все равно активен
достаточно одного комментария.
ответ на ваш вопрос: «не подскажу»
Второй вариант вывода толика подкатегории не работает(
Выдает ошибку
Parse error: syntax error, unexpected ‘>’ in /usr/home/38850/teasect.ru/html/kernel/includes/smarty/compiled/SC/DB67962M/ru/%%A4^A42^A428899D%%category_tree.html.php on line 32
помогите пожалуйста!
Сделали по вашей инструкции.
sc-error.log из папки \kernel последнее время очень быстро растёт
в нём содержаться вот такие записи:
2012-02-03 23:37. Missing argument 2 for subcat(), called in /home/hosting/domain.ru/docs/kernel/includes/smarty/plugins/function.newtree.php on line 34 and defined File: /home/svyazist/format72.ru/docs/kernel/includes/smarty/plugins/function.newtree.php Line: 21 Error #: 2
Как это можно исправить?
Сделал все по методу 2, поменял & amp;(без пробела) на &, все равно не заработало. Порывшись в коде, обнаружил — что из html ещё и знак > перенесся как & gt;(без пробела). Все заменил, ошибки пропали, но теперь другая проблема появилась, все ссылки в меню получаются вида — «root/category/’Array.slug’/» не подскажите что с этим делать?
Извиняюсь, сам ступил, заменил все ‘ на обычный прямой одинарный опостроф
А не подскажите, а как сделать «второй вариант», то есть только отображение вложенных категорий, но ещё и что бы путь отображался, я имею в виду что бы например:
>Обувь
> Детская
>Летняя
>Ботинки
>Кроссовки
>Сланцы
возможно ли так сделать?
Редактор съел форматирование.
>Обувь
>> Детская
>>>Летняя
>>>>Ботинки
>>>>Кроссовки
>>>>Сланцы
Или же можно сделать второй вариант, но что бы например, если зайти в подкатегорию, в которой нету вложенных подкатегорий, то отображаться будут в дереве категорий, категории стоящей выше данной категории по иерархии? если бы реализовать это, то цены не будет вашей доработке
Извиняюсь за получившийся флуд.
Пардоньте за флуд, сам решил эту задачу, кому интересно
исправьте ссылку