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

Events happening in the community are now at Drupal community events on www.drupal.org.
jmolivas's picture

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

sultancillo's picture

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

Spanish

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: