kislotnik Posted December 15, 2017 Report Share Posted December 15, 2017 Облазил много тем но ничего не подходит для меня.есть категория, подкатегория и подподкатегория. Так вот, подскажите как вывести подподкатегории независимыми. То есть нажимаем на категории выводит список подподкатегорий, нажимаем на подкатегорию выводит подподкатегорий нажимаем на подподкатегории и тоже выводит подподкатегорий.Спасибо. Quote Link to post Share on other sites
STM Posted December 15, 2017 Report Share Posted December 15, 2017 (edited) Вам нужно вывести список подкатегорий на странице категории, или просто категории 3-го уровня в каталоге? Или же на каждый уровень категорий свой выпадающий список подкатегорий? Лучше будет если какой-то пример покажите. Если подкатегории на странице категории то так: {if $category->subcategories} <ul> {foreach $category->subcategories as $c} {if $c->visible} <li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li> {/if} {/foreach} </ul> {/if} Edited December 15, 2017 by STM Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Вам нужно вывести список подкатегорий на странице категории, или просто категории 3-го уровня в каталоге? Или же на каждый уровень категорий свой выпадающий список подкатегорий? Лучше будет если какой-то пример покажите. Если подкатегории на странице категории то так: {if $category->subcategories} <ul> {foreach $category->subcategories as $c} {if $c->visible} <li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li> {/if} {/foreach} </ul> {/if} просто категории 3-го уровня в каталоге Quote Link to post Share on other sites
STM Posted December 15, 2017 Report Share Posted December 15, 2017 (edited) просто категории 3-го уровня в каталоге Можно так: {if $categories} <ul> {foreach $categories as $c} {if $c->visible} <li> <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a> {if $c->subcategories} <ul> {foreach $c->subcategories as $cat} {if $cat->visible} <li> <a {if $category->id == $cat->id}class="selected"{/if} href="catalog/{$cat->url}" data-category="{$cat->id}">{$cat->name}</a> {if $cat->subcategories} <ul> {foreach $cat->subcategories as $cat3} {if $cat3->visible} <li> <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> </li> {/if} {/foreach} </ul> {/if} </li> {/if} {/foreach} </ul> {/if} </li> {/if} {/foreach} </ul> {/if} Edited December 15, 2017 by STM Quote Link to post Share on other sites
STM Posted December 15, 2017 Report Share Posted December 15, 2017 (edited) Если отдельно вывести 3-й уровень самый простой способ наверное так: {foreach $categories as $c} {foreach $c->subcategories as $cat} {foreach $cat->subcategories as $cat3} <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> {/foreach} {/foreach} {/foreach} Или что-то вроде этого: {function name=categories_tree} {if $categories && $level == $c_level} <ul> {foreach $categories as $c} {if $c->visible} <li> <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 level=$level+1} </li> {/if} {/foreach} </ul> {else} {foreach $categories as $c} {if $c->visible} {categories_tree categories=$c->subcategories level=$level+1} {/if} {/foreach} {/if} {/function} {categories_tree categories=$categories level=1 c_level=3} c_level=3 нужный уровень Edited December 15, 2017 by STM Quote Link to post Share on other sites
Maksclub Posted December 15, 2017 Report Share Posted December 15, 2017 http://forum.simplacms.ru/topic/8623-%D0%BD%D0%B5%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D1%8B%D0%B5-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-2-%D0%B3%D0%BE-%D0%B8-3-%D0%B3%D0%BE-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F/ Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 http://forum.simplacms.ru/topic/8623-%D0%BD%D0%B5%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D1%8B%D0%B5-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-2-%D0%B3%D0%BE-%D0%B8-3-%D0%B3%D0%BE-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F/Данный способ не подходит так как 3 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводит Quote Link to post Share on other sites
STM Posted December 15, 2017 Report Share Posted December 15, 2017 Данный способ не подходит так как 3 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводитМожете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать. Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Можете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать.https://www.silverskazka.ruВывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.Делаю сюда http://finanse.horror-quest.com.ua Quote Link to post Share on other sites
STM Posted December 15, 2017 Report Share Posted December 15, 2017 (edited) https://www.silverskazka.ruВывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.Делаю сюда http://finanse.horror-quest.com.uaЕсли правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней. Edited December 15, 2017 by STM Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней.Мне нужно чтоб в любой из категорий выводился только 3 уровень. Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Если отдельно вывести 3-й уровень самый простой способ наверное так: {foreach $categories as $c} {foreach $c->subcategories as $cat} {foreach $cat->subcategories as $cat3} <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> {/foreach} {/foreach} {/foreach} Или что-то вроде этого: {function name=categories_tree} {if $categories && $level == $c_level} <ul> {foreach $categories as $c} {if $c->visible} <li> <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 level=$level+1} </li> {/if} {/foreach} </ul> {else} {foreach $categories as $c} {if $c->visible} {categories_tree categories=$c->subcategories level=$level+1} {/if} {/foreach} {/if} {/function} {categories_tree categories=$categories level=1 c_level=3} c_level=3 нужный уровень {foreach $categories as $c} {foreach $c->subcategories as $cat} {foreach $cat->subcategories as $cat3} <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> {/foreach} {/foreach} {/foreach} спасибо. То что надо вот только всегда выводятся категории 3 уровня только первой категории. тоесть если листаю между главными категориями то все равно выводятся подкатегории первой в списке категории Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней.подскажите как выводить подкатегории 3 уровня выбранной категории. {foreach $categories as $c} {foreach $c->subcategories as $cat} {foreach $cat->subcategories as $cat3} <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> {/foreach} {/foreach} {/foreach} по этому коду. Спасибо Quote Link to post Share on other sites
Noxter Posted December 15, 2017 Report Share Posted December 15, 2017 подскажите как выводить подкатегории 3 уровня выбранной категории. {foreach $categories as $c} {foreach $c->subcategories as $cat} {foreach $cat->subcategories as $cat3} <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a> {/foreach} {/foreach} {/foreach} по этому коду. Спасибо Пирамидка пифагора Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Пирамидка пифагора Можете подсказать, как правильно сделать? Quote Link to post Share on other sites
Noxter Posted December 15, 2017 Report Share Posted December 15, 2017 (edited) Можете подсказать, как правильно сделать?Как вариант пройтись рекурсивно по дереву категорий, и при условии что у нас в пути содержится не более 3-х категорий вывести категорию третьего уровня.Код примерно такой: {function name=flex} {foreach $categories as $c} {if $c->path|count == 3} <b>{$c->name}</b> {/if} {flex categories=$c->subcategories} {/foreach} {/function} В нужном месте выводим результат выполнения функции вот так: {flex categories = $categories}Конечно не лучшее решение, но вполне рабочее. Edited December 15, 2017 by Noxter Quote Link to post Share on other sites
kislotnik Posted December 15, 2017 Author Report Share Posted December 15, 2017 Как вариант пройтись рекурсивно по дереву категорий, и при условии что у нас в пути содержится не более 3-х категорий вывести категорию третьего уровня.Код примерно такой: {function name=flex} {foreach $categories as $c} {if $c->path|count == 3} <b>{$c->name}</b> {/if} {flex categories=$c->subcategories} {/foreach} {/function} В нужном месте выводим результат выполнения функции вот так: {flex categories = $categories}Конечно не лучшее решение, но вполне рабочее.Почему то выводит категории 3 уровня всех категорий. А нужно чтоб был 3 уровень активной категории 1 уровня. Можете помочь? Quote Link to post Share on other sites
Noxter Posted December 15, 2017 Report Share Posted December 15, 2017 Почему то выводит категории 3 уровня всех категорий. А нужно чтоб был 3 уровень активной категории 1 уровня. Можете помочь?Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visible Quote Link to post Share on other sites
kislotnik Posted December 16, 2017 Author Report Share Posted December 16, 2017 Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visibleСпасибо огромное Quote Link to post Share on other sites
n1c Posted July 11, 2020 Report Share Posted July 11, 2020 (edited) . Edited July 11, 2020 by n1c Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.