26 Coole Drupal modules voor site builders | Maart 2018

12 Mar 2018

Erik de Kamps
Drupal developer
+31 (0)20 - 261 14 99

**De grootste 'module' die geüpdate werd was uiteraard de Drupal core: Drupal 8.5.0 kwam 07 maart uit, [lees hier meer](https://www.drupal.org/blog/drupal-8-5-0). Verder, wat ons opviel aan module updates van afgelopen maand, enjoy:**

## 1. Password Policy

Standaard accepteert Drupal álle wachtwoorden die gebruikers in kunnen stellen voor hun user account, zelfs als hij maar uit één letter bestaat.

Deze module scherpt dat aan, je kunt hiermee bepalen wat het wachtwoord beleid van je Drupal systeem wordt, bijvoorbeeld:

- minimaal 8 karakters;
- minimaal één speciaal karakter;
- niet hetzelfde zijn als je username of e-mail adres;
- het mag niet een wachtwoord zijn dat al eerder gebruikt is.

https://www.drupal.org/project/password_policy

## 2. Content-Security-Policy

[Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) (CSP) is een extra beveiligingslaag die helpt bij het detecteren en beperken van bepaalde soorten aanvallen, waaronder Cross Site Scripting (XSS) en injection attacks, bijvoorbeeld [SQL injection](https://en.wikipedia.org/wiki/SQL_injection). Deze aanvallen worden gebruikt voor van alles, van gegevensdiefstal tot [defacen](https://nl.wikipedia.org/wiki/Defacen) van websites of verspreiding van malware.

Deze module kan automatisch deze *Content-Security-Policy* headers genereren voor je, nadat je de juiste instellingen hebt gedaan in het Drupal backend

https://www.drupal.org/project/csp

## 3. Comment Notify

Stuur een notificatie naar een Drupal content manager of administrator zodra een reactie geplaatst wordt door een website bezoeker. Dit kan voor zowel anonieme als ingelogde bezoekers ingesteld worden.

https://www.drupal.org/project/comment_notify

## 4. Rest menu items
[Headless Drupal](/blog/headless-drupal-nodejs-part-13-drupal-8-restful-api) blijft hot, en terecht. Wij maken er ook enthousiast gebruik van in een aantal installaties, waaronder deze website.

Deze module helpt bij het opzetten van een [endpoint](https://stackoverflow.com/questions/2122604/what-is-an-endpoint) om de menu items uit te serveren. Er kunnen *query parameters* meegegeven worden om te bepalen hoeveel *menu level* je terug krijgt in deze web service.

De json data kan je gebruiken om een menu op te bouwen in een frontend framework als [React](https://reactjs.org/), [Angular](https://angular.io/) of in een iOS / Android App.

https://www.drupal.org/project/rest_menu_items

## 5. Breakpoints

Een website die niet [responsive](https://en.wikipedia.org/wiki/Responsive_web_design) is telt al een tijdje niet meer mee. Deze Drupal module faciliteert management van breakpoints voor je responsive web design, waardoor de juiste [media queries](https://www.w3schools.com/css/css_rwd_mediaqueries.asp) gezet worden.

https://www.drupal.org/project/breakpoints

## 6. Simple hierarchical select

Als een content manager een selectie moet maken waar categorieën en subcategorieën bij komen kijken, dan is deze manier van selectie wellicht handig.

https://www.drupal.org/project/shs

## 7. Block Visibility Groups

Binnen het [block systeem](https://www.drupal.org/docs/8/core/modules/block/overview) in de Drupal core kan je per block instellen waar dat block moet komen en wie het block mag zien. Maar dit kan niet *in bulk* voor een groep blocks.

Met deze Drupal module kan je wel blocks in groeperen en per *block group* configureren wie wat mag zien.

https://www.drupal.org/project/block_visibility_groups

## 8. Empty Page

Als wij een pagina binnen een Drupal systeem ontwikkelen, dan voegen we een *route* toe en faciliteren via [controllers](https://www.drupal.org/docs/8/api/routing-system/introductory-drupal-8-r...), [services](https://www.drupal.org/docs/8/api/services-and-dependency-injection/serv...) en [Twig](https://www.drupal.org/docs/8/theming/twig) files de html dynamisch naar het scherm van de bezoekers van betreffende pagina in Drupal. Hierin kunnen we eventueel met blocks werken, zodat data via blocks juist gepositioneerd wordt.

Als je geen ontwikkelaar bent, dan zou je in bepaalde use cases ook een pagina met behulp van alléén blocks op willen maken. Bijvoorbeeld een landing page, waar geen [node](https://www.drupal.org/docs/7/nodes-content-types-and-fields/about-nodes) nodig is.

Binnen de Drupal core kan je in zo'n scenario nergens je blocks kwijt omdat je geen pagina hebt om het block te plaatsen.

Deze module lost dat op doordat je hierin een *empty page* kan maken en op die empty page je blocks kwijt kunt.

Zo hoef je niet omslachtig een lege node aan te maken, wat onnodig overhead genereert. Precies het probleem wat de ontwikkelaar van deze module aangeeft op te lossen.

https://www.drupal.org/project/empty_page

## 9. EU Cookie Compliance

Toont een melding in de footer van je Drupal site, waarin bezoekers akkoord kunnen geven op je *cookie beleid*, of door kunnen klikken voor meer informatie. Deze module maakt het je makkelijk om aan deze verplichte melding te voldoen.

https://www.drupal.org/project/eu_cookie_compliance

## 10. Shield


Deze module gebruiken we in bijna elke Drupal installatie voor de test -en acceptatie omgevingen. Het schermt je volledige website af voor de buitenwereld, tenzij je dus inlogt. Zo kunnen anonieme bezoekers en zoekmachines niet bij onze testomgevingen komen, maar wij en klanten wel.

We deden dit hiervoor altijd middels het handmatig aanmaken van een [.htpasswd](http://www.htaccesstools.com/articles/password-protection/), wat nogal omslachtig is en lokaal in de weg zit gezien je het ook in .htaccess moet opnemen.

https://www.drupal.org/project/shield

## 11. Access unpublished
Binnen de Drupal core is het niet mogelijk om *unpublished content* te laten bekijken door anonieme website bezoekers. Ook niet als zij een directe link naar betreffende content item hebben.

Middels deze module is dat wel mogelijk, handig voor bijvoorbeeld *content checkers* en *proofreaders*: zij hoeven dan geen inlog te krijgen op de website, handig en veilig.

(!) Let wel op dat de pagina geïndexeerd kan worden door Google en daardoor vindbaar wordt voor iedereen. Houd een *draft* dus niet te lang open op deze manier en deel zeker geen gevoelige informatie via deze weg.

https://www.drupal.org/project/access_unpublished

## 12. Anonymous login

Wij ontwikkelde eerder soortgelijke custom code in [Lus](/project/lus) om deze functie te benutten: alle niet-ingelogde bezoekers redirecten naar de login pagina.

Deze Drupal module biedt soortgelijke functie: hij redirect ook alle anonieme bezoekers, maar alleen als die een *admin path* opvragen. Als iemand vervolgens succesvol inlogt dan wordt degene doorverwezen naar het originele *admin path* waar hij op binnen kwam.

https://www.drupal.org/project/anonymous_login

## 13. Simplelogin

Genereert een andere inlogpagina, die simpeler, compacter en potentieel mooier is. Ook kan je er een mooie achtergrond afbeelding plaatsen en het in eigen huisstijl zetten.

https://www.drupal.org/project/simplelogin

## 14. BeautyTips

Laat makkelijk tips zien als iemand over een bepaalde tekst hovered met zijn muis, soortgelijk als de [Bootstrap tooltip](https://www.w3schools.com/bootstrap/bootstrap_tooltip.asp).

https://www.drupal.org/project/beautytips

## 15. Schema.org Metatag

Een goede toevoeging aan je website voor zoekmachine optimalisatie (SEO). Het verrijkt je html, waardoor zoekmachines jouw Drupal systeem beter kunnen 'lezen'.

https://www.drupal.org/project/schema_metatag

## 16. Login History

Drupal core houdt geen geschiedenis van logins bij, maar er zullen ongetwijfeld scenario's zijn waar dit nodig is. Deze module genereert onder andere:

- globaal overzicht van alle logins;
- logins van individuele gebruikers;
- een block met inlog gegevens voor de bezoekers zelf: wanneer was zijn laatste login en een link naar zijn login geschiedenis.

https://www.drupal.org/project/login_history

## 17. Minify JS

Drupal optimalisatie tool, deze module *minified* al je javascript, waardoor javascript bestanden kleiner worden en minder zwaar voor een netwerk en browser.

https://www.drupal.org/project/minifyjs

## 18. Minify Source HTML

Soortgelijk aan 'Minify JS', maar dan voor de gegenereerde html.

https://www.drupal.org/project/minifyhtml

## 19. IMCE Rename (D8)

IMCE is een populaire tool voor Drupal content managers om media mee te beheren. Deze plugin zorgt ervoor dat namen van bestanden gewijzigd kunnen worden, om zo alles beter te kunnen ordenen en beheerbaar te maken.

https://www.drupal.org/project/imce_rename_plugin

## 20. Create and continue

Een handige tool als je veel content moet invoeren, deze module genereert een extra button onder je content item: 'Save and add another'. Zo kan je direct door met invoeren van een nieuw item.

https://www.drupal.org/project/createandcontinue

## 21. Block Refresh

Wil je informatie in een Drupal block up-to-date houden, zelfs als de pagina niet ververst wordt door de bezoeker? No problem, deze module faciliteert het voor je:

- automatisch de content in een block verversen na xx seconden;
- bezoekers kunnen handmatig verversen;
- verversen na page refresh;
- optioneel uit te sluiten in Drupal's page cache of elke externe cache (bv Varnish).

https://www.drupal.org/project/block_refresh

## 22. Single Date Time Picker

Makkelijk invoeren van een benodigde datum én tijd.

https://www.drupal.org/project/single_datetime

## 23. Secure Login

Forceert inloggen via een veilige lijn, om zo privacy van je bezoekers optimaal te beschermen.

https://www.drupal.org/project/securelogin

## 24. Menu target

Niet aanwezig in Drupal core: aangeven per menu item of de aangeklikte link voor bezoekers moet openen in huidig -of een nieuw venster. Installeer deze module et voilá: aangeven of je in nieuw of huidig venster wilt laten openen.

https://www.drupal.org/project/menu_target

## 25. Persistent Login

Drupal kent standaard geen ‘remember me’ functie op het inlogscherm. Deze module biedt deze functie wel en hierbij zijn extra veiligheidsmaatregelen zijn genomen: hij implementeert namelijk niet een standaard langere ‘PHP session time’.

Volgende onderdelen kan je instellen:

- hoe lang de gebruikers ingelogd blijven, voordat ze opnieuw hun gegevens moeten invoeren;
- hoe veel persistente sessies mag één Drupal user tegelijk hebben;
- instellen bij welke pagina’s de gebruiker wél opnieuw moet inloggen, bijvoorbeeld: wanneer je je gebruikersgegevens wilt wijzigen.

https://www.drupal.org/project/persistent_login

## 26. CacheExclude

Zonder ingeschakelde [page caching](https://www.drupal.org/docs/8/administering-drupal-8-site/internal-page-...) zal een Drupal website niet enorm veel bezoekers aan kunnen, vandaar dat het standaard aan staat. Maar het kan voorkomen dat je bepaalde pagina's uit wilt sluiten van die cache, omdat er altijd realtime / dynamische data getoond moet wordt. Bij behoefte aan een random afbeelding of bijvoorbeeld wisselende content, check dus deze Drupal module even.

https://www.drupal.org/project/cacheexclude

## Wrap up
Alright, that's it for now. Ik hoop dat je hiermee je Drupal site verder kunt verrijken, optimaliseren en meer gebruiksvriendelijk maar.

Vragen? Let me know!

Comments

Stay up-to-date

Ontvang onze Lucius nieuwsbrief direct in je inbox
en wees als eerste op de hoogte van nieuwe artikelen!

Nóg meer
kennis nodig?

Check ons ons blog archief >