Вывести одним запросом товары minishop2 и обычные страницы
Всем привет!
Столкнулся с интересной проблемой. Необходимо вывести на одной странице товары магазина и страницы новостей. Эдакий совместный, перемешанный поток.
Вывожу через pdoPage в котором element msProducts. Выводит товары магазина но не выводит новости… Понимаю, что msProduct заточен на вывод товаров но, если я верно понимаю документацию, класс msproduct это расширенный класс modresource — должен же забирать и те и те?
Причём, для страницы автора делают тот же вывод но с фильтрацией по ТВ — работает…
Я запутался. Подскажите, пожалуйста, возможные решения.
Да, я понимаю, что могу в element поставить pdoResources он будет выводить все ресурсы но не будет автоматом подтягивать изображения из карточки товара и цены…
UPD: Для тех, кто будет искать решение, вот правильный leftJoin и select. Всё оказалось проще, не надо мудрить.
Столкнулся с интересной проблемой. Необходимо вывести на одной странице товары магазина и страницы новостей. Эдакий совместный, перемешанный поток.
Вывожу через pdoPage в котором element msProducts. Выводит товары магазина но не выводит новости… Понимаю, что msProduct заточен на вывод товаров но, если я верно понимаю документацию, класс msproduct это расширенный класс modresource — должен же забирать и те и те?
[[pdoPage?
&element=`msProducts`
&ajaxMode=`button`
&parents=`3,4`
&tpl=`catalog-item`
&tplCondition=`template`
&conditionalTpls=`{
"7":"feed-item",
"10":"catalog-item"
}`
&limit=`20`
&sortby=`menuindex`
&sortdir=`ASC`
&processTVs=`1`
&includeTVs=`tickerBookType,bookAuthor,bookAuthorAuto,autorFirstBookLetter,authorImage,newsStyleSelector,directShowViaMsProducts`
&tvPrefix=``
]]
Причём, для страницы автора делают тот же вывод но с фильтрацией по ТВ — работает…
[[pdoPage?
&element=`msProducts`
&ajaxMode=`button`
&parents=`3,4`
&tpl=`catalog-item`
&tplCondition=`template`
&conditionalTpls=`{
"7":"feed-item",
"10":"catalog-item"
}`
&limit=`20`
&sortby=`menuindex`
&sortdir=`ASC`
&processTVs=`1`
&includeTVs=`tickerBookType,bookAuthor,bookAuthorAuto,autorFirstBookLetter,authorImage,newsStyleSelector,directShowViaMsProducts`
&tvPrefix=``
&tvFilters=`bookAuthorAuto==[[*id]]|%||bookAuthorAuto==%|[[*id]]|%||bookAuthorAuto==%|[[*id]]||bookAuthorAuto==[[*id]]`
]]
Я запутался. Подскажите, пожалуйста, возможные решения.
Да, я понимаю, что могу в element поставить pdoResources он будет выводить все ресурсы но не будет автоматом подтягивать изображения из карточки товара и цены…
UPD: Для тех, кто будет искать решение, вот правильный leftJoin и select. Всё оказалось проще, не надо мудрить.
&leftJoin=`{
"msProductData": {
"class":"msProductData",
"alias":"data",
"on": "data.id = msProduct.id"
}
}`
&select=`{
"msProduct":"*",
"data":"price,old_price,image"
}`
Комментарии: 2
должен же забирать и те и те?Нет
Да, я понимаю, что могу в element поставить pdoResources он будет выводить все ресурсы но не будет автоматом подтягивать изображения из карточки товара и цены…Все верно, забираете через pdoResources с джойном картинок и всего остального
Спасибо за подсказку. Получилось.
Но пошли дубли товаров, не могу понять где ошибка…
Но пошли дубли товаров, не могу понять где ошибка…
[[pdoPage?
&element=`pdoResources`
&parents=`3,4`
&tpl=`catalog-item`
&tplCondition=`template`
&conditionalTpls=`{
"7":"feed-item",
"10":"catalog-item"
}`
&limit=`20`
&sortby=`publishedon`
&sortdir=`DESC`
&processTVs=`1`
&includeTVs=`tickerBookType,bookAuthor,bookAuthorAuto,autorFirstBookLetter,authorImage,newsStyleSelector,directShowViaMsProducts`
&tvPrefix=``
&class=`msProduct`
&leftJoin=`{
"image": {
"class":"msProductFile",
"alias":"image",
"on": "image.product_id = msProduct.id AND image.rank=0"
},
"msProductData": {
"class":"msProductData",
"on": "msProductData.id = msProduct.id"
}
}`
&select=`{
"msProduct":"*",
"image":"image.url as image",
"msProductData":"price,old_price"
}`
&showLog=`1`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.