Mostrar bloque por termino de taxonomia en Drupal

En esta oportunidad describo el proceso que se puede seguir para controlar la visibilidad de un bloque dependiendo de un termino específico de una taxonomía

Lo primero que necesitamos saber es el ID del término sobre el que se va a mostrar el bloque, de esta forma si un nodo tiene asociado el término identificado por el ID ($displayTermID) seleccionado, entonces se va a mostrar el bloque que estamos configurando.

Para conocer el ID del termino vamos a www.ejemplo.com/admin/content/taxonomy/list y elegimos el vocabulario sobre el que está creado el termino que vamos a utilizar,

Luego hacemos clic sobre Lista de terminos

Buscamos el termino deseado y hacemos clic sobre el 

En la URL de la página que se muesta vemos que el ID es el número que aparece al final del enlace. http://www.ejemplo.com/taxonomy/term/1 donde 1 es el ID. Si la URL no tiene la estructura taxonomy/term/# pueden ver el ID al hacer clic sobre editar de la lista de terminos.

el código lo deben pegar en la sección Page specific visibility settings con la opción de código PHP activada como muestra la imagen.

Por último en la edición del bloque agregamos el siguiente código cambiando adecuadamente la variable $displayTermID =1;

 

<?phpif ( arg(0) == 'node' and is_numeric(arg(1)) and arg(2) == FALSE ) {// Vocabulary term ID for which to display the block:$displayTermID =1;    // Get all taxonomy terms for current node:$currNodeTerms = taxonomy_node_get_terms(node_load(arg(1)));// If there are no terms, fail-fast:if (is_null($currNodeTerms) || 0 == count($currNodeTerms)) {    return FALSE;}// For each term of the current node, get all the ancestor terms:foreach($currNodeTerms as $term) {    $ancestors = taxonomy_get_parents_all($term->tid);        // Check for each ancestor term whether it is the term we are looking for.    // If it is, return TRUE immediately:    if (!is_null($ancestors) && 0 < count($ancestors)) {        foreach($ancestors as $ancestor) {            if ($displayTermID == $ancestor->tid) {                return TRUE;            }        }    }}}// If we didn't find our term of interest, return FALSE:return FALSE;?>

 

Comentarios

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
By submitting this form, you accept the Mollom privacy policy.