Views filtri contestuali, relazioni – argomenti e connessioni
In questa lezione presterò particolare attenzione al lavoro con gli argomenti in Views. Gli argomenti sono le parti dell’URL, ad esempio:
node/15 Il primo argomento sarà node, il secondo 15. taxonomy/term/10 Il primo argomento taxonomy, il secondo term, il terzo 10. user/67 Il primo argomento user, il secondo 67
Penso che questi esempi siano chiari e non richiedano ulteriori spiegazioni.
Gli argomenti possono essere ottenuti utilizzando la funzione arg()
<?php print arg(0) . '<br />'; print arg(1); ?>
Se l’URL è stato node/15
, verranno visualizzati:
node 15
La numerazione degli argomenti nella funzione arg
parte da 0. Ora vediamo quali soluzioni pronte offre il modulo Views.
Visualizzare i nodi di un utente
Supponiamo di trovarci sulla pagina user/1
e di voler visualizzare un blocco con i nodi dell’utente con uid = 1
. Per farlo, utilizzeremo un argomento preso dall’URL.
Aggiungiamo una nuova vista. Creiamo un blocco e nei campi selezioniamo il titolo del nodo, filtriamo solo i nodi pubblicati e ordiniamo per data di pubblicazione.
Titolo
Titolo: user_nodes
Formato
Formato: Unformatted list | Impostazioni
Mostra: Fields | Impostazioni
Campi
Contenuto: Titolo
Criteri di filtro
Contenuto: Pubblicato (Sì)
Criteri di ordinamento
Contenuto: Data di pubblicazione (discendente)
Pager
Usa pager: Visualizza un numero specificato di elementi | 15 elementi
Link “More”: No
Ora clicchiamo su “Aggiungi” nei Contextual filters (argomenti, filtri contestuali). Selezioniamo:
Contenuto: Author uid
Quindi scegliamo:
When the filter value is NOT available Provide default value User ID from URL Provide default value
Salviamo la vista. Inseriamo il blocco nella regione desiderata e, ad esempio, accediamo alla pagina user/1
: nel blocco creato verranno visualizzati tutti i nodi dell’utente con uid = 1
.
Visualizzare nodi correlati
Ora complichiamo un po’ l’esempio. Supponiamo di voler collegare a un nodo più altri nodi. Per farlo si utilizzano i campi node reference. Per utilizzare questi campi di relazione, ci servirà il modulo References e il suo sottomodulo node references.
http://drupal.org/project/references
I campi di relazione in Drupal 7 permettono di collegare a un nodo diversi utenti e nodi contemporaneamente. Ciò è realizzato attraverso i campi di tipo node reference. Poiché in Drupal 7 è possibile aggiungere campi a qualsiasi entità, ora è possibile collegare tra loro qualsiasi tipo di entità.
Nel mio sito ci sono 4 notizie e voglio collegare alla seconda notizia la prima e la terza, supponendo che trattino un argomento simile.
Andiamo nella gestione dei campi del tipo di contenuto “Notizia” e aggiungiamo un campo node reference con funzione di completamento automatico. Chiamo il campo “Notizie simili”. Poi scegliamo quali tipi di contenuto possono essere collegati al nodo e il numero di nodi selezionabili. Ho scelto solo “Notizie”. Successivamente salviamo il campo. Ora modifichiamo la seconda notizia: qui vedremo il campo node reference “Notizie simili”.
Naturalmente, le notizie appariranno già come elenco di elementi correlati a questo nodo. Ma il nostro obiettivo è configurare una view.
Creiamo una nuova view, ancora in formato blocco.
Titolo:
similar_news
Formato:
Unformatted list | Impostazioni
Mostra: Fields | Impostazioni
Campi
Contenuto: Titolo
Criteri di filtro
Contenuto: Pubblicato (Sì)
Contenuto: Tipo (= Notizia)
Criteri di ordinamento
Contenuto: Data di pubblicazione (discendente)
Pager
Usa pager: Visualizza un numero specificato di elementi | 5 elementi
Aggiungiamo un argomento (contextual filter) Contenuto: Nid. Ma questa volta selezioniamo:
When the filter value is NOT available Provide default value Content ID from URL
Inoltre, in Relationships (relazioni, connessioni) aggiungiamo una nuova relazione: Contenuto: Notizie simili (field_similar) (se il vostro campo ha un altro nome, scegliete quello corrispondente). Notate anche che esiste lo stesso campo con l’indicazione “reverse”: questo significa che verrà utilizzata una relazione inversa, cioè, se ci troviamo sulla pagina della Notizia 3, verrà mostrata nel blocco la Notizia 2 (anche se nella Notizia 2 abbiamo selezionato la relazione con Notizia 1 e Notizia 3).
Come risultato verranno selezionati anche questi campi:
Contextual filters
Contenuto: Nid
Relationships
Contenuto: Notizie simili
Ora, nel nostro campo “Contenuto”, dobbiamo impostare la relazione: invece di “Do not use a relationship”, scegliete il nome della nostra relazione.
Campi
(field_similar) Contenuto: Titolo
Salviamo la view e inseriamo il blocco nella regione desiderata.
Ora, nella pagina della Notizia 2, nel blocco separato verranno visualizzate le notizie simili: Notizia 1 e Notizia 3.