Twig Snippets

Une petite sélection de code TWIG qui peuvent s'avérer pratique.

Date

Ce code ajoute un jour à votre date.

{{ yourDate|date_modify("+1 day")|date("m/d/Y") }}

URL

Récupérer l'url d'un champ "lien"

{{ node.field_my_link.0.url }}

Vérifier si une chaîne est présente dans l'url

{% if '/services/' in url %}

Template

Inclure un template d'un module dans un autre template de module

D'après la documentation TWIG :

{% include 'modules/Y/templates/twig-of-module-Y.html.twig' %}

Avec Drupal, il est préférable d'indiquer le chemin avec un twig namespace :

{% include '@mon_theme/include/exemple.html.twig' %}

Media

Récupérer l'url d'une image ou d'une vidéo d'un champ media

Fonction preprocess

function mytheme_preprocess_node(&$variables) {
 
  /** @var \Drupal\node\NodeInterface $node */
  $node = $variables['node'];
 
  $image_field = $node->get('field_background_image');
  if (!$image_field->isEmpty()) {
    $uri = $image_field->entity->get('field_media_image')->entity->uri->value;
    $variables['background_image_url'] = file_create_url($uri);
  }
}

Dans le template du node

{{ background_image_url }}

obtenir l'URL d'un champ d'image à partir d'un node référencé dans un template Twig

<img src="{{ file_url(node.field_REFERENCE.entity.field_IMAGE.entity.uri.value) }}" alt="{{ node.field_REFERENCE.entity.field_IMAGE.entity.alt.value }}" />

Remplacez field_REFERENCE' par le nom système de votre champ de référence de node et remplacez 'field_IMAGE' par le nom système de votre champ d'image.

Comment vérifier une valeur booléenne dans les templates twig ?

{% if node.field_bool.value %}
    <p>true</p>
{% endif %}

{% if user.field_bool_affichage_mail.value %}
    <p>true</p>
{% endif %}

Afficher la date de mise à jour du contenu

{{ node.changed.value|date("d/m/Y H:i") }}

 

Ajouter un commentaire

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.