Новый способ вывода под категорий

Скачать Новый способ вывода под категорий
Недавно искали:

Байзет

Житель
Регистрация
03.01.15
Сообщения
10
Реакции
0
Добрый день! Хочу показать вам один из видов вывода подкаталогов, а именно их вывод непосредственно при переходе в каталог который имеет подкаталоги. И так код с инструкцией:

Вот код с дефолтного шаблона index.tpl

Код:
<!-- Меню каталога -->
            <div id="catalog_menu">
                   
            {* Рекурсивная функция вывода дерева категорий *}
            {function name=categories_tree}
            {if $categories}
            <ul>
            {foreach $categories as $c}
                {* Показываем только видимые категории *}
                {if $c->visible}
                    <li>
                        {if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
                        <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
                        {categories_tree categories=$c->subcategories}
                    </li>
                {/if}
            {/foreach}
            </ul>
            {/if}
            {/function}
            {categories_tree categories=$categories}
            </div>
<!-- Меню каталога (The End)-->

Я не стал залезать в движок симплы и решил реализовать эту функцию силами Smarty, и добился желаемого результат путем добавления проверки выбранной категории которую можно найти в самом коде. А именно тот момент где добавляется selected
Код:
{if $category->id == $c->id}class="selected"{/if}

В итоге имеем следующий код
Код:
<!-- Меню каталога -->
            <div id="menu">
                   
            {* Рекурсивная функция вывода дерева категорий *}
            {function name=categories_tree}
            {if $categories}
            {if $categories==$c->subcategories}<ul  class="sub_menu">{else}<ul  class="menu">{/if}
            {foreach $categories as $c}
                {* Показываем только видимые категории *}
                {if $c->visible}
                    {if $c->subcategories}<li class="sub_true">{else}<li>{/if}
                        {if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}" >{/if}
                        <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
                        {if $category->id == $c->id}
                            {categories_tree categories=$c->subcategories}
                        {/if}
                    </li>
                {/if}
            {/foreach}
            </ul>
            {/if}
            {/function}
            {categories_tree categories=$categories}
            </div>
<!-- Меню каталога (The End)-->
В некоторых местах я добавил классы для "расширения" границ вёрстки.

В принципе это всё, единственный недостаток который я пока не смог устранить, это то что при переходе в подкатегорию наше условие уже не прокатывает и подкатегории больше не выводятся.

Если у кого есть какие идеи по реализации и улучшению, а лучше если кто-то сам уже это реализовал, то пишите здесь, по обсуждаем.
 
я даже саму задачу плохо понял. вопрос в чем? в том что бы при переходе в категорию показывать подкатегории и при этом не терять этот список при переходе в саму подкатегорию? при этом не залазить в код движка а использовать все подручно-доступное в шаблоне?
 
я даже саму задачу плохо понял. вопрос в чем? в том что бы при переходе в категорию показывать подкатегории и при этом не терять этот список при переходе в саму подкатегорию? при этом не залазить в код движка а использовать все подручно-доступное в шаблоне?
Вы всё поняли правильно. Я так и не смог решить данную задачу, в конце концов переделал чтобы подкоталоги всплывали при наведении.
 
ой ну я так как то выделывался на другом движке..... правда я там для этого делал заморочку с джава скриптом, но честно, это муторно и геморно ... проще по мойму все же view файлы отредактировать
 
Назад
Сверху Снизу