Articles

Im Gegensatz zu Drupal 7 ist das Erstellen mehrerer Blockinstanzen zur Platzierung auf Ihrer Website in Drupal 8 eine einfache Aufgabe.
In diesem Leitfaden erfahren Sie, wie Sie programmgesteuert einen Block zur Block-Layout-Oberfläche hinzufügen, wie Sie ein (administratives) Konfigurationsformular in den Block integrieren und es verarbeiten. Schließlich erfahren Sie, wie Sie Standard-Konfigurationswerte für das Formular hinzufügen und anzeigen.


Blöcke in Drupal 8 sind Instanzen von Block-Plugins.
Der Block-Manager von Drupal durchsucht Ihre Module nach Klassen, die die Annotation @Block enthalten.
Das folgende Beispiel verwendet die Annotation @Block mit den Eigenschaften „id“ und „admin_label“, um einen benutzerdefinierten Block zu definieren.


Nun wollen wir also die Möglichkeit hinzufügen, dass der Site Builder für jede Instanz unseres benutzerdefinierten Blocks einen Teil der Konfiguration eingibt. Denken Sie immer daran, dass alle Site-Building-Konfigurationen in Drupal 8 von der Entwicklungsseite exportiert und auf die Live-Seite importiert werden können (bekannt als Konfigurationsverwaltung). Als Modulbauer können Sie auch eine Standardkonfiguration bereitstellen, die das Formular automatisch ausfüllt, wenn der Site Builder einen neuen Block erstellt.


Fügen Sie die folgende Methode zur Klasse HelloBlock hinzu. In diesem Beispiel befindet sie sich in der Datei src/Plugin/Block/HelloBlock.php, aber sobald Sie anfangen, mehr objektorientiert zu denken, ist der physische Speicherort in der Dateistruktur weniger wichtig als der Namespace. Wenn Sie ein sehr erfahrener OO-Programmierer sind, halten Sie beide eng synchronisiert.


Um die Konfiguration von Block-Instanzen zu verwenden, können wir die Methode build() der Klasse HelloBlock wie folgt ändern:
/** * {@inheritdoc} */ public function build() { $config = $this->getConfiguration(); if (!empty($config['hello_block_name'])) { $name = $config['hello_block_name']; } else { $name = $this->t('to no one'); } return [ '#markup' => $this->t('Hello @name!', [ '@name' => $name, ]), ]; }


Teil V aus dem Praktischen Leitfaden zur Erstellung grundlegender Drupal 8 Module
Von .info zu Tests, nur die Grundlagen
Erinnern Sie sich, am Anfang dieser Lektion sagte ich, wir würden einen Block mit einem Formular definieren? Nun, jetzt ist die Zeit gekommen, dies anzugehen.


Diese Anleitung enthält Anleitungen zur Erstellung eines eigenen Feldtyps, Widgets und Formatierers in Drupal 8.


Dieses Tutorial wurde ursprünglich auf Web Wash veröffentlicht. Allerdings fragte Berdir, ob ich das Tutorial hier veröffentlichen könnte, also ist es jetzt hier.
Ein Modul in Drupal 7 ermöglicht das Speichern von Code-Beispielen/Snippets in einem Feld. Es enthält ein benutzerdefiniertes Feld namens „Snippets Field“ und zeigt drei Formularelemente an: Beschreibung, Quellcode und Syntax-Hervorhebungsmodus (welche Programmiersprache).


In Drupal 8 sind alle Feldtypen, Widgets und Formatierer Plugins.
Sie werden automatisch entdeckt, wenn sie in der erwarteten Verzeichnisstruktur liegen und die korrekte Annotation verwenden.
Die Verzeichnisstruktur für ein Modul, das alle drei implementiert, sieht folgendermaßen aus:
foo_bar_fields


Feldtypen definieren die Eigenschaften und das Verhalten von Feldern. Feldtypen werden als Plugins definiert, daher empfiehlt es sich, die Plugin-API zu studieren, bevor man einen neuen Feldtyp schreibt.
Um einen Feldtyp in Drupal 8 zu erstellen, benötigen Sie eine Klasse mit der Annotation FieldType.
Der Speicherort der Feldtyp-Klasse sollte in MODULE_NAME/src/Plugin/Field/FieldType liegen.
Beispiel: /modules/foo/src/Plugin/Field/FieldType/BazItem.php
