it-swarm-es.com

¿Cómo puedo formar una consulta de vistas que recupera todos los nodos que son referenciados por un nodo en otro tipo de contenido?

Tengo un tipo de artista de contenido. También tengo un tipo de contenido de liberación. El tipo de contenido del artista tiene un campo de referencia de nodos que apunta al tipo de contenido de liberación. Este campo de referencia de nodos permite a un artista tener 1 o más lanzamientos.

Creé una vista que muestra los campos del tipo de contenido del artista como una página. Llamemos a esta vista "Página del artista". La página del artista tiene un solo argumento de Node: Title y un camino de artist/%. Esto funciona muy bien.

Me gustaría agregar otra vista para un bloque de lanzamientos pertenecientes a un artista en particular. Espero mostrar este bloque en la barra lateral para la página del artista.

¿Cómo puedo formar una consulta de vistas que recupera todas las versiones que son referenciadas por un artista?

(Estoy haciendo mi primer no trivial Drupal 6 Site y aprecio su paciencia. Estoy feliz de RTFM, ¡pero por favor dime dónde ir!)

2
markplindsay

Ok, así que la forma de hacer esto es con argumentos y relaciones.

Normalmente, usar la opción "proporcionar argumento predeterminado" funcionaría, pero como no está utilizando el nodo "artista" real, no puede obtener la ID de nodo de la URL.

También solo un FYI, que pasa el título para un argumento de vistas es una mala idea porque entonces la consulta está haciendo una búsqueda basada en texto en lugar de un valor numérico, como el ID de nodo, que es mejor en el rendimiento.

Pero de todos modos, la solución a su problema es agregar el mismo argumento a su vista de bloques como lo hizo a su vista de página "Artista". Este debe ser el argumento del título del nodo. Ahora agregue una relación a su vista. La relación que desea agregar es el contenido: [Nombre del campo de referencia del nodo] Relación.

Ahora puede agregar lo que siempre complete en su opinión que desea incluir desde el tipo de contenido "Lanzamiento", pero ahora verá que obtendrá una opción de relación en la opción de campo. Cuando desee mostrar los campos del tipo de contenido "Suelte", asegúrese de seleccionar la relación [Referencia de nodos].

También tenemos que hacer una cosa más. Que está obteniendo el argumento adecuado para ser recogido por su vista de bloqueo. Esto es un poco más complicado principalmente por lo que menciono anteriormente, que es que está pasando el título del nodo como un argumento. Por lo tanto, ahora puede editar su nodo: argumento del título y debe ver la "opción para llevar si el argumento no está presente", seleccione "Proporcionar argumento predeterminado" y seleccione la opción del código PHP. En ahí quieres pegar este pedazo de código.

return arg(1);

Ahora guarde su vista y coloque ese bloque en la página y visite la página Artista /% y ahora debería ver qué campos que desea usar. Este código PHP está diciendo que su vista de bloques recoge el argumento del artista /% de la URL.

Un par de cosas para cuidar:

  • el código PHP en las vistas es malo, acabo de mencionar que aquí como una solución rápida para su problema.

  • Cuando se utiliza la relación, asegúrese de seleccionar la opción de relación solo cuando desea mostrar un campo del elemento "relacionado". En otras obras, si desea mostrar el título del título de nodo de selección de nodos relacionados y asegúrese de que se seleccione la relación. Si desea mostrar el título del nodo que se está pasando en el argumento, seleccione el título del nodo, simplemente no seleccione ninguna relación.

Espero que esto sea útil, es un post largo, pero las relaciones pueden ser confusas.

Espero que esto ayude.

2
ericduran

Agregue un argumento para la referencia del nodo y elija "Proporcionar argumento predeterminado", configurando eso a "ID de nodo de URL".

0
tim.plunkett