theme template suggestions for create bootstrap drupal drupal-7 drupal-theming

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.