Вывод нескольких случайных товаров из категории? Есть решение

Как с наименьшим количеством запросов к базе вывести 5 случайных товаров из категории?

В код движка лезть нет возможности. Нужно сделать из Smarty. Возможно ли это?

Вариант подгрузить много товаров, перемешать их с помощью shuffle и вывести первые 5 мне известен, но ИМХО генерирует много лишних запросов к базе данных.

6 ответов

  • 2
    Николай Иванов Эксперт Разработчик 7 апреля 2017 17:38 # Решение

    Псевдослучайно пойдет? Случайный товар и несколько следующих за ним.
    {$count=$wa->shop->productsCount('category/207')}
    {$my_rand_products = $wa->shop->products('category/111',rand(0, $сount - 5), 5)}


  • 1
    Rat Разработчик 7 апреля 2017 18:32 #

    Можно ещё так сделать:

    1. С помощью плагина "Умная сортировка" добавить дополнительное правило случайной сортировки товаров.
    2. Для нужной категории создать скрытую динамическую подкатегорию-фильтр без каких-либо условий — чтобы в неё попали все товары из родительской категории.
    3. В шаблоне, где нужно показать случайно выбранные товары, получить список этих товаров методом
      {$products = $wa->shop->products('category/111', 0, 5)}
      {* вместо 111 подставить ID скрытой подкатегории-фильтра, конечно *}

    • +1
      focus15 focus15 7 апреля 2017 22:26 #

      У решения есть один большой минус - платный плагин. В любом случае, спасибо за помощь

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите