# Templating

# Traductions

# Fichiers de traduction

Dans vos fichiers de templates, utilisez l'anglais pour vos strings. Pour les traduire, vous devez les copiez dans le fichier site.php, dans le dossier nommé selon le code de la langue désirée.

Exemple pour la langue française : translations > fr > site.php

<?php

return [
  /* Menu */
  "To do" => "À faire",
  "Our addresses" => "Nos adresses",
  "Discover" => "Découvrir",
  /* Info block */
  "Contact" => "Coordonnées",
  "Location" => "Lieu",
  "Informations" => "Informations",
];

TIP

Vous pouvez même traduire vos formats de date ! Par exemple : "F j, Y" => "j F Y"

# Utilisation dans votre template

Dans votre template, ajoutez le filtre |t à votre string

{{ 'All day'|t }}

Documentation officielle > traductions(opens new window)

# Alias personnalisés

Overdog inclut des alias personnalisés que vous pouvez utiliser dans vos templates.

  • @siteUrl @siteUrl est à utiliser lorsque que vous souhaitez référer au URL de base de votre site INCLUANT LA LANGUE. Exemple : monsite.com/en sera le siteUrl de base en langue anglaise.

  • @rootUrl @rootUrl est à utiliser lorsque que vous souhaitez référer au URL de base de votre site SANS LA LANGUE.

WARNING

Ne jamais utiliser l'alias @web dans nos templates pour éviter une cache poisoning vulnerability.

# Exemple minimaliste de lien vers la page d'accueil

<a href="{{ alias('@siteUrl') }}">Texte du lien</a>

# Exemple de lien vers une page et traduction des strings

<a href="{{ alias('@siteUrl') ~ 'events'|t }}" target="_self" rel="noreferrer">{{ 'All events'|t  }}</a>

Note : il s'agit d'un exemple si le slug events ne change pas avec utilisation d'un alias. Vous pourriez autrement utiliser quelque chose comme :

<a href="{{ craft.entries.id(14).one().getUrl()|default() }}">{{ 'All events'|t  }}</a>

Documentation officielle > alias(opens new window)

# Cache

Pour des éléments dans la navigation ou dans le bas de page qui sont utilisés partout, sur tout le site, utilisez : {% cache globally %}

Pour ce qui est unique à une page, utilisez : {% cache %}

WARNING

Toujours toujours mettre une key à la balise {% cache %}.

# Exemple avec une key

{% cache using key "page-header" %}

# Vous pouvez ajouter une durée et des paramètres, exemple :

{% cache globally for 1 year using key "navigation" %}

Documentation officielle > cache(opens new window)

# SEO

# Groupe de fields par défaut

Overdog crée deux fields par défaut lors de l'installation.

seoDescription et seoOgImage

Ces champs se trouvent déjà un global pour les valeurs par défaut et de la page d'accueil du site. Par contre, vous devez les ajouter sur les types d'entrées que vous désirez.

TIP

Dans le <head> de votre template base > layout.twig, le contenu sera automatiquement utilisé si ces champs sont remplis pour une entrée.

# Bloc JSON-LD

Au bas de votre fichier base > layout.twig, vous retrouvez le bloc suivant :

{# SCHEMA.ORG INFO #}
{% block schema %}{% endblock %}

# Exemple pour une entrée Recipe

Si pour un type d'entrée donné, vous souhaitez ajouter de l'information Schema / JSON-LD, simplement ajouter le bloc suivant et modifier les valeurs selon les champs désirés.

Ce bloc doit se retrouver dans le template de cette entrée (dans le haut par exemple).

{% block schema %}
  <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "{{ entry.title }}", {# twig directement dans le js #}
      "author": {
        "@type": "Person",
        "name": "{{ entry.schemaAuthor }}" {# twig directement dans le js #}
      },
      "datePublished": "2018-03-10",
      "description": "{{ entry.schemaDescription }}", {# twig directement dans le js #}
      "prepTime": "PT20M"
    }
  </script>
{% endblock %}

Documentation provenant de Google(opens new window)

# Bonnes pratiques

# Ignore missing dans les include

Il est considéré une bonne pratique d'ajouter ignore missing lorsqu'on utilise un include. Cela permet à Twig de l'ignorer si le template est manquant plutôt que d'afficher une erreur.

{{ include('_shared/textblock', ignore_missing = true) }}
{# exemple avec une variable qui est passée #}
{{ include('_shared/textblock', {iconName: 'date'}, ignore_missing = true) }}
Date de modification: 7/12/2021, 1:31:00 AM