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
04/10/2025, by Ivan

Menu

Blokken in Drupal 8 zijn instanties van het block-plugin systeem.
De Block Manager van Drupal scant je modules op klassen die de annotatie @Block bevatten.

Het onderstaande codevoorbeeld gebruikt de @Block-annotatie samen met de eigenschappen “id” en “admin_label” om een aangepast blok te definiëren.

Maak het bestand src/Plugin/Block/HelloBlock.php aan in het eerder gemaakte module-skelet en voeg de onderstaande code toe.

Om je Drupal-site deze nieuwe klasse te laten herkennen, moet je de cache legen.

<?php

namespace Drupal\hello_world\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a 'Hello' Block.
 *
 * @Block(
 *   id = "hello_block",
 *   admin_label = @Translation("Hello block"),
 *   category = @Translation("Hello World"),
 * )
 */
class HelloBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return [
      '#markup' => $this->t('Hello, World!'),
    ];
  }

}

Om het “Hello block” toe te voegen, kun je naar Structuur -> Bloklay-out (admin/structure/block) gaan en op de knop “Blok plaatsen” klikken die gekoppeld is aan elke beschikbare regio.

Wanneer je op de knop “Blok plaatsen” voor een regio klikt, verschijnt er een pop-updialoog “Blok plaatsen” met een lijst van alle beschikbare blokken. Om je blok snel terug te vinden, gebruik je gewoon de optie “Filter op bloknaam” of scrol je met de muis om het “Hello block” te vinden. Op die manier kun je elk gewenst aantal instanties van je aangepaste blok op je site plaatsen.

Probleemoplossing

  • De klassenaam en de bestandsnaam moeten identiek zijn (klasse HelloBlock en /src/Plugin/Block/HelloBlock.php). Als de klassenaam anders is, verschijnt het blok wel in de lijst van beschikbare blokken, maar kun je het niet toevoegen.
  • Controleer altijd dubbel alle paden en bestandsnamen. Je .php-bestand moet zich in de correct benoemde map bevinden (/src/Plugin/Block/), anders wordt het niet door Drupal gevonden.
  • Als je blok niet zonder fouten kan worden geplaatst in een regio of als er een watchdog-timer-fout verschijnt, controleer dan de PHP/Apache-foutlogs.
  • Als je blok niet in de lijst staat, zorg er dan voor dat je de Drupal-cache opnieuw opbouwt (bijv. met drush cr).
  • Zorg ervoor dat de naamgevingsconventie van je module volledig in kleine letters is. Sommige gebruikers rapporteren dat blokken niet verschijnen voor modules met camelCase-namen. Bijvoorbeeld: myModule zal nooit bepaalde blokken tonen; dit moet my_module zijn. Dit is voor het laatst getest in Drupal 8.8.1.

Opmerking: Twig-templates gebruiken met aangepaste blokken

1. Voeg hook_theme toe in je .module-bestand.
Opmerking: noem de functie niet als 'block__...' - dit zal geen template-variabelen doorgeven aan de subtemplates. Gebruik in plaats daarvan de modulenaam als prefix.

2. Gebruik “#theme” in de render-array in de build-methode en geef variabelen door op hetzelfde niveau als “#theme” - “#varname”.