- Автор темы
- #1
Добрый день! Хочу показать вам один из видов вывода подкаталогов, а именно их вывод непосредственно при переходе в каталог который имеет подкаталоги. И так код с инструкцией:
Вот код с дефолтного шаблона index.tpl
Я не стал залезать в движок симплы и решил реализовать эту функцию силами Smarty, и добился желаемого результат путем добавления проверки выбранной категории которую можно найти в самом коде. А именно тот момент где добавляется selected
В итоге имеем следующий код
В некоторых местах я добавил классы для "расширения" границ вёрстки.
В принципе это всё, единственный недостаток который я пока не смог устранить, это то что при переходе в подкатегорию наше условие уже не прокатывает и подкатегории больше не выводятся.
Если у кого есть какие идеи по реализации и улучшению, а лучше если кто-то сам уже это реализовал, то пишите здесь, по обсуждаем.
Вот код с дефолтного шаблона 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)-->
В принципе это всё, единственный недостаток который я пока не смог устранить, это то что при переходе в подкатегорию наше условие уже не прокатывает и подкатегории больше не выводятся.
Если у кого есть какие идеи по реализации и улучшению, а лучше если кто-то сам уже это реализовал, то пишите здесь, по обсуждаем.