msProducts - как получить массив с данными для дальнейшей выборки?
Здравствуйте!
Мне нужно сделать карусель товаров, которая имеет два блока: т.е. в верстке сначала выводится блок с картинками, а потом еще один блок с описаниями и характеристиками.
Два раза запускать [[!msProducts]] не хочется, поэтому решил сделать через fenom:
Мне нужно сделать карусель товаров, которая имеет два блока: т.е. в верстке сначала выводится блок с картинками, а потом еще один блок с описаниями и характеристиками.
Два раза запускать [[!msProducts]] не хочется, поэтому решил сделать через fenom:
{set $items = '!msProducts' | snippet : [
'parents' => 2,
....
]}
{foreach $items as $item}
...
{/foreach}
Но так, почему-то не работает — т.е. foreach не понимает массив $items… что делать? Комментарии: 13
А можно написать без tpl и выведет массив.
Или скопировать сниппет и вот тут:
github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_products.php#L241
вывести массив а не в чанк пихать
Или скопировать сниппет и вот тут:
github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_products.php#L241
вывести массив а не в чанк пихать
я ничего в чанк и не пихаю… хочу получить массив с данными
укажи &tpl=`` и выведет массив
мысль интересная… но не понятная
… нашел подобную тему на форуме — но там ответа так и не дали modx.pro/help/19613
… нашел подобную тему на форуме — но там ответа так и не дали modx.pro/help/19613
Но так, почему-то не работает — т.е. foreach не понимает массив $items… что делать?С чего бы ему быть массивом, если сниппет возвращает строку
а как быть?
?… а что плейсхолдер это разве массив?
Плейсхолдер может быть любым типом данных, но msProducts выставляет в него распарсенный шаблон, да, только что проверил.
Собственно, можно было бы воспользоваться общим параметром &return, выставив json, но в msProducts есть такая строка:
Отсюда простой вывод: если нужен массив, то используй pdoResources в связке с 'return' => 'json'.
Собственно, можно было бы воспользоваться общим параметром &return, выставив json, но в msProducts есть такая строка:
'return' => !empty($returnIds)
? 'ids'
: 'data',
Это значит, что из сниппета можно вернуть либо список id, либо распарсенный шаблон (строку).Отсюда простой вывод: если нужен массив, то используй pdoResources в связке с 'return' => 'json'.
не очень понял — т.е. нельзя из msProducts данные в массив загнать?
А если использовать pdoResources, то как мне от-туда миниатюры minishop получить, например?
А если использовать pdoResources, то как мне от-туда миниатюры minishop получить, например?
т.е. нельзя из msProducts данные в массив загнать?Нельзя.
как мне от-туда миниатюры minishop получить, например?Открыть сниппет msProducts, написать в поиске includeThumbs, а затем продублировать подобную выборку в pdoResources.
Если не нравится такое решение, то можно вызывать msProducts дважды, вряд ли это радикально повлияет на производительность, особенно в рамках карусели, где редко бывает больше 10-20 товаров.
Либо можно написать свою собственную выборку в новом сниппете, с помощью pdoFetch.
Либо на худой конец скопировать msProducts и убрать обработку чанка.
да, видимо придется дважды msProducts вызывать (в принципе, не критично, конечно)… про переделать сниппет msProducts, кстати, тоже хорошая мысль — но это лучше с утра, на свежую голову смотреть (пока не особо представляю как это)…
Спасибо.
Спасибо.
{assign var='bundleProducts' value=('msProducts'|snippet:[
'limit' => 0,
'parents' => 0,
'resources' => 'ваши айди',
'tpl' => '',
'return' => 'json',
'includeContent' => 1,
'includeThumbs' => 'medium',
'sortby' => ''
])|json_decode:1 nocache}
вызов смарти, но думаю всё ясно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.