web-dev-qa-db-fra.com

Vérifier l'URL pour la chaîne dans un fichier Twig

Je suis nouveau sur twig and drupal 8 et j'ai du mal à accéder aux titres de page. Je veux appliquer une classe à un titre de page sur certaines pages, qui partagent tous un sous-répertoire dans le chemin URL. Je travaille avec un fichier page-title.html.twig et je veux faire quelque chose comme ceci:

{{ title_prefix }}
{% if title %}
  {% if <url contains "/services/"> %}
    <h1 {{ title_attributes.addClass('services-title') }}>{{ title }}</h1>
  {% else %}
    <h1 {{ title_attributes.addClass('page-title') }}>{{ title }}</h1>
  {% endif %}
{% endif %}
{{ title_suffix }}

Je suppose que c'est possible, je n'arrive pas à comprendre comment vérifier l'URL pour la chaîne souhaitée.

5
Anonymous Man

Utilisez l'opérateur "in":

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

Plus d'informations: http://twig.sensiolabs.org/doc/templates.html#containment-operator

Si vous ne l'avez pas déjà fait, placez cette fonction de prétraitement dans le fichier mytheme.theme dans votre répertoire de thèmes:

function mytheme_preprocess_page_title(&$variables) {
  $variables['url'] = $_SERVER['REQUEST_URI'];
  $variables['#cache']['contexts'][] = 'url.path';
}

Edit: En déplaçant le code de la page à l'intérieur d'un bloc, nous devons fournir un contexte de cache.

8
4k4