Posted by jmolivas on November 22, 2011 at 6:54pm
En ocaciones al estilizar un tema en Drupal nos encontramos que el diseño establece un esquema o código de colores basados en un término de taxonomía (taxonomy term). Es decir que los colores de títulos o ligas dependerán de la taxonomía asignada al contenido que estemos visualizando.
La manera que a continuación muestro es la forma en que he logrado esta funcionalidad, agregando el valor del taxonomy term id como un nombre de clase para poder estilizarlo utilizandolo un selector de CSS.
- Versión de Drupal 7.x
- Tema utilizado Omega 3.x.
- El campo en donde la taxonomía se encuentra referenciada al nodo se llama "field_section".
- El archivo creado donde se escribió el codigo de PHP se encuentra en la siguiente ruta.
sites/all/themes/NOMBRE_DEL_TEMA/preprocess/preprocess-html.inc - El código de PHP generado es el siguiente.
<?php
function NOMBRE_DEL_TEMA_alpha_preprocess_html(&$variables) {
if ( isset($variables) ) {
if(arg(0)=='node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ( isset( $node->field_section['und'][0]['tid'] ) )
$taxonomy_term = $node->field_section['und'][0]['tid'];
if ( isset( $node->field_section['es'][0]['tid'] ) )
$taxonomy_term = $node->field_section['es'][0]['tid'];
if ( isset($taxonomy_term) )
$variables['attributes_array']['class'][] = drupal_html_class('taxonomy-term-' . $taxonomy_term);
}
}
}
?> - Este es el código de HTML generado.
<body class="html not-front logged-in page-node page-node- page-node-15 node-type-article taxonomy-term-12"> - Muestro a continuación la manera de referenciar el titulo o elemento h1 de la página por medio de un selecetor de CSS.
body.taxonomy-term-12 div.region-content h1 { }
Para ver enlace e entrada de blog
http://jmolivas.com/agregar-taxonomy-term-id-como-clase-en-el-elemento-b...

Comments
no hay necesidad de hacer un
no hay necesidad de hacer un node_load dentro del preprocess_html
if($node = menu_get_object()) {//resto del codigo
}
no es buena práctica poner el código de lenguaje hardcoded, debe venir ya sea del nodo ($node->language) o del usuario...
cada usuario puede tener preferencias de lenguaje diferentes