Referentievelden en contextuele filters

Moeilijkheidsgraad

Een referentieveld in een inhoudstype toont voor een bepaalde node de links naar de andere nodes of taxonomietermen. Als je bij een film de acteurs/actrices invult kom je zo op de inhoud van deze personen terecht.

Het omgekeerde is moeilijker. Wat als je dan de films wilt tonen waar de acteur in meespeelt?Je zou in het inhoudstype een referentieveld kunnen plaatsen naar films, maar dan heb je dubbele input. Dit is niet de Drupal way ...

Laat ons eerst het inhoudstype van de films bekijken. Je ziet duidelijk een referentieveld naar de acteurs.

Screen001812.png

Het is een node referentie.


Screen001813.png

Bij de film 'Cleopatra' zie je dan bvb dit:

Screen001821.png

Elizabeth Taylor heeft in veel films meegespeeld natuurlijk. Haar naam komt zo veelvuldig voor in de nodes van de films. Om de omgekeerde beweging te maken.. toon alle films van een bepaalde acteur moeten we een eerst view maken. Het is een oplijsting van alle films et de bijhorende acteurs.

Screen001815.png

Screen001822.png

We krijgen wel alle films die in onze Drupal zitten... Hoe gaan we nu bij het tonen van een node (acteur/actrice) enkel de films tonen waar ze in meegespeeld hebben? We gaan gebruik maken van een contextuele filter. Dit is een filter die in de URL voorkomt. Als je naar Elizabeth Taylor kijkt, dan kijk eigenlijk naar node 4 (in ons geval natuurlijk). Ik kan in de view duidelijk maken dat hij enkel de films moet tonen waar de acteur node 4 heeft. Bij uitgebreid zet de je instelling zo:


Screen001816.png
Screen001817.png

Niet schrikken als je dan geen enkele film meer ziet.. Om te testen kan je nu de node ID intype in het voorbeeldvenster. In ons geval (4) komen we bij Elizabeth Taylor terecht.

Screen001819.png

 

OK. Dit werkt al. Hoe krijgen we dit nu gekoppeld aan ons inhoudstype? Er zijn verschillende manieren. Ik kies voor het simpele EVA systeem ( zie EVA module). Hier zeg je aan welk inhoudstype je dit wilt koppelen.


Screen001818.png

Er verschijnt dan bij de Weergave van het inhoudstype een veld bij.

Screen001820.png

En ja hoor. Bij het bekijken van alle info over Elizabeth komt nu ook de gefilterde view met haar films tevoorschijn.

Screen001814.png

Contextuele filters worden veel gebruikt in Drupal. Ze zijn een onmisbare tool om relatievelden maar één keer te moeten invullen.