Для корректной интеграции блоков рекомендаций на сайте потребуется добавить в HTML-разметку контейнеры с уникальным идентификатором (id), по которому будет осуществляться привязка блоков.
Например: блок нужно разместить после описания товара, но до блока «Вы смотрели». В таком случае контейнер размещается после div.product-info и до div#lbrecentproduct.
Добавьте id="digi-recs" на элемент <div>. Если на странице несколько блоков — добавляйте цифровое обозначение в конце.
// Один блок на странице: <div id="digi-recs"></div> // Несколько блоков на странице: <div id="digi-recs-1"></div> <div id="digi-recs-2"></div>
<div id="digi-recs"></div>
Откройте инструменты разработчика браузера и введите в поиске по DOM digi-recs. После этого найдётся контейнер, расположенный в согласованном месте.
Если вы интегрируете блоки рекомендаций через API-эндпоинт, но нет возможности самостоятельно настроить трекинг — команда AnyQuery может настроить его самостоятельно. Для этого потребуется выполнить разметку блоков рекомендаций на фронте.
Родительскому элементу блока рекомендаций необходимо добавить следующие атрибуты:
| # | Атрибут | Пример значения | Источник |
|---|---|---|---|
| 1 | id | any-recs-container | Произвольно; можно одинаковый для всех блоков от одного подрядчика |
| 2 | strategyMessage | Похожие товары | Из ответа API. Если заголовок задаётся партнёром — передаётся его значение |
| 3 | placement | item_page.alternatives | Из ответа API |
| 4 | strategyName | cf95b917-0924-3c9d-af9c-d2550c45e49b | Из ответа API |
<div id="any-recs-container" strategyMessage="Похожие товары" placement="item_page.alternatives" strategyName="cf95b917-0924-3c9d-af9c-d2550c45e49b" > <!-- Контент блока рекомендаций --> </div>
Каждой карточке товара внутри блока рекомендаций необходимо добавить:
| # | Что добавить | Пример | Описание |
|---|---|---|---|
| 1 | class | any-recs-product | Класс для идентификации карточек товара в блоке |
| 2 | any-offer-id или data-any-offer-id | 33526 | ID товара из YML-фида (offer_id) |
<div class="any-recs-product" any-offer-id="33526" > <!-- Контент карточки товара --> </div>
Если в вашем проекте используются CSS Modules, имена классов генерируются автоматически и содержат хэш для изоляции стилей. В итоге в реальном DOM класс выглядит не как product-name, а как product-name__xK9p2 — и это имя меняется при каждой сборке.
Решение — добавить стабильные классы с префиксом
any-recs-product__ непосредственно на нужные элементы.
Стабильные классы добавляются дополнительно к существующим — они не влияют на стили и не конфликтуют с CSS Modules, поскольку не несут стилевой нагрузки.
| Класс | Обязательность | Элемент | Примечание | |
|---|---|---|---|---|
| 🏷️ | any-recs-product__name | обязателен | Название товара | Используется в трекинге кликов и отображении сниппета |
| 💰 | any-recs-product__price | обязателен | Актуальная цена товара. Если скидки нет — основная цена | При наличии скидки — цена со скидкой (итоговая к оплате) |
| 🛒 | any-recs-product__cart-button | обязателен | Кнопка «В корзину» | Основная кнопка добавления в корзину |
| ➕ | any-recs-product__cart-counter-add | если есть счётчик | Кнопка «+» в счётчике количества товара | Если товар добавляется через счётчик, а не через отдельную кнопку |
| ❤️ | any-recs-product__favorite-button | необязателен | Кнопка «В избранное» | Добавить, если кнопка избранного присутствует в карточке |
| ⚖️ | any-recs-product__compare-button | необязателен | Кнопка «В сравнение» | Добавить, если кнопка сравнения присутствует в карточке |
any-recs-product__cart-counter-add на кнопку «+» счётчика. Если есть и кнопка, и счётчик — добавьте оба класса на соответствующие элементы.
<div class="any-recs-product" any-offer-id="33526" > <!-- Название товара --> <span class="productName__xK9p2 any-recs-product__name"> Смартфон Samsung Galaxy A55 </span> <!-- Цена (со скидкой, если есть; иначе — обычная) --> <span class="priceActual__mR3k any-recs-product__price"> 34 990 ₽ </span> <!-- Кнопка «В корзину» --> <button class="addToCart__Lp7q any-recs-product__cart-button"> В корзину </button> <!-- Счётчик количества (если есть) — кнопка «+» --> <button class="counterAdd__Yv2s any-recs-product__cart-counter-add">+</button> <!-- Кнопка «В избранное» (если есть) --> <button class="favoriteBtn__Qw1n any-recs-product__favorite-button"> ♡ </button> <!-- Кнопка «В сравнение» (если есть) --> <button class="compareBtn__Tz8e any-recs-product__compare-button"> ⚖ </button> </div>
productName__xK9p2 — это сгенерированные CSS Modules классы. Классы вида any-recs-product__name — стабильные, добавляются рядом и не влияют на стили.<div id="any-recs-container" strategyMessage="Похожие товары" placement="item_page.alternatives" strategyName="cf95b917-0924-3c9d-af9c-d2550c45e49b" > <h2>Похожие товары</h2> <!-- Карточка 1 --> <div class="any-recs-product" any-offer-id="33526"> <span class="productName__xK9p2 any-recs-product__name">Товар 1</span> <span class="price__aB4r any-recs-product__price">1 990 ₽</span> <button class="btn__Lp7q any-recs-product__cart-button">В корзину</button> <button class="fav__Qw1n any-recs-product__favorite-button">♡</button> </div> <!-- Карточка 2 --> <div class="any-recs-product" any-offer-id="44812"> <span class="productName__xK9p2 any-recs-product__name">Товар 2</span> <span class="price__aB4r any-recs-product__price">3 490 ₽</span> <button class="counterAdd__Yv2s any-recs-product__cart-counter-add">+</button> <button class="compare__Tz8e any-recs-product__compare-button">⚖</button> </div> </div> <!-- Легенда подсветки: зелёный — название и цена (обязательны) жёлтый — кнопки корзины / счётчика (обязательны) синий — избранное и сравнение (если есть) -->