Исключить из выборки msProducts товары из неактивных категорий
Здравствуйте.
Задача в названии.
Код вызова сниппета msProducts:
Главный разрез
— Категория 1 (опубликована)
— — Товар 1
— — Товар 2
— Категория 2 (не опубликована)
— — Товар 1
— — Товар 2
— Категория 3 и т.д.
В списке товаров фигурируют товары из второй категории (сами товары активны).
Вопросы:
1. Так задумано, мол выборка ресурсов, и если они активны, то не важно что там с родителем?
2. Если ответ на первый вопрос «Да», то как сделать выборку с учетом родителя?
2.1. Получить через сниппент активные ресурсы первого уровня, загнать их в плейсхолдер, а потом выставить в parent?
2.2. Как-то иначе?
Задача в названии.
Код вызова сниппета msProducts:
[[!msProducts?
&element=`msProducts`
&parents=`[[*id]]`
&tpl=`product.tpl`
&sortby=`id`
&sortdir=`DESC`
&limit=`0`
&leftJoin=`{
"Remains": {
"class": "msprRemains",
"on": "msProduct.id = Remains.product_id AND Remains.remains > 0"
}
}`
&groupby=`msProduct.id`
&select=`{
"msProduct": "*",
"Remains": "SUM(Remains.remains) as remains"
}`
&where=`{
"Remains.remains:>": "0",
"Data.favorite":"0"
}`
]]
Структура дерева:Главный разрез
— Категория 1 (опубликована)
— — Товар 1
— — Товар 2
— Категория 2 (не опубликована)
— — Товар 1
— — Товар 2
— Категория 3 и т.д.
В списке товаров фигурируют товары из второй категории (сами товары активны).
Вопросы:
1. Так задумано, мол выборка ресурсов, и если они активны, то не важно что там с родителем?
2. Если ответ на первый вопрос «Да», то как сделать выборку с учетом родителя?
2.1. Получить через сниппент активные ресурсы первого уровня, загнать их в плейсхолдер, а потом выставить в parent?
2.2. Как-то иначе?
Комментарии: 1
Правильный сценарий — это снять с публикации и товары (хотя это бывает часто не удобно для менеджеров и т.п.).
Но в целом компонент типа msPre позволяет сделать это быстро.
Дело в том, что в modx снятие с публикации страницы (любой) верхнего уровня не означает, что весь раздел снять с публикации.
Если же ответить на ваш вопрос — то нужно сделать еще один leftJoin (по аналогии с Remains), куда джойнить категорию товара. И в where добавить условие, что категория опубликована.
И ее забыть, что:
— товар все равно опубликован, он будет доступен по прямой ссылке
— товар опубликован, он попадает в разные выгрузки типа карты сайта, sitemap.xml и т.п., за всем этим нужно следить
Но в целом компонент типа msPre позволяет сделать это быстро.
Дело в том, что в modx снятие с публикации страницы (любой) верхнего уровня не означает, что весь раздел снять с публикации.
Если же ответить на ваш вопрос — то нужно сделать еще один leftJoin (по аналогии с Remains), куда джойнить категорию товара. И в where добавить условие, что категория опубликована.
И ее забыть, что:
— товар все равно опубликован, он будет доступен по прямой ссылке
— товар опубликован, он попадает в разные выгрузки типа карты сайта, sitemap.xml и т.п., за всем этим нужно следить
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.