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

Drupal 7 hook_block_info() en hook_block_view() informatie weergeven in een blok

14/10/2025, by Ivan

In de vorige les hebben we een module gemaakt voor Drupal 7, en in deze les gaan we de functionaliteit van onze module uitbreiden. We voegen de weergave van een blok toe met behulp van de hooks hook_block_view() en hook_block_info(). In dit blok zullen we informatie tonen over de laatste geregistreerde gebruikers op de site, met een link naar hun profielpagina.

Laten we beginnen met de beschrijving van hook_block_info():

Definieert alle blokken die door een module worden aangemaakt.

Deze hook bepaalt in Drupal welke blokken door de module worden weergegeven en kan de instellingen voor de weergave van het blok specificeren.

In hook_block_info() krijgt elk blok in je module een unieke identificatie "delta" (de sleutel in de geretourneerde array). De waarde van delta moet uniek zijn binnen jouw module en wordt gebruikt voor het volgende:

  1. Wordt doorgegeven aan andere hooks als argument om het specifieke blok te identificeren dat moet worden geconfigureerd en weergegeven.
  2. Wordt gebruikt voor het aanmaken van een HTML-template met de naam “block-MODULE-DELTA”, die op elk door Drupal verwerkt blok kan worden toegepast (nuttig voor aangepaste CSS of JavaScript).
  3. Wordt gebruikt om themingfuncties te definiëren zoals block__MODULE__DELTA voor geavanceerde thematisering.
  4. Wordt gebruikt om jouw blok te identificeren in hook_block_info_alter() en andere gerelateerde hooks.

De waarde van delta kan een string of een getal zijn. De maximale lengte is 32 bytes.

Geretourneerde waarden

Een associatieve array waarvan de sleutels de delta’s van de blokken zijn, en de waarden beschrijvingen van de blokken bevatten. Elke blokbeschrijving kan zelf ook een associatieve array zijn met de volgende sleutel-waardeparen:

'info': (vereist) De leesbare naam van het blok voor de beheerdersinterface. Deze informatie wordt gebruikt om het blok te identificeren op de beheerderspagina “Blokken” en wordt niet op de frontend van de site weergegeven.

'cache': (optioneel) Beschrijft het cachegedrag van het blok. Drupal biedt de volgende opties:

  • DRUPAL_CACHE_PER_ROLE (standaard): Het blok kan verschillen per gebruikersrol.
  • DRUPAL_CACHE_PER_USER: Het blok kan verschillen per individuele gebruiker.
  • DRUPAL_CACHE_PER_PAGE: Het blok kan verschillen afhankelijk van de pagina.
  • DRUPAL_CACHE_GLOBAL: Het blok is overal hetzelfde, ongeacht gebruiker of pagina.

DRUPAL_NO_CACHE: Het blok wordt niet gecachet.

'properties': (optioneel) Een array van extra metadata voor het toevoegen van het blok.

Veelgebruikte properties zijn:

'administrative': Een Booleaanse waarde die aangeeft of het blok wordt gebruikt in een administratieve context.

'weight': (optioneel) Stelt het gewicht (volgorde) van het blok in.

'status': (optioneel) Stelt de status van het blok in (1 = ingeschakeld, 0 = uitgeschakeld).

'region': (optioneel) Stelt de regio in waarin het blok wordt geplaatst.

  • 'visibility': (optioneel) Bepaalt de zichtbaarheid van het blok. Mogelijke waarden:
    • BLOCK_VISIBILITY_NOTLISTED: Toon op alle pagina’s behalve de opgegeven.
    • BLOCK_VISIBILITY_LISTED: Toon alleen op de opgegeven pagina’s.
    • BLOCK_VISIBILITY_PHP: Gebruik aangepaste PHP-code om zichtbaarheid te bepalen.
  • 'pages': (optioneel) Een lijst van paginapaden die door het visibility-veld worden gebruikt.

 Laten we één blok toevoegen met een hook:

<?php
function sitemade_block_info(){
    $blocks = array();
    $blocks[1]['info'] = 'Gebruikerslijst';
    return $blocks;
}
?>

Het blok zou nu zichtbaar moeten zijn in de beheerdersinterface. Laten we het toevoegen aan de linker zijbalk:

drupal block

Nu we het blok hebben toegevoegd, gaan we de inhoud ervan weergeven via de hook hook_block_view().

hook_block_view($delta = ''):

Parameters

$delta - geeft aan welk blok door de hook wordt verwerkt. Dit is de unieke identificatie van het blok in de module, gedefinieerd in hook_block_info().

Geretourneerde waarde

Array met de volgende elementen:

subject: De standaardtitel van het blok (vertaalbaar). Als het blok geen titel heeft, wordt NULL geretourneerd.

content: De inhoud van het blok. Dit kan een renderbare array zijn (aanbevolen) of een string met HTML-inhoud.

 Laten we deze hook toevoegen:

<?php
function sitemade_block_view($delta = ''){
    $block = array(); // initialiseer een lege array voor het blok
    switch ($delta){
        case 1: // dezelfde delta als in hook_block_info()
            $block['subject'] = 'Gebruikers'; // titel van het blok
            $block['content'] = ''; // initialiseer de inhoudsvariabele
            $query = db_select('users', 'u') // query voor gebruikersselectie
                ->fields('u', array('uid', 'name')) // selecteer velden
                ->orderBy('u.uid', 'DESC') // sorteer aflopend
                ->range(0, 5) // selecteer de laatste 5 gebruikers
                ->execute(); // voer de query uit
            $users = $query->fetchAll(PDO::FETCH_ASSOC); // verwerk de resultaten als array
            foreach($users as $user){
                $block['content'] .='<div><a href="' . base_path() . 'user/' . $user['uid'] . '">' . $user['name'] . '</a></div>';
                // base_path() - functie die het pad naar de root van de site retourneert
            }
        break;
    }
    return $block;
}
?>

Het resultaat is een lijst met de laatste vijf geregistreerde gebruikers op de site, weergegeven als links naar hun profielpagina’s. Uiteraard is het beter om voor links de functie l() te gebruiken, maar dat behandelen we in een aparte les.

Drupal list users