logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaringâť—

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

âť—Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Waaruit bestaat een Drupal 7-module?

14/10/2025, by Ivan

Voordat we beginnen met het maken van onze module, zal ik nog wat vertellen over de mogelijkheden van de Drupal API. De API biedt uitgebreide functies voor het werken met taxonomie, nodes, gebruikers en het ophalen en opslaan van gegevens in de database. Voor de interactie tussen modules en de Drupal-core, evenals tussen modules onderling, beschikt Drupal over een systeem van hooks. Een hook is een functie-terugroep (callback), wat betekent dat wanneer Drupal de code uitvoert en een hook tegenkomt, jouw functiecode daaraan wordt toegevoegd. Op deze manier kunnen we gebruikersgegevens, menu’s, taxonomie en nodes van verschillende contenttypes bewerken of uitbreiden.

Op de pagina

http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7

vind je een lijst van de hooks die in de Drupal-core beschikbaar zijn. Let erop dat de lijst voor elke Drupal-versie verschilt. We gaan een module maken voor Drupal 7, dus we gebruiken hooks die specifiek zijn voor versie 7.
Hooks in Drupal hebben de volgende naamstructuur:

NaamVanModule_NaamVanHook

Daar waar in de hooknaam “hook” staat, moet je het vervangen door de naam van jouw module — dat is de module waarin de hook wordt gebruikt.

Laten we beginnen met het aanmaken van de module zelf.

1. Maak in de map sites/all/modules een nieuwe map aan met de naam van jouw module. Ik noem mijn module site-made.

2. In de map van de module moeten we twee bestanden aanmaken: NaamVanModule.info en NaamVanModule.module. In mijn geval zijn dat sitemade.info en sitemade.module.

Drupal module

3. In het bestand sitemade.info schrijven we:

;$Id$ // Deze commentaarregel is optioneel, maar handig bij het uploaden van de module naar drupal.org
name = Sitemade module // De naam van onze module in de lijst met andere modules
package = sitemade // De naam van het pakket waarin de module zich bevindt
core = 7.x // De Drupal-versie waarvoor de module is ontwikkeld
files[] = sitemade.module // In de array files vermelden we de PHP-bestanden van de module

In het bestand sitemade.module beginnen we met de PHP-code:

<?php  // De sluitende tag is optioneel
//$Id$ // Ook toegevoegd voor gemakkelijke upload naar drupal.org

 Nu zou onze module moeten verschijnen tussen de andere modules. Laten we deze inschakelen:

Drupal module list

Nu de module is ingeschakeld, kunnen we er code aan toevoegen. Laten we bijvoorbeeld de tekstblok History (Geschiedenis) van de gebruikerspagina verwijderen:

Drupal block

Om te begrijpen hoe dit werkt, hebben we de hook hook_user_view nodig:

http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view/7

Het doel van deze hook is als volgt: wanneer Drupal de code uitvoert die nodig is om de gebruikerspagina weer te geven, roept het automatisch de hook van onze module aan. In onze module zullen we informatie over de gebruikersgeschiedenis uit de array $account verwijderen. Open het bestand sitemade.module en voeg de volgende code toe:

function sitemade_user_view($account, $view_mode, $langcode){
    print_r($account);
}

Sla het bestand op en leeg de Drupal-cache, zodat de hook wordt geregistreerd. Nu zou je bovenaan de gebruikerspagina een reeks gegevens moeten zien verschijnen:

Drupal account array

Wat je ziet is de array $account, die door hook_user_view wordt doorgegeven. De functie print_r() drukt de inhoud van deze array af op de pagina. Als je Mozilla Firefox gebruikt (wat ik aanraad voor webontwikkeling), druk dan op CTRL+U (pagina bron bekijken) om te zien hoe de array is opgebouwd.

Drupal account structure

Let op de velden uid en name — daarin staan respectievelijk het gebruikers-ID en de gebruikersnaam. Deze velden worden vaak gebruikt bij het maken van links naar gebruikersprofielen of door gebruikers aangemaakte content.

Zoals je kunt zien bevat deze array alleen gebruikersgegevens; er is geen informatie over het tekstblok History. Laten we daarom een andere hook proberen: hook_user_view_alter.

http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view_alter/7

Wijzig de code in het modulebestand als volgt:

function sitemade_user_view_alter($account, $view_mode, $langcode){
    print_r($account);
}

Sla de wijzigingen op. De weergegeven array zal nu veranderen: $account is slechts één veld binnen een grotere array. In het veld summary bevindt zich de informatie voor het blok History. Laten we proberen deze informatie te verwijderen met de functie unset():

function sitemade_user_view_alter($account, $view_mode, $langcode){
  unset($account['summary']);
  print_r($account);
}

 In mijn geval werd het veld summary verwijderd, maar het blok History bleef staan. Waarom? Omdat in de functiedeclaratie alleen de variabele met een dollarteken ($) is gebruikt — dit betekent dat we een lokale kopie van de gebruikersgegevens ($account) bewerken, zonder de oorspronkelijke variabele te beĂŻnvloeden. Om te zorgen dat wijzigingen in de functie ook daadwerkelijk worden toegepast, moeten we een ampersand (&) vóór de variabele plaatsen. Zo werken we met een referentie, geen kopie.

function sitemade_user_view_alter(&$account, $view_mode, $langcode){
  unset($account['summary']);
  print_r($account);
}

Sla het bestand op en leeg de cache. Nu zou het blok History verdwenen moeten zijn. De ampersand maakt een verwijzing naar de variabele $account. Meer over verwijzingen in PHP kun je nalezen in elk leerboek over PHP-programmering.