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.
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.