Mostrar un bloque dependiendo del tipo de contenido del nodo actual en Drupal

in

Para los que están en este mundillo de Drupal ya sabrán que es posible modificar la visibilidad de un bloque basándose en reglas de inclusión (mostrar un bloque solamente en ciertas páginas de la lista) o exclusión (mostrar el bloque en todas las páginas excepto las de la lista)

Ahora vamos a usar la opción avanzada que consiste en escribir una rutina PHP que retorne un valor booleano de manera que si el valor retornado el verdadero (TRUE) el bloque será visible y si el valor retornado el falso (FALSE) el bloque no será visible.

En este ejemplo vamos a mostrar un bloque basándonos en el tipo de contenido del nodo actual. que en este caso es "blog"

<?php
  // Only show if $match is true
  $match = false;

  if (arg(0) == 'blog') return true;

  // Which node types
  $types = array('blog' );

  // Match current node type with array of types
  if (arg(0) == 'node' && is_numeric(arg(1))) {
    $nid = arg(1);
    $node = node_load(array('nid' => $nid));
    $type = $node->type;
    $match |= in_array($type, $types);
  }

  return $match;
?>

Se puede conseguir un resultado similar usando url_alias.

Comentarios

¿esto se puede aplicar a taxonomia?¿como hacerlo?

En mi caso necesito que se muestre el bloque de pendiendo un término de taxonomía agregada a un nodo que sería Venta.... ¿Sería posible? Muchas gracias por tu gran trabajo. Saludos.

El código es un poco diferente

En ese caso necesitas obtener el listado de terminos del nodo actual usando la función $terms = taxonomy_node_get_terms($node); Puedes mirar este enlace, http://drupal.org/node/64135#comment-2073266

en este avatar reencarna una

en este avatar reencarna una tradición de la antigua espiritualidad de los celtas, mira por dónde, para uso exclusivo de nuestra muy posmoderna vida consumista.mortgage calculator

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.