Для подстановки необходимо создать в письме блок только с одним товаром, в котором используются специальные теги-шаблоны:
%YML_NAME% — название товара (если в вашем фиде это поле name);
%YML_DESCRIPTION% — описание (если в вашем фиде это поле description);
%YML_PRICE% — цена (если в вашем фиде это поле price);
%YML_URL% — ссылка на товар;
%YML_IMAGE% — адрес картинки;
%YML_QUANTITY% — количество данного товара;
%YML_TOTAL_SUM% — сумма за данный товар;
А также прочие поля из товарного фида в виде %YML_ИМЯ ПОЛЯ БОЛЬШИМИ БУКВАМИ%.
Важно: для ссылок используется не http://%YML_IMAGE% и http://%YML_URL%, а просто href="%YML_URL%" и src="%YML_IMAGE%".
Необходимо учитывать, что подстановка товаров работает только в шаблоне формата html. Про загрузку такого шаблона можно прочитать в статье "Загрузка своего HTML-макета". Чтобы не создавать html-шаблон с нуля, вы можете создать письмо с одним товаром в онлайн-редакторе, а после этого скопировать его код через просмотр исходного кода страницы из предпросмотра макета. Далее в полученном коде можно использовать специальные теги.
В коде письма перед началом html-разметки товара нужно добавить комментарий <!--json_cart-->, а в конце - <!--/json_cart-->. В результате при отправке письма на основе такого шаблона будет сформирована корзина, в которой блоки с товарами будут созданы для каждого товара по образцу html-шаблона, заданного между указанными комментариями, и идти один за другим.
Такой подход хорошо подходит для "вертикального" расположения товаров один под другим. Да, мы можем делать 2 карточки в строке, но решения, позволяющего делать карточку шириной во всю строку, если она одна, пока нет. Все карточки подставляются в письмо с идентичной версткой по шаблону первой. Более того, на данный момент решение, позволяющее делать 2 карточки в строке, работает только если карточка - это элемент td таблицы.
Обращаем внимание, что комментарии должны идти именно перед и после той части, которая будет повторяться, например:
<table>
<!--json_cart-->
<tr>
<td>...</td>
</tr>
<!--/json_cart-->
</table>
Если поместить их перед <table> и после </table>, то для каждого товара будет повторяться вся таблица, а не ее строка. С помощью %CART_SUM% можно подставить в письмо общую стоимость корзины (будет просто число, без валюты), а с помощью %CART_NUM% - общее количество товаров. И это надо делать вне разметки <!--json_cart-->...<!--/json_cart-->, чтобы избежать повторений информации об общей стоимости корзины.
Аналогично можно (если у вас корректно настроена передача событий просмотра товаров) подставлять в письмо недавно просмотренные товары с помощью специальных меток в письме <!--json_recent-->...<!--/json_recent--> (теги шаблонов внутри карточки товара те же, что и в корзине).
Также вы можете ограничить число товаров в выдаче с помощью специальных меток. Например, если вы хотите, чтобы в письмо подставлялось не более 6 товаров, то перед <!--json_cart--> надо поместить <!--json_cart_limit--><!--6--><!--/json_cart_limit--> и <!--json_recent_limit--><!--6--><!--/json_recent_limit-->
Подстановка конкретных товаров
Все делается аналогично корзине:
в письме такую же заготовку товара с теми же тегами оборачиваем в <!--json_products-->...<!--/json_products--> (вместо <!--json_cart-->);
перед этим делаем пометку типа <!--json_products_list--><!--//offer[@category=XXXX]--><!--/json_products_list--> и если надо - <!--json_products_limit--><!--16--><!--/json_products_limit--> (где 16 - максимальное число товаров).
Если нужно подставить список товаров по id из фида, то вместо //offer[@category=XXXX] просто перечисляем их id через запятую (например, <!--json_products_list--><!--123,456,789,101112--><!--/json_products_list-->)
Подключение конкретного фида и подстановка товаров из него
Если вы используете несколько товарных каталогов, то чтобы указать необходимый фид, перед <!--json_products--> необходимо добавить метку <!--json_feed_id--><!--123--><!--/json_feed_id-->, где 123 заменить на id нужного фида.Товары добавляются с помощью спец. верстки, как указано в предыдущем разделе.