Возможно ли такое сделать на pdoMenu?
Есть категории и подкатегории. Количество подкатегорий различно. Возможно ли вывести с помощью pdoMenu меню такого вида?:
Категория
Подкатегория 1
Подкатегория 2
Подкатегория 3
<обертка>
Подкатегория 4
Подкатегория 5
и т.д.
</обертка>
т.е. те категории у которых idx>3 дополнительно оборачивать в див? Или все таки надо будет самому «колхозить» с проверками через pdoResources? Или может есть другие способы вывода?
Категория
Подкатегория 1
Подкатегория 2
Подкатегория 3
<обертка>
Подкатегория 4
Подкатегория 5
и т.д.
</обертка>
т.е. те категории у которых idx>3 дополнительно оборачивать в див? Или все таки надо будет самому «колхозить» с проверками через pdoResources? Или может есть другие способы вывода?
Комментарии: 9
В шаблоне подкатегории ставите в самом начале:
В вызов добавляете
В шаблоне категории в конце после [[+wrapper]] добавляете:
[[+idx:is=`4`:then=`<обертка>`]]
В вызов добавляете
&countChildren=`1`
В шаблоне категории в конце после [[+wrapper]] добавляете:
[[+children:gt=`3`:then=`</обертка>`]]
Павел, вчера вначале именно так и пытался сам сделать, но у меня что не сработало. Попробую еще раз. Спасибо.
Павел, в общем предложенное решение работает. Причина почему у меня не срабатывало, была в том что я прописывал фильтры в @INLINE. После как вынес html в чанки фильтры сработают. Спасибо за помощь.
Не за что, обращайтесь )
Эх… не долго счастье длилось. К сожалению данное решение не подойдет. А причина в countChildren. К сожалению он считает все вложеные ресурсы, а не те которые мы выбираем в pdoMenu. При наполнение подкатегорий товарами, children всегда будет возвращать большее значение, чем нам нужно.
А если исключить товары:
&templates=`-5`
где 5 — шаблон товара?
Не пробовал, думаю не помогут никакие такие манипуляции и countChildren будет считать все вложения, независимо от того как мы будем ограничивать, соответственно выдавать не тот результат. Написал свой сниппет, но мое любопытсво взяло вверх, и попробовал все таки через pdoMenu.
Решил по другому с помощью idx и class=«last»
В обертеке (&tplInnerRow) подкатегории сделал на них проверки.
Перед оборачивание проверял если idx = 4 открывал <обертка>
после оборачивания проверял если класс last, то проверяем еще что idx >3(что бы не закрыть того чего не открывали) тогда закрываем </обертка>
Вроде красиво получилось…
Решил по другому с помощью idx и class=«last»
В обертеке (&tplInnerRow) подкатегории сделал на них проверки.
Перед оборачивание проверял если idx = 4 открывал <обертка>
после оборачивания проверял если класс last, то проверяем еще что idx >3(что бы не закрыть того чего не открывали) тогда закрываем </обертка>
Вроде красиво получилось…
[[+idx:is=`4`:then=`<div class="display-none">`]]
<div class="item">
<a href="[[+link]]" class="solid">[[+menutitle]]</a>
</div>
[[+classes:is=`class="last"`:then=`
[[+idx:gt=`3`:then=`
</div>
<a href="" class="dotted show-user" data-alt="Скрыть">Все подкатегории</a>
`]]
`]]
Лучше свой сниппет написать с выводом pdofetch
В принципе если решения на pdoMenu не будет, то так и придется…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.