msProducts - как получить массив с данными для дальнейшей выборки?
Здравствуйте!
Мне нужно сделать карусель товаров, которая имеет два блока: т.е. в верстке сначала выводится блок с картинками, а потом еще один блок с описаниями и характеристиками.
Два раза запускать [[!msProducts]] не хочется, поэтому решил сделать через fenom:
Мне нужно сделать карусель товаров, которая имеет два блока: т.е. в верстке сначала выводится блок с картинками, а потом еще один блок с описаниями и характеристиками.
Два раза запускать [[!msProducts]] не хочется, поэтому решил сделать через fenom:
{set $items = '!msProducts' | snippet : [
'parents' => 2,
....
]}
{foreach $items as $item}
...
{/foreach}
Но так, почему-то не работает — т.е. foreach не понимает массив $items… что делать? Комментарии: 12
А можно написать без 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, кстати, тоже хорошая мысль — но это лучше с утра, на свежую голову смотреть (пока не особо представляю как это)…
Спасибо.
Спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.