Jump to content

Выводить не все дерево категорий


Recommended Posts

У меня основных категорий планируется около 15, а категорий 2-го уровня около 50... 3-го даже не знаю. Товара очень много.

Можно как-то выводить сначала меню с 1й категорией? Потом по нажатию на пункт выводить категории 2 уровня :)

Сначала:
- Столы
- Стулья
- Диваны

Потом:
- Столы
-- Деревянные
-- Металлические
-- Пластиковые
- Стулья
- Диваны

и Потом:
- Столы
-- Деревянные
-- Металлические
--- Титановые
--- Молибденовые
--- Свинцовые
-- Пластиковые
- Стулья
- Диваны

Заранее спасибо :)

Link to post
Share on other sites

Да, конечно так можно.

В файле index.tpl при выводе меню категорий добавьте условие:

вместо

{fun name=categories_tree categories=$c->subcategories}


напишите

{if in_array($category->category_id, $c->subcats_ids)}
{fun name=categories_tree categories=$c->subcategories}
{/if}

Link to post
Share on other sites
  • 4 weeks later...

Для более ранних условие аналогично, а внутри условия вместо вызова функции нужно сделать include. Короче говоря, просто добавить условие перед рекурсивным вызовом

Link to post
Share on other sites

При изменении {fun name=categories_tree categories=$c->subcategories}

на {if in_array($category->category_id, $c->subcats_ids)}
{fun name=categories_tree categories=$c->subcategories}
{/if}
На сайте отображаються категории первого уровня, при нажатии на которые появляються категории второго уровня, а вот категории 3 уровня к сожелению так и не отобразились, каким образом возможно это исправить ?

И возможно ли что бы при нажатии на категорию например второго и третего уровня, и при переходе на товар второго или третего уровня категории не закрывались на снова первый уровень ?

Link to post
Share on other sites

у меня только в categories.tpl можно менять, но там нет такого условия, а только:

{if $categories}
<ul class="catalog_menu">
{foreach item=c from=$categories}
{if $category->category_id != $c->category_id}
<li><a href='catalog/{$c->url}' tooltip='category' category_id='{$c->category_id}'>{$c->name}</a></li>
{else}
<li><span tooltip='category' category_id='{$c->category_id}'>{$c->name}</span></li>
{/if}
{include file=categories.tpl categories=$c->subcategories}
{/foreach}
</ul>
{/if}

и что тут поменять надо?

Link to post
Share on other sites
  • 4 weeks later...

Теперь как описано в начале:

вместо

{fun name=categories_tree categories=$c->subcategories}


напишите

{if in_array($category->category_id, $c->subcats_ids)}
{fun name=categories_tree categories=$c->subcategories}
{/if}

Link to post
Share on other sites
  • 1 month later...
  • 5 weeks later...

на денвере все работает, а на хосте косяк:
при выборе любой подкатегории или товара в ней, корневой список категорий сворачивается...
куда копать?

Link to post
Share on other sites
  • 3 months later...

В этом варианте для раскрытия списка подкатегорий требуется перезагрузка страницы. Если добавить java, можно сделать все без перезагрузки и без PHP5.

Помогите вывести меню каталога в таком виде:
<!-- Меню каталога /-->
<div id="catalog_menu">
{defun name=categories_tree categories=$categories}
{if $categories}
<ul id="menu">
{foreach item=c from=$categories}
{if $category->category_id != $c->category_id}
<li><a href='#' tooltip='category' category_id='{$c->category_id}'>НАЗВАНИЕ КАТЕГОРИИ</a>
<ul>
<li>
<a href='catalog/ЮРЛ_ПОДКАТЕГОРИИ' tooltip='category' category_id='{$c->category_id}'>НАЗВАНИЕ ПОДКАТЕГОРИИ</a>
</li>
</ul>
</li>
...
{/foreach}
</ul>
{/if}
{/defun}
</div>
<!-- Меню каталога #End /-->

Ссылка на урок, как сделать раскрывающееся меню на jquery - http://ruseller.com/lessons.php?rub=32&id=209

Link to post
Share on other sites
  • 1 month later...

Как сделать раскрывающейся список так, чтобы показывало подкатегории?
Пишу

<a href='javascript: Sim_Sim_Otkroysya()'><span>+</span></a>

Сам скрипт

<script type="text/javascript">
{literal}
<!--
function Sim_Sim_Otkroysya()
{
var obj=document.getElementById('Sim_Sim');
if(obj.style.display=='none')
obj.style.display='block';
else
obj.style.display='none';
}
-->
{/literal}
</script>

Вот то что должно раскрываться

<div name=Sim_Sim id=Sim_Sim style='text-indent:15pt;display:none'>
{fun name=categories_tree categories=$c->subcategories}
</div>

Но получается так, что раскрывается только в первой категории подкатегории, если клацнуть на плюсик в другой категории то все равно раскроются подкатегории в первой категории, а это косяк.

Имхо в движке категории как-то криво организованы.

Link to post
Share on other sites
  • 3 weeks later...

up
предложенный админом способ работает только на виртуальном Денвере,
на реальном хосте не работает (сразу сворачивается дерево при первом-же клике) PHP5, все должно работать, но нет...
У кого какие есть работающие решения?
Уже ровно 1 год стоит вопрос и он не решен....

Link to post
Share on other sites

по вашим просьбам пишу как реализовать данное меню!

1. Добавляем во все файлы кроме catalog.tpl (все файлы которые вы видите в админке в разделе дизайн=>шаблоны) 3 простых строчки

<script type="text/javascript" src="design/{$settings->theme}/jquery.js"></script>
<script type="text/javascript" src="design/{$settings->theme}/jquery.cookie.js"></script>
<script type="text/javascript" src="design/{$settings->theme}/shop152.js"></script>

естественно между тегами <head></head>, если где то их не увидите то просто в начале страницы!

2. заливаем 3 файла по ftp в дирректорию шаблона на котором вы хотите использовать данное меню, у меня это шаблон euro!(скачать их можно по этой ссылке shop152.ru/shop152.zip)

3. в файле index.tpl находим кусочек кода который отвечает за меню он выглядит примерно так:
<!-- Меню каталога /-->
<div class="block"><div class="block_top"><div class="block_bottom">
{defun name=categories_tree categories=$categories}
{if $categories}
<ul class="catalog_menu">
{foreach item=c from=$categories}
{if $category->category_id != $c->category_id}
<li><a href='catalog/{$c->url}' tooltip='category' category_id='{$c->category_id}'>{$c->name}</a></li>
{else}
<li><span tooltip='category' category_id='{$c->category_id}'>{$c->name}</span></li>
{/if}
{fun name=categories_tree categories=$c->subcategories}

{/foreach}
</ul>
{/if}
{/defun}
</div></div></div>
<!-- Меню каталога #End /-->


в нем нас интересует строчка <ul class="catalog_menu"> ее заменям на <ul id="my-menu" class="catalog_menu">

Вуаля меню стало похоже на то что меня на сайте. можно поиграться с ксс и довести его до ума...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...