Вывести N-рандомных товаров из списка

Когда на странице нужно показать несколько случайных товаров из заранее подготовленного набора (например, «promo» — промо-товары, акции, рекомендации). При каждом обновлении страницы выводятся другие товары — это оживляет витрину и помогает посетителю увидеть больше ассортимента.
Smarty
{$p_count = 2}
{$products_menu = $wa->shop->productSet("promo")}
{foreach $products_menu as $a => $k}
{$products_item[] = $k.id}
{/foreach}
{foreach $products_item as $a => $k}
{assign var=random value=1|rand:1000}
{$products_items[$random] = $a}
{$products_items[$random] = $k}
{/foreach}
{for $i=1 to 1000}
{foreach $products_items as $s => $k}
{if $i == $s}
{$products_out[] = $k}
{/if}
{/foreach}
{/for}
{$products_sidebar = $wa->shop->products("id/"|cat:implode($products_out|array_slice:0:$p_count, ","))}
{include file="`$wa_active_theme_path`/list-thumbs.html" products=$products_sidebar}В Shop-Script для этого можно использовать товарные наборы (productSet) и небольшую логику рандомизации прямо в шаблоне Smarty. Ниже — рабочий вариант, который мы разбирали ранее. Он решает задачу в лоб: получает все товары из набора, перемешивает их через присваивание случайным ключам, затем вытягивает первые N штук и передаёт в шаблон вывода карточек.
Готовы запустить магазин?
Оставьте email и наша команда свяжется с вами для бесплатной консультации
