Vistas con argumentos en Drupal: Mostrar el contenido creado por cada usuario

Este post es parte de una serie de explicaciones de cómo funcionan las vistas con argumentos, anteriormente he hecho una introducción a las vistas y otra a CCK. Antes de comenzar, lo mejor es que quede claro lo qué es un argumento para las vistas de Drupal y su diferencia con los filtros. Un argumento es un parámetro que se pasa a una vista y que se utiliza dentro de ésta para generar contenido dinámico que cambia según el argumento. La diferencia con los filtros, es que el filtro es una forma de diferenciar contenido de forma estática por cada vista, es decir, que si filtramos por el tipo de contenido story, la vista siempre nos devolverá tipos de contenido story, sin embargo, si utilizamos el tipo de contenido como un argumento para una vista, si la url es nombre-de-la-vista/story nos mostrará tipos de contenido story, pero si accedemos a la url nombre-de-la-vista/page, nos mostrará tipos de contenido page. Como primer ejemplo, voy a mostrar cómo se crea una vista que recibe como argumento el id del usuario y muestra el contenido que éste ha creado, de forma que, si accedemos a otro id, nos muestre el contenido de ese otro usuario.

paso a paso

  • Accedemos a nuestro sitio como administradores
  • Vamos a Administrar » Views » Add
  • Ponemos el nombre de la vista, por ejemplo, contenido-del-usuario y elegimos el tipo Página
  • Ponemos la URL de la vista y elegimos los parámetros que nos convengan, tipo de vista, el título, el número de nodos por página, etc
  • Seleccionamos los campos a mostrar, por ejemplo, el título del nodo, el contenido y su taxonomía
  • En la sección de Argumentos, seleccionamos User: UID is Author, si queremos usar el número que identifica al usuario, podemos en lugar del UID, utilizar el nombre del usuario, seleccionando el argumento User: username is author
  • Elegimos los filtros, por ejemplo Node: Published (recomendado) y Node:Type Story
  • Seleccionamos el criterio de orden, Node:Created Time descendente para mostrar los más nuevos más arriba.
  • Guardamos y ¡listo!, si accedemos a nuestra web con la url contenido-del-usuario/1 veremos el contenido creado por el admin, y si accedemos a contenido-del-usuario/85 veremos el contenido creado por el usuario 85

Podemos restringir el acceso a nuestras vistas en la zona de Información Básica, seleccionando los roles que queremos que tengan acceso a la vista que hemos creado.

mejor en video

Comentarios

Buenas Pedro.
Muy buen video tutorial, y muy buena explicación.

Ahora las dudas, no veo que se indique que versión del modulo de vistas es :)

Por otro lado me recuerda a la ayuda que me prestaste hace tiempo para mostrar en un bloque las últimas entradas del nodo del autor que se esta viendo. (a ver si lo paso a un documento para compartirlo).

¿Una última pregunta, como has hecho el vídeo tutorial con los subtítulos? Es lo que queremos montar en la Academia.

Un saludo

Oskar

Gracias Oskar, el video lo he hecho con una versión de Camtasia que regalaban en una revista hace tiempo creo recordar... OpenSource tienes una versión bastante buena que es el <a href="http://camstudio.es/">CamStudio </a>y creo que permite también el uso de Labels

Tengo previsto hacer bastantes mas de vistas con argumentos para mostrar como se puede alterar ligeramente el php desde el interfaz de vistas para poder realizar pequeñas adaptaciones.

Me ha encantado el tutorial porque es muy claro y me ha ayudado a entender un poco más las vistas. Sin embargo todavía no consigo solucionar mi problema. 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?

Muchas gracias por el tutorial

Hola cdp,

He hecho <a href="http://cambrico.net/drupal/mas-vistas-con-argumentos-en-drupal-jugando-c... post</a> que espero resuelva alguna de tus dudas con las vistas con argumentos.

[...] 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 [...]

¡¡Muchísimas gracias Pedro!! He seguido el tutorial nuevo, que por cierto está magnificamente explicado, y he solucionado mi problema a la primera. :)
Gracias de nuevo y te animo a que sigas haciendo estos tutoriales sobre Drupal, ya que son tremendamente útiles para los que somos principiantes.

Hola Pedro:
Gracias por el tutorial, ojala pudieras montar éste mismo pero ahora con drupal 6 y con views2

Saludos
Rosa

Gracias Rosa, intentaré adaptar los tutoriales a Views2 con drupal 6 :)

¿Qué ventajas e inconvenientes tiene el uso de VOCABULARIO frente al de CAMPOS (cuando definimos un nuevo contenido) de cara al uso de VIEWS de forma que el mismo usuario pueda filtrar las vistas según sus intereses?

Blau, el vocabulario te permite categorizar y poner tags comunes a los nodos de un tipo de contenido determinado, y los campos le dan información "libre" y diferenciada a los nodos, como una descripción, un título, otros nodos relacionados...
De forma que, a la hora de filtrar en una vista, es más fácil filtrar por vocabulario que por campos, ya que el vocabulario tendrá términos comunes a varios nodos, sin embargo los campos tendrán información diferenciada.

Gracias por tu rápida respuesta!
Pero, si quieres hacer un directorio de productos, empresas, etc, puedes hacer CAMPOS o VOCABULARIO para tipo de producto, país de origen, etc; incluso ambos permiten que el usuario seleccione palabras dentro de una lista pre-diseñada o Widget cuando se crea un nodo nuevo. Cuando quiero que los visitantes filtren las vistas por país de origen, tipo de producto, etc., tengo más problemas con los Widgets de VOCABULARIO que con los de CAMPOS. Para todo esto empecé usando sólo VOCABULARIO y no sé si es lo adecuado. Perdona por el rollo...

Conceptualmente cosas como el país o la marca de un producto deberían ser campos del CCK y no taxonomías (vocabularios), lo que no quiere decir que ahora lo cambies todo si te está funcionando ;)
A la hora de exponer los filtros para las vistas, yo creo que te será más facil con campos que con vocabularios, ya que cck y viewa están muy bien integrados

Gracias, tus respuestas me han sido de mucha ayuda. Creo que falta información para los principiantes en Drupal y este tipo de sitios Web son muy útiles.

Hola, sobre vistas.
Tengo un Nice menu. pero se me pierde cuando veo N tipos de Contenido que he creado.
En bloque; Nice menu; opcion: " Opciones de visibilidad específicas de la página" he ingresaso las vistas perfecto hasta ahi, pero estas vistas llevan tipos de contenidos N, cuando los visualizo pierdo el nice menu.

Podrias recomendarme una solucion

=)

Lo siento Sandra, pero nunca he utilizado el modulo Nice menu, quizas deberías abrir un issue pidiendole soporte a la persona que mantiene el modulo en drupal.org

Un saludo

Gracias por el dato

[...] a adaptar el ejemplo que utilicé para mostrar el funcionamiento básico de vistas con argumentos para drupal 5, una vista que filtra el contenido según el usuario que lo ha [...]

Buenas... tengo un problema y me esta partiendo la cabeza jaja!
Tengo una seccion (miseccion) en donde tiene subsecciones (sub1,sub2,sub3...)... el problema es que la seccion "miseccion" debe poder mostrar las ultimas entradas de cada subseccion...
¿Como configuro la vista para esto? Desde ya muchas gracias y espero que puedan ayudarme!

Muchas gracias por el tutorial, es lo que estaba buscando desde hace tiempo y jamás lo habría logrado sin esta ayuda.

Tengo una pregunta, a ver si podéis ayudarme, ¿cómo puedo incluir de forma automática un enlace en el perfil del usuario a la dirección creada en este tutorial donde se muestra su contenido? Muchas gracias por todo

Pues bien, el tutorial esta buenisimo, en mi caso trabajo con drupal6 y el Views 2, pero tengo el siguiente problema, a mi vista le paso como argumento el nombre de un usuario y la misma me muestra el perfil del usuario que le paso por argumento al final de la URL ademas de los contenidos creados por el mismo, sin embargo tengo una fuga de seguridad puesto que cuando en la URL le cambio el nombre del usuario y le coloco otro me muestra estos datos del otro, mi objetivo es que solamente pueda ver el argumento de el mismo.

Hola pedro,
En primer lugar, gracias por el video.
Mi duda es como se pueden asignar esos argumentos como título de la vista.
Por ejemplo para una vista que trabaja con dos argumentos que el título sea "arg(1) en arg(2)" (si la vista recibe los dos argumentos) y "arg(1)" (si la vista recibe un único argumento)

Muchas gracias.

Enhorabuena por el blog, por los contenidos y por su usabilidad. Una cuestión relativa a las views. Hace poco en un Drupal que tengo montado en casa y me iba fenomenal tenia una vista en la que al entrar en una pagina determinada veia esa pagina a partir de esa vista, incluyendo un theme propio. Ahora con views 6 creo una vista, listo los tipos de pagina, algun filtro más pero no soy capaz de que en cada pagina aparezcan como vista (con los campos seleccionados), sino que me aparece todos las paginas que corresponden con ese tipo de contenido por el que filtro. Se trata de que en vez de usar el fichero node.tpl.php cada pagina se vea con una vista predeterminada, incluyendo el theme propio.
Cuál puede ser el fallo? Qué argumento podria utilizar?
No sé si me explico bien...Gracias de todos modos

Hola, Pedro,

Llevo leyendo tus varios posts sobre views con argumentos pero no he conseguido solucionar mi problema. te cuento un poco por si sabes orientarme en lo que hago mal:

Tengo dos tipos de contenidos, productos y fabricantes. Ambos comparten un mismo campo de cck llamado "fabricante". Lo que quiero hacer es que al ver un nodo de tipo "producto" se vea un bloque con una pequeña información sobre el fabricante (esto es el tipo de contenido "fabricante"). Lo que he hecho ha sido una view de tipo bloque que filtre los nodos publicados de tipo fabricante y he añadido también un argumento que es el campo cck "fabricantes". Lamentablemente lo hago mal, porque el bloque siempre sale vacío.

¿qué hago mal?

(he buscado en tu blog pero no he visto nada de argumentos con campos cck)

Saludos y gracias!

Carlos

Muchas gracias por la explicación, no sólo me sirvió para crear vistas dinámicas sino para entender realmente cómo funcionan las vistas

Hola. muy bueno el tutorial. ahora yo lo que quiero hacer es mostrar en cada nodo quien lo creo con su informacion de contacto.
Puede lograrlo con una views pero no se como ponerlo que lo muestre por ejemplo debajo del nodo creado por ese usuario. Como tendria que ahcer!?¿

Hola Pedro.

Gracias y felicidades por tu trabajo.

Estoy trabajando mi primer sitio con Drupal y estoy pagando aún la novatada. Trato de hacer un libro con alguna estructura. Esto ya lo tengo (es algo absolutamente trivial, pero me costó llegar a saberlo). El problema que tengo es que al añadir artículos (stories) al libro, no logro que se desplieguen, bueno, de hecho no sé cómo hacerlo.
A partir de este artículo estoy suponiendo que lo que me falta es crear al menos un tipo de vista y, de alguna manera, asociar esta con los libros. ¿Es así? En ese caso, tal vez deba crear una vista por libro (revista), o ¿con un solo tipo de vista tendré? ¿Debiera asociar la vista con los libros o con los artículos?
Gracias por atender a mis, seguramente, muy básicas preguntas, pero estoy al borde de la locura y nada más no hallo cómo ver mis artículos.

hola yo intento hacer una tipo base de datos utilizando las vistas.
lo que deseo hacer es que me muestre los cambios que se han generado en la pagina por todos los usuarios, ya sea si se agrego, actualizo o elimino algun nodo y bvioamente que se especifique cual fue el nodo, mostrando una ruta y el titulo del nodo.
pero tengo un problema, modifico algo con el usuario "prueba" y me aparece que el cambio lo hiso el usuario "admin". que puedo hacer?
yo se que en drupal viene todo eso en informe de entradas recientes.. pero lo necesitaba como un modulo para que los demas usuarios puedan entrar a verlo.

Hola buenas noches, espero que se encuentre bien, el siguiente asunto es para solicitarle un gran favor, no tengo mucho tiempo de estar trabajando con este genial y excelente CMS y Framework, pero resulta que en el proyecto que propongo realizar me gustaria mostrar graficas estadisticas (de barras, de tortas) que indiquen el estado de datos almacenados por los usuarios, por ejemplo: la edad en intervalos de años, el lugar de residencia, el sexo, entre otros datos. con el objetivo de que sea mas facil de entender la información almacenada.

le agradeceria su pronta ayuda, ya que no encuentro informacion que me guie en el desarrollo de graficas en drupal.

Gracias y feliz noche.

Saludos,
He creado un tipo de Contenido llamado "Ceremonia" que son todos paginas planas y las he puesto en un view, pero luego he creado un contenido Galery que tiene como resultado el Nid (nodo numer) 149, en el filter del view he puesto que:
Node: Type = Ceremonia y Node: Nid = 149 y esto no me une los content de typo Ceremonia con el content node/149. Sin embargo si quito uno u otro, si lo muestra.
Mi pregunta es: debo activar algo mas?, necesito algun modulo adicional? por que en otros blogs he visto que el modulo VIEW OR MODULE era necesario para agregar el OR a los filtros. He visto el AND que le pone por defecto el SQL al crear los dos filtros juntos pero aun asi no funciona.
Por favor apoyame con esta duda. La misma que me puedes enviar al correo descrito.
Muchas gracias
Carlos

Hola.
Muy buana tu ayuda me ha despejado muchas dudas, pero sigo con lagunos problemillas.
estoy tratando de mostrar los nodos creados por los usuarios, pero cuando genero la vista se muestran todos los nodos y lo que quiero es que se muestre solo para usuarios logueados, ademas estoy usando drupal 7 y no encuentro el user Id autor Name solo userID.

agradecere mucho tu apoyo

asociar una vista a un nodo?

Hola Pedro, ante todo muchas gracias por tus explicaciones y tu atención, te comento a ver si tu pudieras ayudarme ya que no encuentro nada sobre el tema, o no se buscarlo correctamente...que también podría ser.

Estoy montando un market con ubercart market, he creado una clase de producto nueva añadiendo campos cck y un vocabulario cuyos términos son las diferentes categorías de productos, los cuales referencio al dar de alta el producto para enlazarlos con el vocabulario. También he enlazado el vocabulario desde un menu en el primary link para que se pueda ir directamente a los productos de una categoría. He creado una vista que me muestra los productos de una categoria como a mi me gusta, cuando hago clic en la categoría del menú. Pero lo que no soy capaz de hacer es asociar una vista a los nodos (cuando voy a visualizar el contenido completo de un único nodo) y necesito cambiar su presentación ya que son muchos campos y salen todos listados uno debajo de otro, casi a modo texto. Estoy probando con View 2, Panels y Ctools en drupal 6.25, es urgente y ya no se ni donde mirar ni a quien preguntar. Si pudieras decirme algo te lo agradecería.

Un saludo y muchas gracias de antemano.

Pero me sale el argumento con menu tab en todos los nodos como hago opara k me salga solo dentro de la vista que quiero

Hola Pedro,
Estoy intentando hacer algo que asumo que es simple pero no encuentro la manera de hacerlo... la idea es :

1) Cada usuario tiene un campo agregado que es Nro_Cliente
2) El Content_Type que cree, "Muestras" tiene también este campo

Estos dos puntos anteriores ya están hechos
Lo que pretendo es armar ahora es una vista que solo me muestre aquellos registros cuyo campo Nro_CLiente sea igual al campo Nro_CLiente del User Logueado.

Por favor me podrias tirar una pista que me destrabe?

Muchas Gracias
Marcelo

Añadir nuevo comentario