kislotnik Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 15 декабря, 2017 Облазил много тем но ничего не подходит для меня.есть категория, подкатегория и подподкатегория. Так вот, подскажите как вывести подподкатегории независимыми. То есть нажимаем на категории выводит список подподкатегорий, нажимаем на подкатегорию выводит подподкатегорий нажимаем на подподкатегории и тоже выводит подподкатегорий.Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
STM Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 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} Изменено 15 декабря, 2017 пользователем STM Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 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-го уровня в каталоге Цитата Ссылка на сообщение Поделиться на другие сайты
STM Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 15 декабря, 2017 (изменено) просто категории 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} Изменено 15 декабря, 2017 пользователем STM Цитата Ссылка на сообщение Поделиться на другие сайты
STM Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 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 нужный уровень Изменено 15 декабря, 2017 пользователем STM Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 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/ Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 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 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводит Цитата Ссылка на сообщение Поделиться на другие сайты
STM Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 15 декабря, 2017 Данный способ не подходит так как 3 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводитМожете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать. Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 15 декабря, 2017 Можете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать.https://www.silverskazka.ruВывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.Делаю сюда http://finanse.horror-quest.com.ua Цитата Ссылка на сообщение Поделиться на другие сайты
STM Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 15 декабря, 2017 (изменено) https://www.silverskazka.ruВывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.Делаю сюда http://finanse.horror-quest.com.uaЕсли правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней. Изменено 15 декабря, 2017 пользователем STM Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 15 декабря, 2017 Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней.Мне нужно чтоб в любой из категорий выводился только 3 уровень. Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 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 уровня только первой категории. тоесть если листаю между главными категориями то все равно выводятся подкатегории первой в списке категории Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 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} по этому коду. Спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 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} по этому коду. Спасибо Пирамидка пифагора Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 15 декабря, 2017 Пирамидка пифагора Можете подсказать, как правильно сделать? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 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}Конечно не лучшее решение, но вполне рабочее. Изменено 15 декабря, 2017 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 15 декабря, 2017 Автор Жалоба Поделиться Опубликовано 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 уровня. Можете помочь? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 15 декабря, 2017 Жалоба Поделиться Опубликовано 15 декабря, 2017 Почему то выводит категории 3 уровня всех категорий. А нужно чтоб был 3 уровень активной категории 1 уровня. Можете помочь?Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visible Цитата Ссылка на сообщение Поделиться на другие сайты
kislotnik Опубликовано 16 декабря, 2017 Автор Жалоба Поделиться Опубликовано 16 декабря, 2017 Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visibleСпасибо огромное Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 11 июля, 2020 Жалоба Поделиться Опубликовано 11 июля, 2020 (изменено) . Изменено 11 июля, 2020 пользователем n1c Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.