O Twig é um mecanismo de templates amplamente utilizado para criar interfaces dinâmicas em PHP. Ele separa a lógica de apresentação, tornando o desenvolvimento mais organizado e eficiente.
No Editor de Código da Yampi, o Twig é usado para criar templates reutilizáveis que conectam dados do backend ao front-end, utilizando variáveis, métodos e objetos predefinidos. Arquivos Twig possuem a extensão .twig
e permitem trabalhar com HTML, CSS e JavaScript de forma integrada.
Exemplos de Uso
Estruturas Dinâmicas em HTML
Crie menus dinâmicos que consomem dados do backend:
<ul class="menu-footer">
{% for item in menus[settings.footer_menu] %}
<li class="menu-footer-item">
<a href="{{ item.url }}" class="menu-footer-link"
{% if item.url | is_external %} target="_blank" {% endif %}>
{{ item.name }}
</a>
</li>
{% endfor %}
</ul>
Condicionais
Controle a exibição de conteúdo com base em condições:
{% if settings.show_banner %}
<div class="banner">
<img src="{{ settings.banner_image }}" alt="Banner">
</div>
{% endif %}
Para condições complexas:
{% if condition1 and (condition2 or condition3) %}
<p>Condição atendida!</p>
{% endif %}
Armazene condições em variáveis para simplificar:
{% set is_eligible = condition1 and condition2 %}
{% if is_eligible %}
<p>Você está apto para essa oferta!</p>
{% endif %}
Iterações
Itere sobre listas para exibir conteúdo dinâmico, como produtos:
{% for product in products %}
<div class="product-item">
<h3>{{ product.data.name }}</h3>
<p>Preço: {{ product.data.price | money }}</p>
</div>
{% endfor %}
Use o objeto loop
para informações adicionais:
{% for item in navigation %}
{% if loop.first %}
<p>Primeiro item: {{ item.name }}</p>
{% endif %}
{% if loop.last %}
<p>Último item: {{ item.name }}</p>
{% endif %}
<p>Item {{ loop.index }}: {{ item.name }}</p>
{% endfor %}
CSS Dinâmico
Gere estilos dinâmicos com variáveis e condições:
{% if settings.theme_color == 'dark' %}
.button-primary {
background-color: #000;
color: #fff;
}
{% else %}
.button-primary {
background-color: #fff;
color: #000;
}
{% endif %}
JavaScript Dinâmico
Incorpore dados dinâmicos em scripts:
<script>
if (!variant.available) {
button.val('{{ "Indisponível" | translate }}');
button.addClass('out-of-stock');
button.attr('disabled', 'disabled');
}
</script>
Recursos Avançados
Filtros
Filtros úteis no Twig incluem:
money
: Formata valores como moeda.
translate
: Aplica traduções.
is_external
: Verifica se uma URL é externa.
Exemplo:
<p>{{ "Preço" | translate }}: {{ product.data.price | money }}</p>
Herança de Templates
Reutilize estruturas com herança de templates:
{# base.twig #}
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}Título Padrão{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
{# page.twig #}
{% extends 'base.twig' %}
{% block title %}Página Específica{% endblock %}
{% block content %}
<p>Conteúdo desta página</p>
{% endblock %}
Macros
Crie componentes reutilizáveis com macros:
{# macro.twig #}
{% macro button(label, link) %}
<a href="{{ link }}" class="btn">{{ label }}</a>
{% endmacro %}
{# usando o macro #}
{% import 'macro.twig' as ui %}
{{ ui.button('Clique aqui', '/link') }}
O Twig simplifica o desenvolvimento de templates com suporte para lógica condicional, iterações, herança e muito mais. Para mais detalhes, consulte a documentação oficial do Twig.