template - theme suggestions drupal 7
Agregar una clase a "cuerpo" (7)
Apliqué esta técnica en un sitio que alguien más construyó. No funcionó al principio, pero luego profundizó y descubrió que la variable $ classes no se estaba produciendo en el archivo tpl. Entonces, si no funciona, verifique eso.
¿Cómo puedo modificar o preprocesar la etiqueta <body>
para agregar el cuerpo de la clase? No quiero crear un html.tpl.php completo solo para agregar una clase.
El módulo de Context permite agregar una clase a la etiqueta de cuerpo también.
Esto puede ser útil si necesita agregar la clase bajo ciertas condiciones.
Estas opciones aparecen en la reacción "Tema HTML":
En el archivo template.php
su tema use el preprocess_html
:
function mytheme_preprocess_html(&$vars) {
$vars[''classes_array''][] = ''new-class'';
}
Recuerde borrar los cachés una vez que haya implementado el gancho o Drupal no lo recogerá.
La respuesta parece depender del contexto. Esto es lo que he encontrado a través de prueba y error:
Si su hook_preprocess_html () está en un módulo , use $ vars [''classes_array''] [].
Si está en un tema , use $ vars [''attributes_array''] [''class''] [].
Tuve que usar diferentes teclas de matriz en el mismo gancho para que funcione:
function THEME_preprocess_html(&$vars) {
$vars[''attributes_array''][''class''][] = ''foo2'';
}
La documentación para la plantilla html.tpl.php documenta las variables de $classes
como String de clases que se pueden usar para estilo contextualmente a través de CSS. . Si observa el código de la plantilla, esta variable se usa en los atributos de clase del elemento del cuerpo producido:
<body class="<?php print $classes; ?>" <?php print $attributes;?>>
Las variables de $classes
ya están definidas por template_process()
para cualquier archivo de plantilla y compilación a partir del contenido de la variable $classes_array
.
Entonces, para agregar una clase al cuerpo de su página, debe agregar esta clase al valor de $classes_array
de la implementación de hook_preprocess_html()
de su tema (o módulo hook_preprocess_html()
:
function THEME_preprocess_html(&$variables) {
$variables[''classes_array''][] = ''new-class'';
}
Como esta es la función de proceso y plantilla definida por el núcleo , cualquier tema que se comporte correctamente debería reutilizar las mismas variables.
El módulo Common Body Class les permite a los usuarios agregar clases a cualquier página a través de la interfaz. La interfaz tiene opciones para seleccionar múltiples roles de usuario, así como las páginas donde se puede representar la clase.