# Шаблоны писем



# Редактор кода

Редактор кода поддерживает HTML и MJML разметку.

## Функции
### Функции для вызова списка товаров
#### Общая информация

Эти функции используются в циклах **for** для передачи данных о товарах из фида в шаблон.

Начало цикла:
```
{% for %}
```
Конец цикла:
```
{% endfor %}
```
Вызов функции возвращает список товаров, каждая итерация цикла возвращает один товар, чтобы ограничить число итераций и соответственно количество товаров в конкретном блоке, можно использовать метод slice с помощью квадратных скобок [начало:конец], например [0:2] означает, что нужно запустить цикл по первым двум товарам, [2:4] - по второму и третьему, отсчёт начинается с 0.

Пример цикла по двум первым товарам из списка товаров в корзине:
```js
{% for item in get_cart_items() [0:2] %}
{% endfor %}
```

#### Товары из корзины
```js
get_cart_items()
```

#### Просмотренные товары
```js
get_viewed_items()
```

#### Товары из сервиса рекомендаций
Нужно указать алгоритм сервиса рекомендаций через параметр **service_name**
```js
get_recommendations(service_name='top_offers')
```

Этот список необходимо определить в отдельную переменную, чтобы избежать дублей товаров, так как каждый вызов функции возвращает новый список товаров:

```js
{% set rec_offers = get_recommendations(service_name='top_offers') %}
```

Не все [**алгоритмы рекомендаций**](https://docs.leadhit.io/books/%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0-d64/page/%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0) можно использовать в рассылках, доступные к использованию отмечены значком конверта.

#### Случайные товары из фида
Можно указать необходимое количество товаров в списке через параметр **count**
```js
get_random_offers(count=3)
```

Этот список необходимо определить в отдельную переменную, чтобы избежать дублей товаров, так как каждый вызов функции возвращает новый список товаров:
```js
{% set random_offers = get_random_offers(count=10) %}
```

#### Пример
Создаём переменную **random_offers** со списком случайных товаров, указываем количество - 10
```js
{% set random_offers = get_random_offers(count=10) %}
```

Запускаем цикл по товарам в горизонтальном блоке с товарами из созданной переменной со списком и ограничиваем количество товаров до двух: 
```html
<mj-section>
  {% for item in random_offers[0:2] %}
  <mj-column>
    <mj-image src="{{item.picture}}" />
    <mj-text>
      {{item.name}}
    </mj-text>
    <mj-text>
      {{item.price}}
    </mj-text>
    <mj-button href="{{item.url}}">Купить</mj-button>
  </mj-column>
  {% endfor %}
</mj-section>
```
Получаем 2 товара в ряд с изображением, названием, ценой и кнопкой, ведущей на страницу товара:
[![items_row.png](https://book.dev.leadhit.ru/uploads/images/gallery/2021-03/scaled-1680-/items_row.png)](https://book.dev.leadhit.ru/uploads/images/gallery/2021-03/items_row.png)


### Дополнительные функции

#### Получить случайный промокод из импортированного списка
```js
{{get_promocode()}}
```

#### Отменить формирование шаблона
```js
{{exit()}}
```

**Важно: функция exit не работает в массовых рассылках**

## Переменные товаров
Эти переменные используются в циклах товарных функций, названия соответствуют тегам в фиде
```js
{{item.picture}}
{{item.name}}
{{item.price}}
{{item.oldprice}}
{{item.url}}
{{item.type_prefix}}
{{item.vendor}}
{{item.model}}
```

## Переменные лида

| Переменная | Значение |
| ------ | ----------- |
| {{lead.name}} | Имя |
| {{lead.last_name}} | Фамилия
| {{lead.position}} | Должность
| {{lead.email}} | Адрес электронной почты
| {{lead.phone}} | Номер телефона
| {{lead.region}} | Регион
| {{lead.country}} | Страна
| {{lead.city}} | Город
| {{lead.address}} | Адрес
| {{lead.company}} | Компания
| {{lead.birthday}} | День рождения
| {{lead.sex}} | Пол

## Остальные переменные

#### Ссылка для открытия письма в браузере (веб-версия письма)
```js
{{webview_url}}
```
Переменная используется в качестве значения атрибута **href**
```html
href='{{webview_url}}'
```

#### Ссылка для отписки от рассылок
```js
{{unsubscribe_url}}
```
Переменная используется в качестве значения атрибута **href**
```html
href='{{unsubscribe_url}}'
```

# Редактор Stripo

Помимо HTML и MJML верстки можно воспользоваться редактором Stripo - визуальный редактором писем, который не требует знаний языков разметки, письмо создаётся путём перетаскивания уже готовых элементов из меню и их стилизацией.

[![77.png](https://book.dev.leadhit.ru/uploads/images/gallery/2021-03/scaled-1680-/77.png)](https://book.dev.leadhit.ru/uploads/images/gallery/2021-03/77.png)

У Stripo есть своя инструция по созданию писем, ознакомиться с ней можно по [**этой ссылке**](https://stripo.email/ru/blog/how-to-build-an-email-with-stripo-manual-a-to-z/).

## Специальные переменные

Для подстановки ссылок на отписку и веб-просмотр, в выпадающем списке с типом протокола для ссылки нужно выбрать "Другой" и добавить соответствующую переменную.

#### Ссылка для открытия письма в браузере (веб-версия письма)
```js
{{webview_url}}
```

#### Ссылка для отписки от рассылок
```js
{{unsubscribe_url}}
```