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

Laat Drupal 8 weten over je module met een .info.yml-bestand

04/10/2025, by Ivan

Menu

Hoofdonderwerp: projectmetadata

Het .info.yml-bestand (ook wel «info yaml-bestand» genoemd) is een belangrijk onderdeel van een module, thema of installatieprofiel in Drupal 8 voor het opslaan van metadata over het project.

Deze .info.yml-bestanden zijn vereist om:

  • Drupal te informeren over het bestaan van de module, het thema of het installatieprofiel.
  • Een thema of module te onderscheiden op type.
  • Informatie te verschaffen voor de beheerderspagina’s van de Drupal Web UI.
  • Criteria te specificeren voor het beheren van het in- en uitschakelen van de module en de compatibiliteit met de Drupal-versie.
  • Algemene administratieve doeleinden in andere contexten.
Voor meer informatie, zie de laatste API over InfoParserInterface.php. (Klik op Bekijk bron.)

Hello World

Hieronder staat het bestand hello_world.info.yml dat we gaan gebruiken. Als je verder volgt, maak dan een nieuw bestand hello_world.info.yml in de hoofdmap van je module en plak deze code erin.

name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom

type: module
core: 8.x

Laten we elke regel bekijken om te zien wat deze doet.

De eerste drie regels worden voornamelijk gebruikt in de beheerinterface, waar gebruikers je module kunnen inschakelen of uitschakelen. De sleutels name en description leveren de tekst die wordt weergegeven op de modulebeheerpagina, en de sleutel package laat toe om soortgelijke modules te groeperen. Bijvoorbeeld: Core gebruikt package: Core om alle modules te groeperen die met Drupal 8 worden geleverd, terwijl je zelf package: Custom kunt gebruiken om je eigen projectmodules te groeperen, zodat ze eenvoudiger te vinden en in te schakelen zijn.

De sleutel type, die nieuw is in Drupal 8, geeft het type extensie aan, bijvoorbeeld module, thema of profiel.

Voor modules die worden gehost op drupal.org, zal het versienummer worden ingevuld door het verpakkingsscript. Je moet dit niet handmatig specificeren, maar de versieregel volledig weglaten.

De sleutel core geeft aan met welke versie van de Drupal core je module compatibel is.

name, type en core zijn verplichte sleutels.

Specificeren van core_version_requirement
Waarschuwing
Op dit moment ondersteunt DrupalCI geen testpatches die core_version_requirement wijzigen.

Heb je core_version_requirement nodig?

Bij het definiëren van kernversiebeperkingen wordt de volgende prioriteitsvolgorde gebruikt:

  • Als in composer.json een kernvereiste is opgegeven, krijgt die de hoogste prioriteit.
  • Als er in composer.json geen kernvereiste is opgegeven, heeft core_version_requirement in info.yml voorrang op de volgende.
  • Als core_version_requirement niet is ingesteld in info.yml, wordt elke versie gebruikt die in de hoofdmodule in het gedeelte dependencies van info.yml is opgegeven.

core_version_requirement specificeren indien nodig

De nieuwe sleutel core_version_requirement in * .info.yml-bestanden voor modules, thema’s en profielen ondersteunt nu semantisch versiebeheer, geïmplementeerd in het Composer-project. Dit stelt modules, thema’s en profielen in staat om ook aan te geven dat ze compatibel zijn met meerdere hoofdversies van Drupal core.

Bijvoorbeeld, een module die compatibel is met Drupal 8 en Drupal 9 kan een info.yml-bestand hebben zoals dit:

name: My Module
type: module
core: 8.x
core_version_requirement: ^8 || ^9

Dit geeft aan dat de module compatibel is met alle versies van Drupal 8 en 9. core: is hier vereist, omdat Drupal core-versies vóór 8.7.7 de sleutel core_version_requirement: niet herkennen.

De meeste modules zullen echter verouderde code moeten verwijderen om compatibel te zijn met Drupal 9. Daarom zullen ze niet compatibel kunnen zijn met alle versies van Drupal 8.

Bijvoorbeeld, een module die compatibel is met Drupal 8-versies vanaf 8.8.0 en met Drupal 9, zal een info.yml-bestand nodig hebben zoals:

name: My Module
type: module
core_version_requirement: ^8.8 || ^9

De sleutel core: mag hier niet worden gebruikt, om ervoor te zorgen dat Drupal-versies vóór 8.7.7 de module niet zullen installeren. Het toevoegen van zowel core als core_version_requirement met iets anders dan core_version_requirement: ^8 || ^9 zal een fout veroorzaken.

Core_version_requirement kan niet worden gebruikt om de kernversie te beperken tot vóór 8.7.7. Bijvoorbeeld, core_version_requirement: ^8.7 || ^9 zal een parse-fout veroorzaken: dit is ongeldig, omdat ^8.7 versies zoals 8.7.0 zou omvatten, die de sleutel core_version_requirement niet herkennen.

Dit is belangrijk bij het gebruik van de nieuwe sleutel core_version_requirement met iets anders dan core_version_requirement: ^8 || ^9. Deze module moet getest zijn op Drupal 8.7.7 of nieuwer.

Volledig voorbeeld

Naast de basiseigenschappen die in het vorige voorbeeld zijn getoond, zijn er ook een aantal extra eigenschappen. Dit is een volledig voorbeeld:


name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom

type: module
core: 8.x

dependencies:
  - drupal:link
  - drupal:views
  - paragraphs:paragraphs
  - webform:webform (>=8.x-5.x)

test_dependencies:
 - drupal:image

configure: hello_world.settings

php: 5.6

hidden: true
required: true

# Opmerking: voeg de eigenschappen 'version' of 'project' niet zelf toe.
# Ze worden automatisch toegevoegd door de packager op drupal.org.
# version: 1.0
# project: 'hello_world'
  • dependencies: een lijst van andere modules waarvan je module afhankelijk is. Afhankelijkheden van de Drupal core of contrib-modules moeten in de namespace staan in het formaat {project}:{module}, waarbij {project} de projectnaam is zoals die wordt weergegeven in de URL op Drupal.org (bijvoorbeeld drupal.org/project/views) en {module} de machine-naam van de module is. Afhankelijkheden kunnen ook versiebeperkingen bevatten, zoals webform:webform (>=8.x-5.x). Let op: als je module afhankelijk is van andere modules of bibliotheken, moeten deze worden gedeclareerd in het composer.json-bestand van de module. Als je lokale aangepaste modules hebt die van elkaar afhankelijk zijn, kun je {module}:{module} gebruiken (of {module}:{submodule} voor submodules).
  • test_dependencies: een lijst van andere modules (in hetzelfde formaat als dependencies) die nodig zijn voor het uitvoeren van bepaalde automatische tests voor je module op de geautomatiseerde tester van Drupal («DrupalCI»), maar die niet nodig zijn als afhankelijkheden van de module in het algemeen (of die nog in ontwikkeling zijn als afhankelijkheden, maar nog niet voltooid). Let op: je moet de wijziging van test_dependencies committen in je Git-repository voordat je probeert een test uit te voeren die ervan afhankelijk is - je kunt de wijziging in info.yml niet in dezelfde patch plaatsen als de nieuwe test. Als alternatief kun je Composer gebruiken voor testafhankelijkheden - zie de relevante documentatie voor meer informatie.
  • configure: als je module een configuratieformulier aanbiedt, kun je hier de route naar dat formulier specificeren. Het zal dan verschijnen als een link op de pagina «Uitbreidingen» (URL /admin/modules), wanneer de gebruiker de details uitklapt.
  • php: 5.6: specificeert de minimale versie van PHP die vereist is voor je module. Gebruikers zullen de module niet kunnen inschakelen als ze een oudere versie van PHP gebruiken. Dit kan worden gebruikt om fouten te vermijden als je module gebruikmaakt van nieuwere functies die niet beschikbaar zijn in eerdere PHP-versies.
  • hidden: true: hiermee wordt je module verborgen op de lijst van modules op de pagina Uitbreidingen. Dit kan handig zijn om een module te verbergen als die alleen tests bevat of bedoeld is als voorbeeld voor ontwikkelaars die een core API moeten implementeren. Je kunt deze modules zichtbaar maken door $settings['extension_discovery_scan_tests'] = TRUE toe te voegen in je settings.php-bestand.
  • required: true: dit betekent dat je module moet worden ingeschakeld en niet kan worden verwijderd.
  • Beperkte eigenschappen, toegevoegd door het verpakkingssysteem van Drupal. Voeg deze niet handmatig toe aan info.yml in je opslagplaats: version en project

Debuggen van .info.yml-bestanden

De module wordt niet vermeld op de pagina admin/modules

  • Zorg ervoor dat het info-bestand de naam {machine_name}.info.yml heeft en zich in de hoofdmap van de module bevindt.
  • Zorg ervoor dat het bestand correct is geformatteerd. Er mogen bijvoorbeeld geen spaties vóór, maar wel na de dubbele punt (:) staan. Het formaat moet eruitzien zoals in het voorbeeld hieronder.
  • Zorg ervoor dat het bestand de volgende regel bevat:
type: module
  • Zorg ervoor dat de naam van de module begint met een letter of een underscore. Hieronder volgt een uittreksel uit de PHP-documentatie over geldige functienamen.
Functienamen volgen dezelfde regels als andere labels in PHP. Een geldige functienaam begint met een letter of underscore, gevolgd door een willekeurig aantal letters, cijfers of underscores. Als reguliere expressie zou dit worden uitgedrukt als: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.

De module wordt vermeld in admin/modules, maar het selectievakje is uitgeschakeld.

  • Zorg ervoor dat de core-compatibiliteit is ingesteld op 8.x
core: 8.x
  • Zorg ervoor dat alle afhankelijkheden van de module beschikbaar zijn. Je kunt de module-informatie uitbreiden om te zien welke vereisten ontbreken.

expand_requirements

Let op dat sommige modules zijn verplaatst vanuit de Drupal 8 core, terwijl andere toegevoegde modules naar de core zijn verplaatst of zijn vervangen door nieuwe core-modules.

De modulebeschrijving is leeg

Vergeet niet dat de waarde van description wordt gebruikt voor de beschrijving.

description: Example Module description.

Een composer.json-bestand toevoegen

Naast het declareren van afhankelijkheden van andere modules in het .info.yml-bestand, als de module een contrib-module is op Drupal.org die wijzigingen in module-afhankelijkheden wil testen met behulp van DrupalCI als onderdeel van de ontwikkeling, moet er een composer.json aanwezig zijn die deze afhankelijkheden van de Drupal-module uitdrukt (DrupalCI kan afhankelijkheidswijzigingen alleen detecteren in patches binnen composer.json, niet in .info- of .info.yml-bestanden).

Zie ook