Pour exposer la réponse de Nikhil Mohan, vous pouvez implémenter à l' template_preprocess_html()
intérieur du fichier template.php de votre thème. Lisez la documentation sur Remplacer la sortie de Themable pour comprendre les bases de ce qui se passe ici.
Dans cette fonction, vous avez accès à la variable $vars['classes_array']
, qui contient une liste de classes qui seront appliquées à la <body>
balise HTML sur la page.
Malheureusement, les informations sur l'emplacement de la page actuelle dans le menu ne sont pas immédiatement disponibles. Vous pouvez utiliser menu_get_item()
et ensuite menu_get_ancestors()
obtenir ces informations, mais cela représente beaucoup de puissance de traitement pour quelque chose que nous pouvons probablement obtenir avec une approche simpiler.
En supposant que vous utilisez le module pathauto pour créer automatiquement des chemins sémantiques pour vos pages de contenu en fonction du chemin du menu (c'est-à-dire que votre page Melbourne Theme Parks aurait le chemin 'melbourne / theme_parks'), vous pouvez utiliser le chemin de la page pour créer les classes que vous sont en train de chercher:
function THEMENAME_preprocess_html(&$vars) {
$path = drupal_get_path_alias();
$aliases = explode('/', $path);
foreach($aliases as $alias) {
$vars['classes_array'][] = drupal_clean_css_identifier($alias);
}
}
C'est ça. Drupal va maintenant regarder l'alias de chemin de la page actuelle et ajouter une classe à la <body>
balise pour chaque morceau de l'alias de chemin.
static
cache à ce stade, donc presque pas de surcharge.$vars['attributes_array']['class'][] = drupal_clean_css_identifier($alias);
Vous pouvez utiliser les
template_preprocess_html
variables de prétraitement pour html.tpl.phpVoir aussi html.tpl.php
la source
Voici le module pour ajouter des classes sur la balise body en fonction du rôle ou des pages.
Classe de corps commun
la source
Création du module Drupal Body Classes pour vous aider. N'hésitez pas à créer des problèmes pour ajouter plus de points d'intégration de classe de corps.
la source