Вывод рандомных товаров через формулы

С помощью формул теперь возможно выводить рандомные товары например для раздела “Похожие товары”, в данной инструкции описано пошаговое создание рандомной формулы.
Для работы вам понадобится:

  • Редактор 4.2 и выше

  • Секция Глобальные переменные

  • Подключенная таблица

Инструкция

1. В редакторе добавляем секцию Глобальные переменные. В данной секции возможно подключать несколько разных таблиц и задавать формулы для работы с данными. На опубликованной странице секции видно не будет.

image
2. При добавлении страницы у вас появляются переменные, нажмем у одной из переменных на гаечный ключ и разберем какие поля есть для работы:

  • Название переменной - в поле необходимо вписать любое название на английском, это поле необходимо нам для взаимодействия с переменными и формулами ниже.

  • Описание переменной - в этом поле можно написать что делает данная переменная, например “Вывод данных из бд”. Данное поле можно оставить пустым, его заполняете для удобства, чтобы было легче ориентироваться в множестве переменных.

  • Тип переменной - в выпадающем списке нужно выбрать один из вариантов Формула или Запрос к базе данных. При выборе первого варианта появится поле в котором вводите формулу, о том какие формулы доступны можно ознакомится в инструкции Формулы, при выборе второго варианта появится возможность подключить нужную таблицу.

image
3. В первой переменной нужно подключить таблицу, поэтому в поле Тип переменной выбираем Запрос к базе данных. Рассмотрим какие поля нам доступны после выбора Запрос к базе данных:

  • В выпадающем списке Подключение к таблице выбираем таблицу с которой будем работать.

  • В Фильтрах можно ограничить список выводимых значений по определенному значению.

  • Так же можно задать Сортировку, например по возрастанию.

  • В поле Количество записей можно задать сколько записей выводить в поле.

Обязательно нажимаем применить чтобы таблица подключилась.

image
4. Теперь откроем вторую переменную, зададим ей название ids и выберем тип переменной Формула. В данной переменной мы получим все id товаров которые были найдены в первой переменной. Для этого нам понадобится функция map которая выполняет преобразование каждого элемента массива. В данную функцию передается два параметра массив, формула (array, expression). Нам нужно получить id всех значений из таблицы, поэтому формула будет иметь вид

map(my_table.rows, item.title) == ["16","23","22","17"....]

image
Разберем несколько новых значений

  • rows - в этом объекте хранятся все значения из таблицы

  • item - содержит один элемент массива

  • title - название поля

Чтобы увидеть все доступные названия полей необходимо вернуться в настройки первой переменной и нажать на вкладку Переменная: Название переменной

image

  1. Добавим еще одну переменную с именем shuffled с типом переменной Формула. В которую запишем формулу Перемешивание списка в случайном порядке.
let({
  array: [1, 2, 3, 4, 5]
}, map(
  sort(map(array, [item, random()]), item[1]),
  item[0]
))

Вместо [1, 2, 3, 4, 5] подставляем имя переменной созданной в шаге 4.

image
Больше доступных форм для работы вы найдете в инструкции Готовые формулы

  1. Создадим еще одну переменную чтобы обрезать количество выводимых значений до 5 и преобразовать массив в строку. Имя переменной будет FinalList с типом переменной Формула. Добавляем следующую формулу:
join(slice(shuffled, 0, 5 ), ", ")

Теперь разберем что же делает эта формула

  • join - функция переводит массив в строку, в нее передается два параметра первый обязательный это массив(strings) и второй не обязательный разделитель (separator). Если разделитель опустить все значения массива объединятся в одну строку. Нам же нужно чтобы функция разделила все значения через запятую, поэтому передаем запятую после массива внутри кавычек (", ")
  • slice - функция обрезает массив, возвращая заданный промежуток. В данную функцию передается три параметра массив (array), start индекс по которому начинается отсчет (счёт начинается с нуля) и count по которому заканчивается извлечение. Важно! Метод slice() извлекает элементы с индексом меньше count.

image
2. И последний шаг. Добавляем виджет или секцию Набор блоков задаем фильтр по нашей переменной FinalList, в условии фильтра обязательно выбираем Один из вариантов.

image
Готово, теперь каждый раз при открытии страницы у вас будут подтягиваться разные товары.

ТЕХНИЧЕСКАЯ ПОДДЕРЖКА

Не можете найти то, что ищете?

Напишите нам. Мы на связи с 7:00 до 22:00 без выходных. Среднее время ожидания ответа: 10-15 минут. Также вы можете вступить в наш Телеграм-чат, где собралось много специалистов и пользователей.

Поддержка Creatium

Агенты ответят через 10 минут

Агенты ответят

Блог, курсы и полезные материалы 

Платформа сайтов любой сложности