Jaar-, kwartaal en maandfilters in Drupal 8 views

Moeilijkheidsgraad

Als je een datumveld hebt en je wilt in een overzicht filteren (zichtbaar) met een datumbereik, dan kan je dit makkelijk doen door de uitgebreide filters te gebruiken en een bereik tussen 2 data te leggen.

Zo kan je dan voor een eerste kwartaal van 2019 een bereik leggen tussen 1/1/2019 en 31/3/2019. Zo kan je dit doen voor alle kwartalen, maanden en jaren. Het probleem is dat je dit manueel moet doen voor bvb alle kwartalen die nog moeten komen. Er is op dit ogenblik geen ingebouwd systeem in Drupal 8 views waarbij men automatisch data kan groeperen om te filteren.

Ik heb pogingen ondernomen om dit in views te programmeren, maar uiteindelijk heb ik me tevreden moeten stellen met een (simpele) andere aanpak.

Je gebruikt een 'computed field' om de datum om te zetten naar bvb jaar + kwartaal.

Screen001721.png

Met de volgende code:

Screen001722.png

$datumveld= $fields['field_datum'][0]['value'];
$jaar=date('Y',strtotime($datumveld));
$maand=date('m', strtotime($datumveld));
$value=$jaar . "-" . ceil($maand/3);

De eerste regel haalt de waarde van het datumveld. Pas dit aan met de naam van je eigen veld. De tweede haalt er het jaar uit. De derde regel de maand. Tenslotte worden de maanden door drie gedeeld en afgerond naar het geheel getal er boven (=ceil in PHP). Zo bekom je het kwartaal.

Het veld wordt telkens bij het opslaan ingevuld en geeft als resultaat bvb 2019-4 als de datum 1/10/2019 is.

Screen001719.png

In een view is het nu simpel om dit veld als filter te gebruiken. 


Screen001720.png

Spijtig genoeg kan je op dit ogenblik geen gebruik maken van 'views selective filters' in combinatie met computed fields.