TWIG-шаблоны для создания гиперперсонализированных сообщений в MautiBox

Общее описание языка Twig

Twig — это гибкий, быстрый и безопасный шаблонный язык для PHP. Он позволяет отделить логику приложения от представления, облегчая разработку и поддержку кода. Twig компилирует шаблоны в оптимизированный PHP-код, что обеспечивает высокую производительность.

Основные особенности 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.

Next Post Previous Post