Informieren Sie Drupal 8 über Ihr Modul mithilfe der Datei .info.yml
Hauptthema: Metadaten des Projekts
Die Datei .info.yml (auch „Info YAML-Datei“ genannt) ist ein wichtiger Bestandteil eines Moduls, Themes oder Installationsprofils in Drupal 8 zur Speicherung von Metadaten über das Projekt.
Diese .info.yml-Dateien sind erforderlich, um:
- Drupal über das Vorhandensein eines Moduls, Themes oder Installationsprofils zu informieren.
- Den Typ der Erweiterung (Modul, Theme etc.) zu unterscheiden.
- Informationen für Seiten der Drupal-Webadministrationsoberfläche bereitzustellen.
- Kriterien für die Verwaltung der Aktivierung und Deaktivierung des Moduls sowie die Kompatibilität mit der Drupal-Version anzugeben.
- Allgemeine administrative Zwecke in anderen Kontexten zu erfüllen.
Weitere Informationen finden Sie in der aktuellen API unter InfoParserInterface.php. (Klicken Sie auf „Quellcode anzeigen“.)
Hello World
Nachfolgend sehen Sie die Datei hello_world.info.yml, die wir verwenden werden. Wenn Sie weiter folgen, erstellen Sie eine neue Datei hello_world.info.yml im Stammverzeichnis Ihres Moduls und fügen diesen Code ein.
name: Hello World Module description: Creates a page showing "Hello World". package: Custom type: module core: 8.x
Lassen Sie uns jede Zeile ansehen, um zu verstehen, was sie bewirkt.
Die ersten drei Zeilen werden hauptsächlich in der Administrator-Benutzeroberfläche verwendet, wenn Nutzer Ihr Modul aktivieren oder deaktivieren können. Die Schlüssel name und description liefern den Text, der auf der Administrationsseite für Module angezeigt wird, während der Schlüssel package die Gruppierung ähnlicher Module ermöglicht. Zum Beispiel verwendet Core package: Core, um alle mit Drupal 8 gelieferten Module zu gruppieren. Ebenso können Sie package: Custom verwenden, um alle Ihre eigenen Projektmodule zusammenzufassen, was deren Auffinden und Aktivierung erleichtert.
Der Schlüssel type, neu in Drupal 8, gibt den Erweiterungstyp an, z. B. Modul, Theme oder Profil.
Für Module, die auf drupal.org gehostet werden, wird die Versionsnummer vom Packager-Skript automatisch hinzugefügt. Sie sollten diese nicht manuell angeben und die Versionszeile vollständig weglassen.
Der Schlüssel core gibt an, mit welcher Drupal-Kernversion Ihr Modul kompatibel ist.
name, type und core sind Pflichtfelder.
Angabe von core_version_requirement
Warnung
Derzeit unterstützt DrupalCI keine Test-Patches, die core_version_requirement ändern.
Benötigen Sie core_version_requirement?
Beim Festlegen der Hauptversionsanforderungen gilt folgende Prioritätsreihenfolge:
- Wenn in composer.json eine Kernanforderung angegeben ist, hat diese höchste Priorität.
- Fehlt eine Kernanforderung in composer.json, hat core_version_requirement in info.yml Priorität gegenüber der nächsten Option.
- Ist core_version_requirement in info.yml nicht gesetzt, wird jede Version verwendet, die im Hauptmodul in den Abhängigkeiten von info.yml angegeben ist.
core_version_requirement bei Bedarf angeben
Der neue Schlüssel core_version_requirement in * .info.yml-Dateien für Module, Themes und Profile unterstützt jetzt semantische Versionsverwaltung, wie sie vom Composer-Projekt implementiert wird. Dies ermöglicht es Modulen, Themes und Profilen, anzugeben, dass sie mit mehreren Hauptversionen des Drupal-Kerns kompatibel sind.
Zum Beispiel kann ein Modul, das mit Drupal 8 und Drupal 9 kompatibel ist, eine info.yml-Datei wie diese haben:
name: My Module type: module core: 8.x core_version_requirement: ^8 || ^9
Dies bedeutet, dass das Modul mit allen Drupal-Versionen 8 und 9 kompatibel ist. core: wird hier benötigt, weil Drupal Core-Versionen vor 8.7.7 den Schlüssel core_version_requirement nicht erkennen.
Die meisten Module müssen jedoch veralteten Code entfernen, um mit Drupal 9 kompatibel zu sein. Deshalb können sie nicht mit allen Drupal 8 Versionen kompatibel sein.
Beispielsweise benötigt ein Modul, das mit Drupal-Versionen nach 8.8.0 sowie Drupal 9 kompatibel ist, eine info.yml-Datei wie diese:
name: My Module type: module core_version_requirement: ^8.8 || ^9
core: darf hier nicht verwendet werden, damit Drupal-Versionen vor 8.7.7 dieses Modul nicht installieren. Die Verwendung von core und core_version_requirement zusammen mit anderem Wert als core_version_requirement: ^8 || ^9 führt zu einem Fehler.
core_version_requirement darf nicht verwendet werden, um die Kernversion auf unter 8.7.7 einzuschränken. Zum Beispiel führt core_version_requirement: ^8.7 || ^9 zu einem Parsing-Fehler, da ^8.7 Versionen wie 8.7.0 einschließt, die den Schlüssel core_version_requirement nicht unterstützen.
Dies ist wichtig: Wenn Sie core_version_requirement mit etwas anderem als core_version_requirement: ^8 || ^9 verwenden, muss dieses Modul mit Drupal 8.7.7 oder neuer getestet werden.
Vollständiges Beispiel
Zusätzlich zu den grundlegenden Eigenschaften aus dem vorherigen Beispiel gibt es weitere optionale Eigenschaften. Hier ein vollständiges Beispiel:
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 # Hinweis: Fügen Sie die Eigenschaften 'version' oder 'project' nicht selbst hinzu. # Diese werden automatisch vom Packager auf drupal.org hinzugefügt. # version: 1.0 # project: 'hello_world'
- dependencies: Liste anderer Module, von denen Ihr Modul abhängt. Abhängigkeiten von Drupal Core oder Contrib-Modulen müssen im Format {project}:{module} angegeben werden, wobei {project} der Projektname ist, wie er in der Drupal.org-URL erscheint (z. B. drupal.org/project/views), und {module} der Maschinenname des Moduls ist. Abhängigkeiten können auch Versionsbeschränkungen enthalten, z. B. webform:webform (>=8.x-5.x). Beachten Sie, dass wenn Ihr Modul Abhängigkeiten von anderen bereitgestellten Modulen oder Bibliotheken hat, diese auch in der composer.json des Moduls deklariert werden müssen. Wenn Sie lokale benutzerdefinierte Module haben, die voneinander abhängen, können Sie {module}:{module} (oder {module}:{submodule} für Untermodule) verwenden.
- test_dependencies: Liste anderer Module (im gleichen Format wie dependencies), die für bestimmte automatische Tests Ihres Moduls in DrupalCI erforderlich sind, aber nicht als allgemeine Modulabhängigkeiten gelten (oder sich in Entwicklung als Modulabhängigkeiten befinden, aber noch nicht fertiggestellt sind). Beachten Sie, dass Sie Änderungen an test_dependencies in Ihrem Git-Repository committen müssen, bevor Sie einen Test ausführen, der davon abhängt – Sie können die Änderung nicht nur in demselben Patch wie den neuen Test in der info.yml-Datei unterbringen. Alternativ können Sie auch Composer für Testabhängigkeiten verwenden – siehe die zugehörige Dokumentation für weitere Informationen.
- configure: Wenn Ihr Modul ein Konfigurationsformular anbietet, können Sie hier die Route zu diesem Formular angeben. Dieses erscheint dann als Link auf der Seite „Erweiterungen“ (/admin/modules), wenn der Nutzer die Details aufklappt.
- php: 5.6: Definiert die minimale PHP-Version, die für Ihr Modul erforderlich ist. Nutzer können das Modul nicht aktivieren, wenn ihre PHP-Version älter ist. Dies hilft, Fehler zu vermeiden, wenn Ihr Modul neuere PHP-Funktionen nutzt, die in älteren Versionen nicht vorhanden sind.
- hidden: true: Verbirgt Ihr Modul aus der Modulliste auf der Seite Erweiterungen. Nützlich, wenn das Modul nur Tests enthält oder als Beispiel für Entwickler dient, die eine API eines Kernmoduls implementieren müssen. Sie können solche Module sichtbar machen, indem Sie $settings['extension_discovery_scan_tests'] = TRUE in Ihrer settings.php hinzufügen.
- required: true: Bedeutet, dass Ihr Modul aktiviert sein muss und nicht deaktiviert werden kann.
- Beschränkte Eigenschaften, die vom Drupal-Packager-System hinzugefügt werden. Fügen Sie diese nicht manuell in der info.yml in Ihrem Repository hinzu:
version
undproject
.
Debugging von .info.yml-Dateien
Modul wird nicht auf der Seite admin/modules angezeigt
- Stellen Sie sicher, dass die Info-Datei den Namen {machine_name}.info.yml trägt und sich im Stammverzeichnis des Moduls befindet.
- Stellen Sie sicher, dass die Datei korrekt formatiert ist. Beispielsweise dürfen vor dem Doppelpunkt (:) keine Leerzeichen stehen, aber danach muss ein Leerzeichen folgen. Die Formatierung sollte so aussehen wie im folgenden Beispiel.
- Stellen Sie sicher, dass die Datei die folgende Zeile enthält:
type: module
- Stellen Sie sicher, dass der Modulname mit einem Buchstaben oder Unterstrich beginnt. Unten ist ein Auszug aus der PHP-Dokumentation zu gültigen Funktionsnamen.
Funktionsnamen folgen denselben Regeln wie andere Bezeichner in PHP. Ein gültiger Funktionsname beginnt mit einem Buchstaben oder Unterstrich, gefolgt von beliebig vielen Buchstaben, Ziffern oder Unterstrichen. Regulärer Ausdruck: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.
Modul erscheint in admin/modules, aber das Kontrollkästchen ist deaktiviert
- Stellen Sie sicher, dass die Core-Kompatibilität auf 8.x gesetzt ist
core: 8.x
- Stellen Sie sicher, dass alle Modulabhängigkeiten vorhanden sind. Sie können die Modulinformationen erweitern, um zu sehen, welche Anforderungen fehlen.
Beachten Sie, dass einige Module aus dem Drupal 8 Kern entfernt wurden, während andere hinzugefügte Module in den Kern verschoben oder durch neue Kernmodule ersetzt wurden.
Modulbeschreibung ist leer
Denken Sie daran, dass der Wert description für die Beschreibung verwendet wird.
description: Example Module description.
composer.json Datei hinzufügen
Zusätzlich zur Deklaration von Abhängigkeiten zu anderen Modulen in der .info.yml-Datei, wenn Ihr Modul ein Contrib-Modul auf Drupal.org ist, das Änderungen an Modulabhängigkeiten testet und DrupalCI im Entwicklungsprozess verwendet, muss es eine composer.json geben, die diese Modulabhängigkeiten ausdrückt (DrupalCI kann Änderungen an Abhängigkeiten nur in Patches innerhalb composer.json erkennen, nicht in .info oder .info.yml Dateien).
Siehe auch
- YAML
- Änderungsbenachrichtigung von .info zu .info.yml
- API-Dokumentation für
InfoParser::parse()
- Drupal 7 modules. info Dateien
- Drupal 6 modules. info Dateien
- Theme-Definition mit .info.yml Datei
- Drupal 7 Module in Drupal 8 umwandeln Schritt 1: mymodule.info in mymodule.info.yml umwandeln
- Module können keine Stylesheets/Skripte mehr über ihre .info.yml Einträge hinzufügen
- composer.json hinzufügen
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.