Het is goed om op de hoogte te blijven van beschikbare open source 'contrib' Drupal modules. 'There's a module for that', dit geldt voor vele use cases binnen Drupal; zonde om iets te bouwen wat al bestaat. Wij houden de laatste module releases elke maand bij, hierbij wat ons opviel aan module updates de laatste maand:
Rabbit Hole
Geniale module, enigszins superlatief, maar ik verbaasde me dat ik deze nooit eerder zag. Deze Drupal module lost een issue op wat al sinds jaar-en-dag aandacht nodig heeft bij Drupal implementaties: bepaalde content, files of Taxonomy terms wil je gecombineerd gebruiken voor het ópbouwen van specifieke content pagina's -deze wil je dus niet inzetten als individueel bereikbare pagina's.
Bijvoorbeeld: je hebt een pagina waar een slideshow met 10 afbeeldingen getoond worden. Die 10 afbeeldingen zijn 10 beheerbare Drupal nodes in het backend. Als je hier niks aan doet, dan werkt je slideshow waarschijnlijk prima, maar zijn die 10 nodes óók individueel anoniem bereikbaar -én indexbaar door Google (╯°□°)╯︵ ┻━┻
Dat wil je dus absoluut voorkomen: je SEO gaat kapot en mensen kunnen op pagina's terecht komen die helemaal geen onderdeel uitmaken van je website -en waarschijnlijk niet gestyled zijn -yikes!
Wij losten dit voorheen altijd op in custom code: toegang tot betreffende entities een 404 page not found geven. Maar deze module maakte het generiek configureerbaar, heel fijn!
Bonus
Owja, als je de XML sitemap module gebruikt: vergeet betreffende items daar ook niet uit te sluiten.
https://www.drupal.org/project/rabbit_hole
Op de hoogte blijven?
Quick Link
Naar aanleiding van dit blog op het spoor gekomen: deze module biedt een implementatie van de Quicklink library van Google Chrome Lab voor Drupal. Quicklink is een lichtgewicht JavaScript library (gecomprimeerd minder dan 1 kb) die snellere opeenvolgende pagina loads mogelijk maakt door in-viewport links alvast te volgen.
Hoe Quicklink werkt
Quicklink doet pogingen om navigatie naar volgende pagina's sneller te laten verlopen. Het:
- Detecteert links binnen de viewport (met behulp van Intersection Observer)
- Wacht totdat de browser inactief is (met requestIdleCallback)
- Controleert of de gebruiker geen trage verbinding heeft.
- Prefetchen van URL's naar de links (met behulp van
of XHR).
Under construction
De module pas net uit en nog onder heavy construction momenteel, maar absoluut one to watch.
https://www.drupal.org/project/quicklink
Image Effects
Een populaire evergreen module, die in Drupal 7 tijdperk ImageCache Actions heette: bevat een bundel aan acties die je kan toepassen op een afbeelding.
https://www.drupal.org/project/image_effects
Weight
Als je de volgorde van content in een lijst (bv Drupal nodes) wilt instellen, zul je hiervoor een field nodig hebben die dit faciliteert. Deze biedt Drupal standaard niet, maar deze module helpt je: na installatie van kan je content-items (Drupal nodes) een weight geven, waardoor ze hoger of lager in een (niet-chronologische) lijst komen te staan.
Interessant in deze context is Comparison of Node Ordering Modules.
https://www.drupal.org/project/weight
Automatic User Names
Deze Drupal module kan automatisch een username genereren uit andere User fields (bv first name en last name). Omdat deze username automatisch wordt gegenereerd, is het niet meer nodig deze handmatig in te laten vullen. Daarom schakelt deze module dan ook het username veld uit. De Real Name module kan hier nog een goede aanvulling op zijn.
https://www.drupal.org/project/auto_username
Role Expire
Dit is een eenvoudige module waarmee beheerders vervaldata op gebruikersrollen kunnen beheren. Een veelvoorkomende toepassing van deze module is het implementeren van abonnementen in de vorm van een tijdschrift, waarbij iemand een bepaalde periode toegang heeft tot afgeschermde content.
https://www.drupal.org/project/role_expire
Twig Field Value (Drupal theming)
Populaire Drupal module, waarmee Drupal themers gedeeltelijke data uit render arrays kunnen krijgen. Waardoor er meer controle is over welke data er exact op het scherm terecht komt.
https://www.drupal.org/project/twig_field_value
Entity Browser
Developer module om een browser / kiezer / selector voor een Drupal entity te bieden. Het kan worden gebruikt in elke context waarin een content manager één of meerdere entities moet selecteren en er iets mee gedaan moet worden (content, afbeelding, video, audio, etc)
Mogelijke toepassingen:
- entity reference widget produceren;
- gebruiken in een wysiwyg-editor.
Een voorbeeld is de File Entity Browser module, een soort van media browser, die gebruik maakt van deze Entity Browser module.
https://www.drupal.org/project/entity_browser
Paragraphs Previewer
Een uitbreiding voor de populaire Drupal Paragraphs module. Die kent standaard geen mogelijkheid om in het backend een preview te bekijken van een ingevoerd stuk content in Paragraphs: je moet eerst het gehele content-artikel (de node) opslaan, dan het frontend refreshen en bekijken hoe het eruit ziet. Deze module lost dat op door de mogelijkheid van een preview per Paragraph te geven, ín het backend.
Je zult wel op moeten letten dat de html/css-styling van betreffende Paragraph ook volledig daar is opgenomen en niet afhankelijk is van globale context (bv pagina, sectie, div, etc classes).
https://www.drupal.org/project/paragraphs_previewer
Views Parity Row
In Drupal kan je werken met View Modes omdat content uit eenzelfde content type op verschillende plekken in een Drupal website er anders uit kan zien, enkele standaard View Modes zijn:
- Full Content
- RSS
- Search index
- Teaser
Je kunt zelf onbeperkt extra View Modes toevoegen. Een lijst met alle actieve View Modes kan je vinden onder DRUPAL_SITE_URL/admin/structure/display-modes/view
Nu bevat Drupal core tevens de Views module: voor het maken van lijsten in breedste zin van het woord. In zo'n Drupal View kan je standaard aangeven welk View Mode van betreffende content je wilt laten zien (teaser, full content, rss, etc). Maar je kunt in de View er slechts één kiezen, je kunt ze dus niet afwisselen. En dat wil je in sommige gevallen misschien wel; dat is het issue wat deze module oplost: verschillende View Modes in één View, pfew :)
https://www.drupal.org/project/views_parity_row
Leaflet
Leaflet is een open source JavaScript library voor mobiel-vriendelijke interactieve maps. Deze module integreert Leaflet in Drupal. Een alternatief voor Google Maps of MapBox bijvoorbeeld.
https://www.drupal.org/project/leaflet
Background Images Formatter
Deze module biedt een image formatter waarmee je een afbeelding op de achtergrond van een css-tag kunt instellen. De afbeeldingen zijn afkomstig uit een Drupal entity field en niet van een configuratiepagina of een custom Drupal entity of iets anders, dus het is heel eenvoudig in te stellen en te beheren -zoals de project pagina beschrijft.
De module bevat tevens submodule om responsieve afbeeldingen te verwerken.
https://www.drupal.org/project/bg_image_formatter
OtherView Filter
Binnen de Drupal core kan je mbv Views makkelijk lijsten maken, van bijvoorbeeld content of users. Soms lukt het binnen de onwijs veel standaard opties toch net niet om die éne uitzondering in te bouwen: bijvoorbeeld één of meerdere specifieke content-items die je niet in de lijst wilt hebben.
Als je deze module installeert kan je de resultaten van de ene View uit laten sluiten in de andere. Dit klinkt wat als een Rube Goldberg machine en wellicht is een custom query beter, maar dat hangt af van de use case, het budget, systeem scale, toekomstige wensen en je development kennis.
https://www.drupal.org/project/other_view_filter
Taxonomy Formatter
Drupal Taxonomy een krachtig, flexibel systeem om content te categoriseren. Alleen de standaard formatters bouwt flink wat div's om de terms heen in het frontend. Deze module voegt een nieuwe formatter toe waarmee je meer invloed hebt op deze lay-out opties.
https://www.drupal.org/project/taxonomy_formatter
Copy Prevention
Deze module past een aantal technieken toe waardoor het moeilijker wordt om content van jouw Drupal website te kopiëren:
- Schakel selecteren van een tekst uit.
- Schakel kopiëren naar klembord uit.
- Rechtermuisknop uitschakelen voor alle site-inhoud.
- Rechtermuisknop uitschakelen voor alleen afbeeldingen.
- Bescherm / verberg afbeeldingen voor zoekmachines, zodat jouw afbeeldingen niet in zoek resultaten worden getoond.
Als je informatie echt niet wilt laten kopiëren, dan moet je het niet op internet zetten, enigszins technisch onderlegde mensen kunnen namelijk altijd content van een publiekelijke Drupal website kopiëren, maar deze module maakt het wat moeilijker voor niet-technische mensen.
https://www.drupal.org/project/copyprevention
Consumers
Een developer api module welke gebruikt wordt in Contenta CMS, een Headless Drupal distributie. Deze module zelf bevat geen functies voor eindgebruikers, maar faciliteert een API voor andere modules om op te bouwen.
In dit geval wordt kunnen er Consumers geregistreerd worden (soortgelijk als https://developers.facebook.com), voor decoupled Drupal installaties om variaties aan te bieden op basis van wie het request maakt. Al deze opties worden onder een gezamenlijke paraplu beheerd, zodat andere modules er gebruik van kunnen maken.
https://www.drupal.org/project/consumers
Nagios
Deze module integreert Drupal in het Nagios monitoring systeem en biedt instant centraal inzicht in Nagios van:
- Is de Drupal core up-to-date?
- Zijn de Drupal contrib modules up-to-date?
- Zijn de Drupal site settings correct?
- Veel overige veiligheid aspecten in Drupal
https://www.drupal.org/project/nagios
Autoban
Drupal security module, die gedrag van bezoekers analyseert: wanneer er verdachte handelingen worden gedetecteerd wordt betreffende IP adres aan een zwarte lijst toegevoegd.
Er zijn diverse settings mogelijk, waardoor je kunt instellen hoe streng de module optreed.
https://www.drupal.org/project/autoban
Wrap up
Ok, that's it voor deze nu, volgende maand verwacht ik weer een nieuwe modules updates, so stay tuned!