Agregar taxonomy term id como clase en el elemento body al visualizar nodo completo

Utilizando Omega & hook preprocess_html

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 = menu_get_object();
    			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 selector de CSS.

    body.taxonomy-term-12 div.region-content h1 { }



Imagen utilizada en esta entrada:

http://www.jorissnoek.nl/drupal/extra-aandacht-bij-generieke-drupal-hooks

Tags: