34 votes

Ajout d'une classe de "corps"

Comment puis-je modifier ou de pré-traiter l' <body> balise à ajouter le corps de la classe? Je ne veux pas créer un ensemble html.tpl.php juste pour ajouter une classe.

55voto

Clive Points 28701

Dans votre thème template.php le fichier utilisez l' preprocess_html crochet:

function mytheme_preprocess_html(&$vars) {
  $vars['classes_array'][] = 'new-class';
}

N'oubliez pas d'effacer les caches une fois que vous avez mis en œuvre le crochet ou Drupal va pas le prendre.

9voto

Pierre Buyle Points 3107

La documentation de l'html.tpl.php modèle des documents de l' $classes variables, comme la Chaîne de classes qui peuvent être utilisés pour le style contextuellement par CSS.. Si vous regardez le code pour le modèle, cette variable est utilisée dans la classe, les attributs du produit de l'élément de corps:

<body class="<?php print $classes; ?>" <?php print $attributes;?>>

L' $classes variables est en fait déjà définis par template_process() pour n'importe quel fichier de modèle et de construire à partir du contenu de l' $classes_array variable.

Donc, pour ajouter une classe au corps de votre page, vous devez ajouter cette classe à l' $classes_array de la valeur de votre thème (ou module)'s la mise en œuvre de l' hook_preprocess_html():

function THEME_preprocess_html(&$variables) {
  $variables['classes_array'][] = 'new-class';
}

Puisque c'est la base défini le modèle et les processus de la fonction, tout bien se comporter thème devrait ré-utiliser les mêmes variables.

5voto

Hannes Kirsman Points 11

J'ai eu à utiliser différentes de la matrice de touches dans le même crochet pour le faire fonctionner:

function THEME_preprocess_html(&$vars) {
  $vars['attributes_array']['class'][] = 'foo2';
}

2voto

batigolix Points 297

Le Contexte module vous permet d'ajouter une classe à la balise body ainsi.

Cela peut être utile si vous avez besoin de la classe pour être ajouté sous certaines conditions.

Vous trouverez cette option en vertu de la réaction Thème "HTML" :

Theme HTML option in Context UI

1voto

jaskho Points 82

La réponse semble dépendre du contexte. Voici ce que j'ai trouvé par essai-et-erreur:

Si votre hook_preprocess_html() est dans un module, utilisez $vars['classes_array'][].

Si c'est dans un thème, utilisez $vars['attributes_array']['class'][].

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X