полю? типа: &sortby=`Data.new, RAND()`?
{'!msProducts' | snippet : [ 'parents' => 11, 'limit' => 24, 'where' => '{"Data.new":"1"}', 'sortby' => 'RAND()', 'tpl' => 'tpl.item', ]}
примерно так сначала и подумал, но у меня ещё есть поле, в котором числа от 0 и больше. и мне нужно эту выборку рандомизировать, и отсорировать от большего к меньшему. с where так не получается(
верней не так, это я чушь написал)
рандомизировать сначала всё что больше нуля, а снулем добавить в конец
Видимо это поле остаток? Сначала вывести все, которые есть в рандомном порядке и под конец добавить те, которых нет, верно? Выводишь просто msProducts или в pdoPage обертке?
да, это поле с остатком. вывожу вообще чере ajaxsnippet так: [[AjaxSnippet? &snippet=`msProducts` &wrapper=`tpl.msProducts.categoryProducts` &as_mode=`onload` &parents=`[[*parent]]` &resources=`-[[*id]]` &tpl=`tpl.msProducts.row.custom` &limit=`12` &sortby=`RAND()` &includeThumbs=`medium` &templates=`6` ]]
В sortby добавь тогда еще условие
ну вот я и не очень понял, как правильно это сделать
если бы он сказал, что сначала по остаткам в убывающем порядке и потом по цене например в возрастающем, то ок.
да, всё правильно) у меня получается двойная сортировка что-ли должна быть. я пока вижу способ только два раза сниппет вызывать: отдельно где >0 и отдельно с 0, но это такое себе
Хотя попробуй так, хз правда &sort=`Data.ostatok:desc,rand()`
а в msProducts же нет просто sort
Чтобы сначала вывести все товары с остатком больше 0 через rand() а затем товары с остатком 0, вы можете использовать несколько AjaxSnippets и комбинировать результаты. Сначала создайте AjaxSnippet, который будет выводить товары с остатком больше 0: [[AjaxSnippet? &snippet=`msProducts` &wrapper=`tpl.msProducts.categoryProducts` &as_mode=`onload` &parents=`[[*parent]]` &resources=`-[[*id]]` &tpl=`tpl.msProducts.row.custom` &limit=`12` &sortby=`RAND()` &includeThumbs=`medium` &templates=`6` &where=`{"stock >":"0"}` ]] Затем создайте еще один AjaxSnippet, который будет выводить товары с остатком 0: [[AjaxSnippet? &snippet=`msProducts` &wrapper=`tpl.msProducts.categoryProducts` &as_mode=`onload` &parents=`[[*parent]]` &resources=`-[[*id]]` &tpl=`tpl.msProducts.row.custom` &limit=`12` &sortby=`RAND()` &includeThumbs=`medium` &templates=`6` &where=`{"stock":"0"}` ]] Таким образом, сначала будет выведен список товаров с остатком больше 0, отсортированных случайным образом. Затем будут выведены товары с остатком 0, также отсортированные случайным образом.
скорее всего только так
Обсуждают сегодня