Refereren naar een veld in een ander inhoudstype

Moeilijkheidsgraad

Als je met een referentie werkt naar inhoud, gebruiker, taxonomie,... dan kan je uit een keuzelijst of tekstvak kiezen waartoe je naar refereert. Je ziet dan de naam (titel) van het veld.

Wat als je bij je keuze ook een afbeelding, tekst, .. van het veld in het andere inhoudstype wilt zien? In views is dit makkelijk. Via een relatie kan je aan de velden in het andere inhoudstype. 

In onderstaand voorbeeld zie je bij het inhoudstype 'Schilderijen' de Mona Lisa. Ik heb de schilder gekozen uit het inhoudstype 'Schilders'. Je ziet dat er naast de titel ook een afbeelding van Leonardo verschijnt. Hoe doe je dit?

 

Drupal8_002772.png

1) Referentieveld instellen via een weergavemodus met de velden die je wenst.

Je kunt een reference veld in de weergave op 'rendered entity' zetten. Je kunt dan kiezen uit een weergavemodus. Hier kies ik voor de teaser weergave. In Drupal 8 kan je makkelijk weergavemodi bijmaken. Als je de teaser reeds gebruikt voor iets anders, dan maak je maar een nieuwe modus.

Drupal8_002778.png

Je kiest de velden in het ander inhoudstype die je wenst te tonen

Drupal8_002779.png

Het afbeeldingsveld is meervoudig. er kunnen meerdere afbeeldingen opgeladen worden. ls je nu in je weergave maar één afbeelding wilt, dan kan je gebruik maken van de field limiter module. Op het ogenblik van het schrijven van dit artikel, is dit een sandbox project. Maar het werkt! (https://www.drupal.org/node/1234624)

 

Drupal8_002781.png

Je zet er hoeveel afbeeldingen je wilt tonen op node niveau. Ik weet het je kunt dit omzeilen door de Colorbox te gebruiken naar 1 afbeelding om te zetten of gebruik  te maken van een soort slideshow.


Drupal8_002780.png

2) Werken met Tokens filter

Met de token module kan je verwijzen naar gelijk welke entiteit. Ook velden. Je kunt zelfs verwijzen naar een referentieveld en daar dan ook nog de velden kiezen die je wilt in het ander inhoudstype. Knap.

Drupal8_002773.png

Met de Token filter module kan je nu in gelijk welk tekstveld deze tokens invullen. Activeer eerst de filter in je tekst formaat (zie module bespreking)

Drupal8_002782.png

Je kunt in de HTML gerust verwijzen naar CSS klassen, maar je kunt niet het aantal afbeeldingen beperken. Uiteindelijk is dit op te lossen door bvb apart een afbeeldingsveld met één afbeelding te definiëren.

Drupal8_002777.png

3) Een viewfield met contextuele filter

Je maakt een view met de inhoud van het inhoudstype dat de referentie bevat. Bvb Schilderijen refereert naar een schilder. Hier moet je schilderijen nemen.

Drupal8_002783.png

Je maakt een relatie naar het ander inhoudstype. En je haalt de velden die je wilt zien binnen. Je verbergt de velden van je hoofd inhoudstype. Tenslotte zet je een contextuele filter. Want zonder dit zie je natuurlijk alle schilders
Drupal8_002784.png

De contextuele filter.
Drupal8_002785.png

Nu neem je een viewfield (module = viewfield) en je maakt een veld van de view. Je geeft het NID mee als argument, aangezien we dit ook gedaan hebben in de view met de contextuele filter. Het is perfect mogelijk om het aantal afbeeldingen te beperken in de view bij de meervoudige instellingen.


Drupal8_002786.png

4) Een EVA veld met een argument

Tenslotte kan je met dezelfde view ook een EVA veld gebruiken. Het voordeel is dat dit veld niet bij de input voorkomt en dus cleaner is qua gebruik. Je kiest de 'Bundle' waar je deze view wilt zien. Het argument is weer de ID.

Drupal8_002787.png