Hola, me gustaría que alguien me dijera cómo se puede hacer en Drupal lo siguiente: mostrar un bloque dependiendo del tipo de contenido.
Me explico, estoy haciendo una página con dos tipos de contenido (vm1 y vm2) y a cada tipo le he adjudicado una categoría propia. Me gustaría poder hacer que se viera únicamente el bloque con los tags pertenecientes al contenido que se está mostrando y no el bloque con los tags pertenecientes al otro tipo de contenido. Había pensado en hacer esto con php, algo en plan:
if (tipo_del_nodo)="vm1" then mostrar_bloque1
if (tipo_del_nodo)="vm2" then mostrar_bloque2
pero no sé qué funciones debo utilizar, ¿alguien me podría ayudar?
Muchas gracias!!
Muchas gracias por tu
Muchas gracias por tu explicación, los ejemplos aclaran mucho. Esta es una solución mucho más fácil que la que yo estaba pensando. :)
cdp son dos cosas
cdp son dos cosas diferentes.
Mostrarlo en las páginas en que sea por un lado, y mostrarlo cuando te da cierto por otro lado.
Para mostrarlo en urls concretas tienes que escribir esas urls, o en su defecto utilizar la configuración del pathauto para "imprimir" en la url de los tipos de contenido una constante que te permita identificar la url
Por ejemplo meter el nombre del tipo de contenido, u otro nombre.
Me has pasado la url: http://ip/proyecto/content/nombre-del-nodo
veamos, en el pathauto podemos cambiar el "content" por un "videomediateca" y decirle que me muestre el bloque en todas las urls donde aparece la constante videomediateca de la siguiente manera
/videomediateca/*Aunque parezca increíble esto es una url interna de drupal, que le esta dice que tiene que mostrar los bloques en todas las urls que son
http://ip/proyecto/videomediateca/*
El asterisco es un comodín que indica que coge todo lo que esa detrás, sin importar lo que sea. De esta forma mostramos el bloque en todas las urls que son del tipo de contenido videomediateca.
Si queremos mostrar las urls cuando me da true, se mostrará solo en el fullnode de aquellos nodos que sean video_mediateca.
No se si me he explicado bien
Un saludo
Oskar
gestión del conocimiento y de la información con software libre
Gracias harriak, con el
Gracias harriak, con el código que me has mandado ya me funciona una parte. Tenía un problema con el módulo pathauto, pero instalándolo de nuevo se ha solucionado.
Para arreglar mi problema del todo sólo necesitaría saber qué hay que hacer para poner en php todo el código que me has dicho y además otra línea que equivaldría a seleccionar la opción "muestra sólo en las páginas que se listan" en lugar de la opción de "Se muestra si el código PHP devuelve CIERTO (modo PHP, sólo para expertos)." y poner category/clasificación-de-vídeos-ii/*
<?php
$match = false;
$types = array ('video_mediateca' => 1);
if (arg (0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load(array ('nid' => $nid));
$type =$node->type;
if (isset($types[$type])) {
$match = TRUE;
}
}
Return $match;
If($url="category/clasificación-de-vídeos-ii/*) //No sé qué habría que poner aquí.
return true;
}
?>
¿Hay alguna manera de hacer esto?
Muchas gracias
creo que lo de taxonomy no me sirve
Gracias por la respuesta, pero todavía no he solucionado el problema porque creo que no me he explicado bien.
Cuando hago click sobre el primary link me aparece algo así como http://ip/proyecto/p1 y no me sale nada de taxonomy. Al pulsar sobre un nodo, por ejemplo del bloque que contiene nodos del tipo vm1, me sale algo así como http://ip/proyecto/content/nombre-del-nodo y lo mismo si pulso sobre uno del tipo vm2, así que creo que no los puedo distinguir por la taxonomía.
Voy a explicar con un poco más de detalle lo que he hecho por si sirve de ayuda. Tengo creados dos paneles p1 y p2. El primero muestra en una página tres bloques, todos con contenido del tipo de contenido vm1 y el segundo muestra en otra página otros tres bloques, todos con contenido del tipo de contenido vm2. Por otra parte he creado dos bloques para mostrar nubes de tags en el margen derecho. El primer bloque muestra únicamente tags de un vocabulario asociado al tipo de contenido vm1 y el segundo bloque muestra únicamente tags de un vocabulario asociado al tipo de contenido vm2.
¿Hay alguna manera de decirle a un bloque que se muestre según el tipo de contenido de los nodos que tiene otro bloque?
Muchas gracias por vuestra colaboración
El código que necesitas
El código que necesitas sacado de drupal 5 themes. Digamos que quieres mostrar este bloque solo para el tipo de código historia.
<?php$match = false;
$types = array ('story' => 1);
if (arg (0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load(array ('nid' => $nid));
type =$node->type;
if (isset($types[$types])) {
$match = TRUE;
}}
Return $match;
?>
Un saludo
oskar
gestión del conocimiento y de la información con software libre
no me funciona el código
He probado con el código y no me funciona. También he probado cambiando la línea 7 (type =$node->type;) para que quede así ($type =$node->type;) y la línea 8 (if (isset($types[$types])) {) para que quede así (if (isset($types[$type])) {) y me sigue sin funcionar.
Cuando en el código pone arg(0) y arg(1), a qué argumentos se refiere, ¿a los de la url? es que mi url es del tipo http://ip/proyecto/content/nombre-del-video y entonces puede que la función is_numeric(arg(1)) no funcione...
Gracias
no necesitas el
no necesitas el pathauto.
con la función arg, recuperas nodo e id, en una consulta a la tabla correspondiente si el id de la consulta es igual al tipo de contenido y el nid es es el nid del nodo, te devuelve true y se muestra, sino te devuelve false y no se muestra.
Fíjate que en la configuración de los bloques, es marcar la opción Se muestra si el código PHP devuelve CIERTO (modo PHP, sólo para expertos), y ejecutar el código.
Oskar
gestión del conocimiento y de la información con software libre
algo simple seria
algo simple seria asi:
<?phpif (condition) {
return TRUE; // block will be shown
}
return FALSE;
?>
yo utilizaria el pathauto: para cada tipo de contenido pondria en la url
en node path setting: works/[title-raw] en este caso todos los tipos de contenidos que sean mis trabajos y a continuacion el titulo del nodo
despues en el codigo anterior utilizaria el arg para saber de que tipo de contenido se trata
Saludos
el problema es que sea por
el problema es que sea por tipo de contenido, en ese caso puede ser más complicado.
con la función arg deberías ser capaz de solucionarlo.
Oskar
gestión del conocimiento y de la información con software libre
¿Cómo se usaría el link a la categoría?
¿Cómo se usaría el link a la categoría?