Una de las grandes ventajas de las vistas con argumentos en Drupal es el juego que te permiten con las taxonomías, de forma bastante simple, podemos hacer que se nos muestre información relacionada con ciertas categorías, y complicándolo un poquito más, podemos realizar cosas como las que pregunta cdp en este comentario:
Quiero hacer una vista que al hacer click sobre un nodo me muestre todos los nodos que tengan los mismos tags que el nodo sobre el que se ha hecho click. He creado el vocabulario, pero por ahora no he conseguido crear una vista que me muestre los nodos comunes a los vídeos. ¿Solucionaría mi problema una vista con argumentos?
Es decir, en una vista de tipo bloque, mostrar todos los nodos que compartan tags con el que estamos visualizando. Esto también se puede hacer con las vistas con argumentos
Nota: Para estos ejemplos he creado varios nodos con ciudades, cada ciudad pertenece a un país y tiene un idioma, ambas características marcadas por la taxonomía.
ejemplo simple
En este ejemplo, se muestra cómo hacer una vista con argumentos para que muestre los nodos pertenecientes a la taxonomía que se le pasa por parámetro.
un poco más complejo
Complicándolo un poquito más, podemos hacer una vista de tipo bloque que, a partir del nodo actual, muestre todos aquellos con los que comparta taxonomía.
Modificar las vistas de esta forma requiere algunos conocimientos de PHP.
Utilizaremos este código como "Argument Handling Code", del que podés encontrar más información en el handbook de drupal
<?php
// Utilizamos arg(1) para recoger el parámetro 1 de la url, es decir, el nodo.
// Por ejemploen la url node/12, arg(0) sera "node" y arg(1) será 12.
$nid = arg(1);
//Utilizamos la función taxonomy_node_get_terms, que nos devuelve un array
// con todos los términos que tiene el nodo.
$terms = taxonomy_node_get_terms($nid);
$url = array();
// Recorremos el array de términos del nodo, capturando los ids
foreach($terms as $id=>$term) {
$url[] .= $id;
}
// Generamos una lista de ids separados por +, 1+2+3
$url = implode("+",$url);
// Finalmente le pasamos al primer argumento $args[0] la lista separada por +
$args[0] = $url;
// Y usamos un segundo argumento para excluir el propio nodo
$args[1] = $nid;
return $args;
?>
El error que se observa es porque antes de activar el bloque no he restringido en qué páginas se muestra, es decir, solamente en las que haya nodos (node/*).
En la página de configuración de bloques no hay nodos, así que se produce un error en la consulta, al forzar que se muestre solamente en node/*, ya no se produce el error.
Si usas internacionalización, puede que necesites restringir por */node/* para el tema de los idiomas
Muchas gracias por tu explicación! Ha sido de gran ayuda :) Tienes un blog muy interesante y didáctico.
¿Cómo se puede hacer esto mismo en drupal 6 con views2 ?
Muchas gracias
Todavía no he probado views2 (acaba de salir la version estable) pero intentaré hacer el mismo proceso para drupal6.
Hola! muy buen post! de casualidad podrias ayudarme a hacer justo eso para drupal 6? aparentemente el argument handling code ya no existe ahi ya que no se donde poner ese codigo...
Hola Bella
Sí existe el argument handling code en drupal 6, debes crear un nuevo argumento, luego en "Action to take if argument is not present" seleccionas la opción "Provide default argument" y en el select que se genera "PHP Code", está un poco mas escondido pero está.
De todas formas tengo pendiente adaptar este screencast a drupal 6 en cuanto pueda
Un saludo!
Hola! tengo el mismo problema que Bella... probe la solución que le diste pero existe un provide default argument para los dos argumentos que se deben poner en el video... taxonomy term id y node id (en drupal6 NID) entonces pongo el codigo q tienes en el post en el argumento NID pero no funciona... sigue mostrando todos los nodos sin hacer la relación por termino de taxonomia... si pongo el codigo q deberia ir en argument handling code en drupal5 en ambos argumentos en el phpcode de drupal6 entonces no muestra nada... me podrias ayudar y explicarme porfavor a ver q hago mal??? gracias de antemano por tomarte el tiempo de ayudar a los necesitados... jaja
Hola Edwin
Borro uno de los comentarios que has hecho, porque se ha duplicado, no se por qué.
Es muy probable que el código que hay en este post solo funcione en drupal 5, no lo he probado en drupal 6, pero en principio tendrias que poner el código (adaptado para que funcione en Drupal6) en el argument code del taxonomy term id, y activar la casilla "Allow multiple terms per argument", prueba a ver si así te funciona.
Saludos
Gracias pero verdaderamente soy un neofito en esto y no se como modificar el codigo para drupal 6...
Hola
tengo un problema con el modulo views.
lo que estoy haciendo es un directorio de usuarios,
un buscador. utilizo view y cck. todo bien hasta que empeze a poner mas de 12 terminos en la categoria "Area de trabajo".esta es unas de las opciones que le doy a los usuarios para la busqueda. cuando estoy creando la vista y pongo como filtro la categoria "Area de trabajo" solo aparecen los 12 primeros, y esos son los que se muestran a los usuarios.
ejemplo.
tengo usuarios de Administracion, Diseño.....ect.
si un usario quiere buscar los de diseño y ese termino es el 13 no se muestra en la opcion de busqueda.
trabajo con v5.12
saludos roal
Buenas tardes gracias por tu post... me podrias ayudar paso a paso a hacerlo en drupal6 por favor de una manera que funcione???? gracias...
Hola! podrias decirme como hacer esto mismo para drupal6 por favor???? es urgente!!! y veo que eres super experto en el tema!!!
Iveth, Alejandra, intentaré adaptar estas vistas para drupal 6 en cuanto pueda, he adaptado alguna de las que hice para drupal 5 ya aquí: http://cambrico.net/drupal/vistas-con-argumentos-en-drupal-6
Hola! quisiera saber si podrias actualizarlo para drupal 6 pq he estado intentando y nada... y es super urgente en la empresa!!! me sorprende como hay gente como tú que ayuda a las personas de una manera tan increible! esto es justo lo q andaba buscando... si pudieras actualizarlo seria estupendo... bueno... gracias de antemano!!!
Hola Peter, muchas gracias, intentaré actualizarlo lo antes posible, pero si realmente te urge en la empresa, te recuerdo que desde Neurotic podemos ofrecerte consultoría en Drupal para lo que necesites.
Solución encontrada en http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-cre... gracias de todas maneras!
Gracias por el aporte Andrea :)
Hola, escribo para comentar un problema con una vista en un Drupal 6.10.
En la previsualización de la vista al pasarle los argumentos me muestra correctamente el contenido, pero cuando utilizo la ruta /productos/quesos no tira de la vista y muestra directamente los nodos. En cambio con la ruta /productos me muestra todos tirando de la vista.
A ver si alguien puede ayudarme.
Hola kurtis, puede ser que no hayas configurado bien el argumento, cuando se trata de taxonomias puedes elegir entre el term id y el term name, ¿con el codigo de la categoria te funciona? es decir, productos/1 en lugar de productos/quesos
Exacto, con el productos/1 funciona pero con el productos/quesos no. Tienes algún código para validar el nombre de la taxonomía?
kurtis, es el ejemplo exacto del primer video de este mismo artículo, en lugar de elegir Taxonomy: Term ID, elige Taxonomy: Term Name en las opciones del argumento
Bueno, ya lo arreglé muchas gracias.
Otra cosa, tengo un problemilla para mostrar el teaser de un nodo en el page-front.tpl.php, es decir que me recupere la lista de nodos e ir mostrando el teaser que yo quiera en función del título o del nid.
Ya sé que no es lugar, pero es que estoy buscando y no encuentro un código que me funcione.
Enviar un comentario nuevo
nube de tags
qué se comenta
- Gracias, a nosotros también por RusitetA (4julio2009)
- Seguramente con por pedro (3julio2009)
- esto es lo que iba entre las por michelangelo (3julio2009)
- buenas!!! o no por michelangelo (3julio2009)
- Creo que se te ha ido la mano por pedro (2julio2009)
- Sería bueno que agregaras por makuaka (2julio2009)
- hi por makuaka (2julio2009)
desde twitter
de Poker
vienen de fuera
- desde Próxima Drupalada el 10 de Junio | Blog de Carlos Rincón (3junio2009)
- desde Nueva etapa en Neurotic | Jordi Bufí (1junio2009)
- desde Sant Jordi, día del libro en Cataluña, listado completo de a (22abril2009)
- desde Conclusiones de la segunda Drupalada | Blog de Carlos Rincón (2abril2009)
- desde Atenea tech - Blog &raquo; Blog Archive &raquo; Segu (1abril2009)





He observado que da un error al configurar el bloque, pero que aparentemente funciona muy bien. ¿Se sabe a qué puede ser debido el error?