Урок 4 из 6

Каталог товаров на сайте

7–10 мин

Заявки уходят в CRM. Теперь обратное направление: данные из Битрикса должны попасть на сайт.

В Битрикс24 есть свой каталог — раздел «Товары и Склады». Если товары, цены и остатки ведутся там, сайту незачем хранить второй список: он берёт данные из каталога, и менеджеру не приходится обновлять цены в двух местах.

Добавьте вебхуку право на каталог

В первом уроке мы отметили вебхуку только доступ к CRM — для заявок этого хватало. Для товаров нужно ещё одно право.

Откройте настройки вебхука в Битриксе, добавьте скоуп Торговый каталог (catalog) и сохраните. Если товары всё равно не приходят, проверьте, что у пользователя, от имени которого создан вебхук, есть доступ к каталогу.

Права расширяют под конкретную задачу, а не заранее на всё: чем меньше открыто, тем меньше можно сделать, если адрес вебхука куда-то попадёт.

Данные забирает сервер, а не страница

Страница каталога не обращается в Битрикс. Данные забирает сервер, хранит у себя копию, а посетитель видит уже готовые карточки. Так ключ не попадает в браузер, а витрина открывается быстро.

Как часто обновлять копию, разберём в следующем уроке. Сейчас достаточно получить каталог один раз.

Готовый запрос
Настрой получение каталога товаров из Битрикс24 на сайт по схеме из integration.md. Забери все товары, а не первую страницу списка: названия, цены, остатки, картинки и вариации. Картинки скачай на сервер сайта. Сохраняй данные у себя и строй карточки товаров из сохранённой копии. Готово, когда я вижу на сайте товары из Битрикса с ценами и картинками.

Три места, где обычно спотыкаются

Цены лежат отдельно. В Битриксе цена хранится не внутри товара, а отдельно и запрашивается своим методом. Поэтому частый первый результат — товары на месте, а цены нулевые. Если увидели такое, скажите прямо: цены не подтянулись, забери их отдельно.

Картинки. Их нужно скачать и хранить рядом с сайтом. Если карточки ссылаются на изображения внутри Битрикса, они могут не открыться у посетителя, который в вашем портале не работает.

Вариации. Если у товара есть размеры или цвета, в каталоге это отдельные записи, привязанные к основному товару. Их забирают отдельно, иначе на сайте окажется один товар без выбора.

Обновление без дублей

Каждый раз, когда сервер забирает каталог, он должен обновлять существующие карточки, а не создавать рядом новые. Узнают товар по идентификатору из Битрикса — не по названию, потому что название меняют.

Готовый запрос
При обновлении сопоставляй товары и вариации по идентификаторам из Битрикса: — существующие обновляй; — новые добавляй; — пропавшие из каталога убирай с витрины. Дубли не создавай.

Проверьте результат

  1. Товары появились на сайте, цены не нулевые.
  2. Картинки открываются в обычном браузере, а не только у вас.
  3. У товара с размерами или цветами доступен выбор.
  4. Запустите получение каталога ещё раз — количество товаров не должно вырасти.
  5. Скройте товар в Битриксе и обновите каталог — с витрины он должен пропасть.

Четвёртый пункт проверяют обязательно. Задвоение заметно не сразу: при первом обновлении всё выглядит правильно, а через неделю на сайте вдвое больше товаров, чем в Битриксе.

Итог

  • Для каталога вебхуку нужно отдельное право.
  • Данные забирает сервер и хранит копию, страница в Битрикс не ходит.
  • Цены и вариации хранятся отдельно от товаров и запрашиваются дополнительно.
  • Картинки скачивают к себе, иначе они не откроются у посетителя.
  • Товары сопоставляют по идентификатору из Битрикса, иначе каталог задваивается.