TWIG-шаблоны для создания гиперперсонализированных сообщений в MautiBox
Общее описание языка Twig
Twig — это гибкий, быстрый и безопасный шаблонный язык для PHP. Он позволяет отделить логику приложения от представления, облегчая разработку и поддержку кода. Twig компилирует шаблоны в оптимизированный PHP-код, что обеспечивает высокую производительность.
Содержание
-
Общее описание языка Twig
- Основные особенности Twig
- Основной синтаксис
-
Примеры для использования в MautiBox
- Простой пример
- Компании контакта и пользовательское поле компании
- Теги контакта
- Сегменты контакта
- Получение содержимого из внешнего URL и обработка как массива
- Сегментация контента на основе аффинити контакта
- Всегда с заглавной буквы
- Получение данных RSS
- Дата истечения срока
- Приветствие на основе времени суток
- Запасное значение (Fallback)
- Магия с датами
- Случайный выбор
- Выбор случайного элемента из массива.
Основные особенности Twig
- Простота и читаемость: Синтаксис интуитивно понятен и лаконичен, что делает шаблоны легкими для чтения и поддержки.
- Безопасность: Twig автоматически экранирует выходные данные, предотвращая XSS-атаки и обеспечивая безопасность приложений.
- Расширяемость: Возможность создания собственных функций, фильтров и тегов для удовлетворения специфических потребностей приложения.
- Наследование шаблонов: Позволяет определять базовые шаблоны и расширять их, упрощая повторное использование кода и поддержание консистентности дизайна.
- Международная поддержка: Встроенные функции для интернационализации и локализации приложений.
Основной синтаксис
Twig использует три основных типа тегов:
- Вывод переменных:
{{ variable }}
- Управляющие структуры:
{% ... %}
- Комментарии:
{# ... #}
Пример: Вывод переменных
<p>Привет, {{ name }}!</p>
Пример: Условные операторы
{% if user.isLoggedIn %}
<p>Добро пожаловать, {{ user.username }}!</p>
{% else %}
<p>Пожалуйста, войдите в систему.</p>
{% endif %}
Пример: Циклы
<ul>
{% for item in items %}
<li>{{ item.name }}: {{ item.value }}</li>
{% endfor %}
</ul>
Примеры для использования в MautiBox
Простой пример
Простой пример отображения контента на основе значения поля контакта, в данном случае, в зависимости от аффинити вашего контакта.
{% if contact.affinity == 'private' %}
<p>Это приватный контент</p>
{% endif %}
{% if contact.affinity == 'b2b' %}
<p>Это контент для B2B</p>
{% endif %}
{% if contact.affinity == 'agency' %}
<p>Это контент для агентств</p>
{% endif %}
Компании контакта и пользовательское поле компании
{% if contact.companies is defined and contact.companies is not empty %}
{% for company in contact.companies %}
{% if company.is_primary == '1' %}
<p>Основная компания: {{ company.companyname }}</p>
<p>Пользовательское поле: {{ company.companycustomfield }}</p>
{% break %}
{% endif %}
{% endfor %}
{% else %}
<p>Нет связанных компаний.</p>
{% endif %}
Отображение компаний, связанных с контактом, и использование пользовательского поля компании.
Теги контакта
{% for tag in contact.tags %}
{{ tag }}
{% endfor %}
Вывод тегов, привязанных к контакту.
Сегменты контакта
{% for segment in contact.segments %}
{{ segment.name }}
{% endfor %}
Вывод сегментов, к которым принадлежит контакт.
Получение содержимого из внешнего URL и обработка как массива
{% set content = 'https://your.url' | get_content_from_url | json_decode %}
{{ content.title }}
{{ content.data }}
{{ content.link }}
Получение контента с внешнего URL-адреса, его декодирование и обработка как массива.
Пример использования для содержимого брошенной корзины
Сегментация контента на основе аффинити контакта
{% if contact.affinity == 'private' %}
<p>Это приватный контент</p>
{% endif %}
{% if contact.affinity == 'b2b' %}
<p>Это контент для B2B</p>
{% endif %}
{% if contact.affinity == 'agency' %}
<p>Это контент для агентств</p>
{% endif %}
Пример сегментации контента в зависимости от аффинити контакта.
Всегда с заглавной буквы
{{ contact.firstname|capitalize }}
Всегда выводить имя с заглавной буквы.
Получение данных RSS
{% set feed= 'https://your.rss.feed.url' | rss %}
<h1>{{ feed.channel.title }}</h1>
<p><a href="{{ feed.channel.link }}">{{ feed.channel.link }}</a></p>
<p>Опубликовано: {{ feed.channel.pubDate }}</p>
<p>{{ feed.channel.description }}</p>
<h2>Статьи</h2>
<ul>
{% for item in feed.channel.item %}
<li>
<h3><a href="{{ item.link }}">{{ item.title }}</a></h3>
<p>Опубликовано: {{ item.pubDate }}</p>
<div>{{ item.description|raw }}</div>
</li>
{% endfor %}
</ul>
Получение данных из RSS-ленты и их отображение.
Дата истечения срока
{% set dateExpiry = contact.date_last_order |date('d-m-Y') %}
{% set today = "now"|date('d-m-Y') %}
{% set difference = date(today).diff(date(dateExpiry)) %}
{% set leftDays = difference.days %}
{% if dateExpiry == today %}
1 день
{% else %}
{{ leftDays }} дней осталось
{% endif %}
Вычисление количества дней до истечения срока действия на основе даты последнего заказа контакта.
Приветствие на основе времени суток
{% set currentTime = "now"|date("H") %}
{% if currentTime >= 5 and currentTime < 12 %}
<p>Доброе утро!</p>
{% elseif currentTime >= 12 and currentTime < 18 %}
<p>Добрый день!</p>
{% else %}
<p>Добрый вечер!</p>
{% endif %}
Отображение приветствия в зависимости от текущего времени.
Запасное значение (Fallback)
<p>Пол: {{ contact.gender|default('неизвестно') }}</p>
Использование значения по умолчанию, если поле не заполнено.
Магия с датами
Завтра
{{ "now"|date_modify('+1 day')|date("m/d/Y") }}
Сегодня
{{ "now"|date("m/d/Y") }}
Сегодня счастливый день {{ "now"|date("l") }}
Работа с датами и их форматирование.
Случайный выбор
{{ random(['apple', 'orange', 'citrus']) }}
Выбор случайного элемента из массива.
Правильное приветствие на основе пола (пример на немецком языке)
{% if contact.title %}
{% if contact.title == "Frau" %}
<p>Sehr geehrte {{ contact.title }} {{ contact.lastname }}</p>
{% endif %}
{% if contact.title == "Herr" %}
<p>Sehr geehrter {{ contact.title }} {{ contact.lastname }}</p>
{% endif %}
{% endif %}
Приветствие контакта на основе его титула и пола (используя немецкие обращения).
Персонализация контента с помощью JSON-декодирования
{% set cart = contact.json_field | json_decode %}
{% for item in cart %}
{{ item.name | raw }}
{% endfor %}
Установка JSON в поле контакта и его обработка при создании контента. Полезно для персонализации контента, такого как корзина или заказы контакта.
Поддержка токенов электронной почты в API
{{ tokens['{mycustomtoken}'] }}
Для отправки электронного письма через API необходимо передать токены и включить контент в письмо. Это можно сделать с помощью функций декодирования JSON.