Сортировка pdoPage (категории по menuindex)
Доброго дня!
Есть дерево ресурсов:
Каталог
-Категория 1
--Товар 1
--Товар 2
-Категория 2
--Товар 3
--Товар 4
-Категория 3
--Товар 5
--Товар 6
Как сделать чтобы при перемещении в админке категории 2 выше категории 1, сначала бы выводились товары категории 2, а потом с категории 1: Товар 3, Товар 4, Товар 1, Товар 2, Товар 5, Товар 6.
Сейчас вызов такой:
Порядок вывода товаров из категорий правильный (menuindex).
А порядок вывода категорий не меняется, при перемещении их в админке.
Буду очень благодарен за помощь
Есть дерево ресурсов:
Каталог
-Категория 1
--Товар 1
--Товар 2
-Категория 2
--Товар 3
--Товар 4
-Категория 3
--Товар 5
--Товар 6
Как сделать чтобы при перемещении в админке категории 2 выше категории 1, сначала бы выводились товары категории 2, а потом с категории 1: Товар 3, Товар 4, Товар 1, Товар 2, Товар 5, Товар 6.
Сейчас вызов такой:
[[!pdoPage?
&element=`msProducts`
&limit=`24`
&parents=`[[*id]]`
&sortby=`{"parent":"ASC","menuindex":"ASC"}`
]]
Порядок вывода товаров из категорий правильный (menuindex).
А порядок вывода категорий не меняется, при перемещении их в админке.
Буду очень благодарен за помощь
Комментарии: 7
Правильно, вы ж сортируете их вначале по id родителя, а потом по menuindex товара. А при изменении menuindex у родителя его id же не меняется.
Сначала получайте родителей, сортируя по menuindex, потом в чанке шаблона еще один вызов сниппета, уже для получения товаров.
Сначала получайте родителей, сортируя по menuindex, потом в чанке шаблона еще один вызов сниппета, уже для получения товаров.
точно, спасибо!!!
Логика на первый взгляд правильная была, но что делать с пагинацией?
Сначала как понимаю должен вызваться pdoResources, который вытаскивает правильный порядок категорий, а в чанке pdoResources вызывается pdoPage для каждой категории отдельно. В этом случае получается несколько блоков пагинаций (сколько категорий)
Ежели сначала pdoPage вызвать, то пагинация будет на количество категорий, а не товаров.((
Сначала как понимаю должен вызваться pdoResources, который вытаскивает правильный порядок категорий, а в чанке pdoResources вызывается pdoPage для каждой категории отдельно. В этом случае получается несколько блоков пагинаций (сколько категорий)
Ежели сначала pdoPage вызвать, то пагинация будет на количество категорий, а не товаров.((
Решил так:
ID шаблона категорий — 3
ID шаблона товаров — 4
В шаблоне категории:
Чанк category_id:
Чанк category_id_tpl:
ID шаблона категорий — 3
ID шаблона товаров — 4
В шаблоне категории:
[[!pdoPage?
&element=`msProducts`
&limit=`24`
&parents=`[[*id]]`
&resources=`[[pdoResources?&element=`msProducts`&tpl=`category_id`&limit=`0`&parents=`[[*id]]`&sortby=`menuindex`&sortdir=`ASC`&where=`{"template":3}`]]`
&sortby=``
&sortdir=`ASC`
&where=`{"template":4}`
]]
[[!+page.nav]]
Чанк category_id:
[[!pdoPage?
&element=`msProducts`
&tpl=`category_id_tpl`
&limit=`0`
&parents=`[[+id]]`
&includeTVs=`1`
&sortby=`{"parent":"ASC","menuindex":"ASC"}`
&where=`{"template":4}`
]]
Чанк category_id_tpl:
[[+id]],
Да, если нужна пагинация, перечислить ресурсы хорошая мысль. В pdoResources можно указывать &return=`ids`, чтобы не мудрить с шаблонами.
Спасибо)
Сделал таким же методом, но немного по другому. Может кому пригодится.
Ключевая фраза в сортировке
Ключевая фраза в сортировке
&sortby=`FIELD(parent, [[+ids]])`
т.е. сортируем по родителям и передаем список родителей.[[!pdoResources?
&parents=`275`
&return=`ids`
&limit=`0`
&where=`{"template":3}`
&sortby=`{"menuindex":"ASC"}`
&toPlaceholder=`ids`
]]
[[!pdoResources?
&parents=`[[+ids]]`
&tpl=`products_tpl`
&limit=`0`
&hideContainers=`1`
&sortby=`FIELD(parent, [[+ids]])`
&sortdir=`ASC`
&limit=`0`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.