logo

Paleta de lienzo: 隆Hazlo colorido!馃帹

Palette - Constructor visual de p谩ginas, no se requiere t铆tulo en dise帽o.

Demo en vivo Descargar Palette

Scroll

6.4. Twig es el nuevo motor de plantillas para Drupal.

04/05/2025, by Ivan

Si abres el archivo de plantilla page.html.twig del tema Stable:

/core/themes/stable/templates/layout/page.html.twig

Ver谩s que difiere del template page.tpl.php de Drupal 7, primero por la extensi贸n y segundo por la abundancia de llaves dobles {}. Todo esto se debe a que Drupal usa el motor de plantillas Twig.

<main role="main">
    <a id="main-content" tabindex="-1"></a>{# el enlace est谩 en html.html.twig #}

    <div class="layout-content">
      {{ page.content }}
    </div>{# /.layout-content #}

    {% if page.sidebar_first %}
      <aside class="layout-sidebar-first" role="complementary">
        {{ page.sidebar_first }}
      </aside>
    {% endif %}

    {% if page.sidebar_second %}
      <aside class="layout-sidebar-second" role="complementary">
        {{ page.sidebar_second }}
      </aside>
    {% endif %}

  </main>

No se puede usar PHP en la plantilla Twig, as铆 que solo debes usar herramientas de Twig, las cuales son suficientes para maquetar el sitio.

Veamos c贸mo trabajar con Twig.

Variables en Twig

Si en PHP usamos el s铆mbolo de d贸lar $ para variables, en Twig usamos llaves dobles:

{{ variable }}

As铆 escribimos variables: dos llaves de apertura, espacio, nombre de la variable, espacio, dos llaves de cierre. No necesitas usar la funci贸n print ni ning煤n c贸digo PHP, solo las llaves dobles.

Tambi茅n es c贸modo trabajar con objetos y arrays de variables. En lugar de saber si $node es un objeto o $form un array, usamos punto para acceder a propiedades:

{{ node.id }}

Podemos declarar variables f谩cilmente:

{% set foo = "bar" %}

Hola, esta es mi variable: {{ foo }}

Nota la sintaxis: para definir usamos llaves con %, para mostrar usamos llaves dobles.

Tambi茅n podemos definir arrays:

{%
  set foo_array = [
    'foo',
    'bar',
  ]
%}

Filtros en Twig

Aunque Twig no es un lenguaje de programaci贸n completo, tiene herramientas para trabajar con datos. La m谩s importante son los filtros, que se indican con el s铆mbolo pipe |

{{ variable | filtro }}

Ejemplos:

{{ node.title | length }} - imprime la longitud de una cadena

{{ node.title | upper }} - muestra la cadena en may煤sculas

{{ node.title | lower }} - muestra la cadena en min煤sculas

Consulta la lista completa de filtros en la documentaci贸n oficial: http://twig.sensiolabs.org/doc/filters/index.html

Filtros Twig en Drupal

Drupal a帽ade filtros adicionales como:

  • t
  • passthrough
  • placeholder
  • drupal_escape
  • safe_json
  • without
  • clean_class
  • clean_id

Traducci贸n de l铆neas en Twig

Para traducir texto, usa la etiqueta {% trans %}:

{% trans %} Hola mundo {% endtrans %}

Tambi茅n puedes insertar variables en la traducci贸n:

{% trans %} Hola {{ name }} {% endtrans %}

O aplicar filtros antes de mostrar:

{% set name = name | capitalize %}

{% trans %}
  Hola {{ name }}!
{% endtrans %}

Comentarios en Twig

{# Comentario aqu铆 #}

Condicionales If

Puedes verificar si una variable existe:

{% if site_slogan %}
  <div class="site-slogan">{{ site_slogan }}</div>
{% endif %}

Bucle for en Twig

Para recorrer un array, usamos for:

{% for item in items %}
  {{ item.content }}
{% endfor %}

Tambi茅n puedes hacer un for sobre un rango:

{% for i in range(0, 3) %}
  {{ i }},
{% endfor %}
Variable Descripci贸n
items.indexN煤mero del elemento actual empezando desde 1
items.index0N煤mero del elemento actual empezando desde 0
items.revindexN煤mero del elemento desde el final, empezando desde 1
items.revindex0N煤mero del elemento desde el final, empezando desde 0
items.firstTRUE si es el primer elemento
items.lastTRUE si es el 煤ltimo elemento
items.lengthLongitud del array
items.parentContexto padre

Uso de for else

<ul>
{% for user in users %}
  <li>{{ user.username|e }}</li>
{% else %}
  <li><em>no se encontr贸 ning煤n usuario</em></li>
{% endfor %}
</ul>