1
1. Entity Reference Entity Reference zal ook een onderdeel zijn van Drupal 8. Het is een module van het type veld. Het is een heel krachtige module die toelaat om referenties te maken tussen verschillende inhoudstypes/tabellen. Zo kan je linken maken tussen je verschillende groepen van gegevens.
Je kan Entity Reference aanvullen met nog wat andere modules waardoor je noig meer gebruiksgemak krijgt.
De module zorgt er voor dat er een nieuw veldtyoe bijkomt (referenties). Dit kan zijn naar een node, een taxonomieterm, etc. Zo kan je een verbinding instellen tussen de twee entities.
We gaan als voorbeeld een CD-beheerprogramma maken. Meestal gebruik je Entity Reference als je een “relationeel” model moet maken. Dit is een relationele database waar er tussen de verschillende tabellen referenties of relaties zijn. Voor die relaties zorgt Entity Reference.
Voor ons voorbeeld hebben we informatie nodig van artiesten, albums en nummers. Stel dat we de informatie van een album in één enkel inhoudstype moeten plaatsen. Wat als de arties dan een volgend album maakt. Ook krijg je dan veel overhead informatie. Daarom hebben we drie zaken nodig: albuminformatie, artiestinformatie en nummerinformatie.
2
We gebruiken Drupal 7 core en de Entity Reference module.
Maak 3 nieuwe inhoudstypes Artiest Naam (title field) Biografie (body field) Foto (image field) Dit veld maken we later: Albums (Entity Reference refererend naar het album inhoudstype)
Album Titel (title field) Album Artwork (image field) Jaar(text field) Dit veld maken we later: Nummers (Entity Reference refererend naar het Nummers inhoudstype)
Nummer Titel (title field) MP3 (file) Lengte (text) Schrijver (text)
3
Nadat je de verschillende inhoudstypes hebt aangemaakt installeer je de module entityreference.
Daarna maak je het extra veld aan Numer CD Dat veld heeft als type Entity Reference en als Widget Selectielijst.
Bij de veldinstellingen kies je het juiste inhoudstype!!!
4
Pas eventueel de sortering aan. Als je dan een nieuwe node van het type album aanmaakt
5
Zorg er dus voor dat je entity reference naar het juiste inhoudstype verwijst. Zorg er ook voor dat je een onbeperkt aantal nodes kan defeniëren.
Inhoud aanmaken doen we in deze volgorde. Invoegen van content.
6
Eerst maken we ale nummers van een album. Daarna maken we een album, en voegen daar de betreffende nummer in.. Als laatste maken we een artiest aan en koppelen we hier een of meerdere albums aan.
Deze procedure kunnen we herhalen voor elke artiest/album.
7
We zoeken nu een mooiere werkwijze. We gaan twee extra modules downloaden. Dit zijn references dialog en inline entity form. Deze gaan ervoor zorgen dat onze invoer heel wat eenvoudiger gaat verlopen. We willen vanuit de artiestennode automatisch albums en nummers creëren.
References dialog References dialog zorgt voor een formulier om nieuwe inhoud te creëren vanuit de node waarin je bezig bent. Hiermee kan je bijvoorbeeld vanop de artiesten-pagina een nieuwe album creëren, zonder eerst deze node te sluiten. Enable references dialog Verander het widgettype: Maak ervan Automatisch invullen. Er komen drie aanvinkvakjes die je alledrie moet aanvinken.
How to set up and use References Dialog 1. Create or edit a content type (admin/structure/types/manage/). 2. Create or edit a field of the type Entity Reference or Term Reference with autocomplete widget. 3. Select one or more of the following checkboxes: * Edit dialog. * Add dialog. * Search dialog. 4. (Optional) Change the display preferences for the field.
8
Voeg nu nieuwe inhoud toe, en kijk naar het verschil.
9
Inline entity form Inline entity form plaatst een formulier binnen een node. Zo kan je bijvoorbeeld binnen een node van de albums een nieuwe nummer invoegen. Enable inline entity form Pas het widgettype aan naar Inline entity – multiple values
Bedoeling is nu dat we een nieuw album maken, en binnen dat album dan nieuwe nummers kunnen aanmaken. Er zijn meerdere nummers op een album, vandaar de multiple values.
10
11
Met dit voorbeeld hebben we de linken gelegd tussen de verschillende inhoudstypes en hebben we een mooi systeem op artiesten, cd’s en nummers toe te voegen en de nodige linken. Oefening: Maak een view waar je alle albums van een artiest kan tonen.
12
Entity Reference View Widget Nu gaan we 2 modules laten samenwerken= de entity reference module en de views module. Hoe configureren we de widget? 1) Maak een nieuwe view
Maak een nieuwe view Go to Administration >> Structure >> Views >> Add new view (path: admin/structure/views/add)
Geef de view een naam en kies welk inhoudstype je wil gaan weergeven. Kies om een pagina en een blok te maken. We hebben de pagina en het blok niet echt nodig, maar het geeft ons meer mogelijkheden voor later.
13
2) Voeg "Entity Reference View Widget" bovenaan bij Add als Display type
De volgende stappen kunnen variëren afhankelijk wat je nodig hebt.Hier wordt een simpele lijst getoond en niet de gerenderde entiteit.
14
View "Format" >> select "Table" View "Fields" >> Voeg volgende velden toe - Entity Reference View Widget Checkbox: Content (Dit is belangrijk, want hiermee voeg je keuzevakjes toe om de entiteiten te selecteren die je wil gebruiken.) - Title Zorg ervoor dat "Use Ajax" op "Yes" staat, anders zal je view raar reageren. Save en kijk hoe je view er uit ziet. 3) Bewerk je content type of entity. Voeg het veld toe met Entity Reference. Zorg er voor dat het widgettype op View staat.
15
Administration >> Structuur >> Inhoudstypes >> artiesten >> Manage fields
Zorg voor de volgende veldinstellingen voor je inhoudstype. - "View": "Entity Reference View Widget" - Pass selected entity ids to view
16
Klik op bewaar instellingen en je bent klaar. ----------Ga naar een bestaande node en voeg content toe.
17
Dan moet je een overlay krijgen met de view.
Na selectie
18
EXTRA ----------Add filter options (which is like adding a filter to any view) 1) Edit your view and "Entity Reference View Widget" as a Display type 2) Add a "FILTER CRITERIA" to the view Select the desired field you want to filter on, next press "Apply" Select the desired operator Make sure you expose your field to the visitors, next press "Apply"
Let assume we want to add our "Title" field as a filter And use the operator "Contains" Next press "Save" to save the changes for the view And now you are done.
19
----------Go to existing Node / Entity to "add items" (References) to it. On top of the overlay, you now the filter options.
http://codekarate.com/daily-dose-of-drupal/using-views-entity-reference-module-drupal7
20