вторник, 7 июля 2015 г.

Битрикс. Похожие товары.

Как известно, формулировка "похожести" у каждого заказчика своя. В данном варианте от меня требовалось создать компонент, возвращающий айдишки продуктов, "похожих" по следующим условиям:
  1. цена хотя бы одного торгового предложения искомого продукта не должна отличаться более чем PRICE_INTERVAL от цены исходного продукта
  2. искомый продукт должен лежать в той же секции, что и исходный продукт

Отсюда формулируем параметры, которые должен принимать будущий компонент:
  1. PRODUCT_ID - айди исходного продукта. обязательный параметр
  2. PRICE_INTERVAL - интервал цены плюс-минус. если задан ноль, то ищутся продукты с точно такой же ценой
  3. QUANTITY - количество возвращаемых значений. если задан ноль, то количество похожих продуктов не ограничивается искусственно.
Компонент возвращает массив айдишек похожих продуктов. Также компонент может возвращать false  в следующих случаях:
  1. не заполнен PRODUCT_ID или продукта с таким айди не существует
  2. не найдено ни одного подходящего под условия продукта
Получаем простой компонент, который только умеет принимать парочку параметров и возвращать массив. Никаких темплейтов ему не требуется, только хардкор.

Ну и естественно компонент должен использовать кеш.

Составляем логику кода
  1. если есть данные в кеше и они не протухли, то берём оттуда и переходим к шагу номер восемь, иначе идём к шагу номер два
  2. находим свойства продукта, айдишку раздела, где он лежит
  3. получаем офферы продукта и берём первую попавшуюся базовую цену на оффер (у текущего заказчика указано, что офферы стоят одинаково. даже если не одинаково, наш код это не взволнует, а если что - это легко исправить)
  4. находим ценовые рамки относительно цены, выясненной на предыдущем шаге
  5. находим все продукты найденного раздела и их офферы
  6. если базовая цена хоть одного оффера подходит, то пишем продукт этого оффера в массив на возврат
  7. пишем найденное в кеш
  8. возвращаем массив продуктов
Код сегодня в статье представлять не буду, скачивайте и смотрите внутрь сами, там всё просто.

Компонент products.similar
Создание компонентов, курс от Битрикс

Комментариев нет:

Отправить комментарий