Как известно, формулировка "похожести" у каждого заказчика своя. В данном варианте от меня требовалось создать компонент, возвращающий айдишки продуктов, "похожих" по следующим условиям:
Отсюда формулируем параметры, которые должен принимать будущий компонент:
Ну и естественно компонент должен использовать кеш.
Составляем логику кода
Компонент products.similar
Создание компонентов, курс от Битрикс
- цена хотя бы одного торгового предложения искомого продукта не должна отличаться более чем PRICE_INTERVAL от цены исходного продукта
- искомый продукт должен лежать в той же секции, что и исходный продукт
Отсюда формулируем параметры, которые должен принимать будущий компонент:
- PRODUCT_ID - айди исходного продукта. обязательный параметр
- PRICE_INTERVAL - интервал цены плюс-минус. если задан ноль, то ищутся продукты с точно такой же ценой
- QUANTITY - количество возвращаемых значений. если задан ноль, то количество похожих продуктов не ограничивается искусственно.
- не заполнен PRODUCT_ID или продукта с таким айди не существует
- не найдено ни одного подходящего под условия продукта
Ну и естественно компонент должен использовать кеш.
Составляем логику кода
- если есть данные в кеше и они не протухли, то берём оттуда и переходим к шагу номер восемь, иначе идём к шагу номер два
- находим свойства продукта, айдишку раздела, где он лежит
- получаем офферы продукта и берём первую попавшуюся базовую цену на оффер (у текущего заказчика указано, что офферы стоят одинаково. даже если не одинаково, наш код это не взволнует, а если что - это легко исправить)
- находим ценовые рамки относительно цены, выясненной на предыдущем шаге
- находим все продукты найденного раздела и их офферы
- если базовая цена хоть одного оффера подходит, то пишем продукт этого оффера в массив на возврат
- пишем найденное в кеш
- возвращаем массив продуктов
Компонент products.similar
Создание компонентов, курс от Битрикс
Комментариев нет:
Отправить комментарий