Visibilidad de bloques por tipo de contenido
Si quieres que un bloque de Drupal 6 se muestre sólo en los nodos de un tipo de contenido concreto (puede ser uno creado por ti), por ejemplo 'page'
Tienes que seleccionar la opción "Mostrar si el siguiente código PHP devuelve el valor TRUE (modo PHP, sólo para expertos)." en "Opciones de visibilidad específicas por página" y añadir el siguiente código en la caja de texto:
<?php $match = FALSE; $args = arg();
if ($args[0] == 'node' && is_numeric($args[1]) && count($args) == 2) {
$node = node_load($args[1]);
if ($node->type == 'pto') { $match = TRUE; } }
return $match;
?>
En Drupal 7 no necesitas hacer esto ya que tienes esa opción incluida en el core.
NOTA: cambiar 'pto' por el nombre del tipo de contenido cuyos nodos mostrarán el bloque.





Comentarios
Muy buen trick Andy!
Como siempre con esos pequeños toques nos das grandes ideas!
Mi versión del código:
<?php
$args = arg(); // Array de argumentos, como array(arg(1), arg(2), arg(3)) etc...
$type = 'pto'; // Tipo de nodo, el que queremos comprobar.
/**
* Esto en el 90% de los casos es node/[nid] pero no funciona si por ejemplo
* es a la hora de editar o acepta parámetros el nodo (node/[nid]/edit)
* Drupal casi siempre va tirar de una URL tipo node/[nid]
* count($args) == 2 lo limita siempre a no recibir ningún tipo de parámetro.
*/
if ($args[0] == 'node' && is_numeric($args[1]) && count($args) == 2) {
$node = node_load($args[1]);
return ($node->type == $type); // Retornamos directamente reduciendo código
}
return false; // Por omisión devolvemos false
?>
Pingback
[...] leer más Etiquetado con: Andymalaga.com, Drupal, PHP [...]
Enviar un comentario nuevo