logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

9.10.2. Drupal Fields API. Field Formatter: Anzeige von Datenfeldern auf der Seite

27/05/2025, by Ivan

Menu

In diesem Artikel betrachten wir Field Formatter, die es uns ermöglichen, die Anzeige von Feldern zu bearbeiten und sie auf der Seite darzustellen.

In früheren Artikeln haben wir den Feldtyp Link erstellt, in diesem Artikel sehen wir uns an, wie diese Felder auf der Seite angezeigt werden und welche Klasse dafür verantwortlich ist. Jedes Feld, das Sie über Drupal hinzufügen, kann auf der Seite angezeigt und seine Einstellungen auf der Seite „Anzeige verwalten“ bearbeitet werden.

Anzeige verwalten

In der Spalte Format können Sie auswählen, wie das Feld angezeigt wird. Diese Spalte entsteht durch Field Formatter Klassen. Schauen wir uns die Klasse aus dem Modul Link an, die den Link zur Seite anzeigt:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php

Die Annotation der Klasse zeigt, zu welchem Feldtyp dieser Formatter gehört.

/**
 * Plugin-Implementierung des 'link' Formatters.
 *
 * @FieldFormatter(
 *   id = "link",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

In dieser Datei interessiert uns vor allem die Methode viewElements(), diese Methode ist für die Ausgabe der Daten auf der Seite verantwortlich. Beachten Sie, dass der Formatter keine Anfragen an die Datenbank sendet, sondern die Daten aus der Variablen $items nimmt. Gerenderte Daten aus der Entität werden an $items übergeben. Somit haben wir eine klare Trennung der Verantwortlichkeiten der Klassen für Dateneingabe (Field Widget), Datenspeicherung (Field Storage) und Datenausgabe (Field Formatter). Das ist sehr praktisch, weil man Daten auf verschiedenen Ebenen cachen kann. Zum Beispiel macht es keinen Sinn, den Cache der Nodes zu löschen, wenn sich nur die Ausgabe oder die Einstellungen des Field Formatters ändern, da sich die Daten nicht ändern, sondern nur deren Darstellung. Es ist auch praktisch für Diskussionen und das Hinzufügen neuer Funktionen. Wenn man nur die Ausgabe ändern möchte, fügt man für den Feldtyp einen neuen Field Formatter hinzu und schreibt die Ausgabe.

Die LinkFormatter-Klasse hat außerdem die Methode settingsForm(), die für die Konfiguration des Formatters auf der Seite „Anzeige verwalten“ zuständig ist. Über die Form API können Sie Einstellungsfelder für das Feld hinzufügen und diese Einstellungen dann in der Konfiguration speichern.

Das Link-Modul hat noch einen weiteren Formatter:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php

Dieser erbt vom üblichen LinkFormatter, aber mit dem Unterschied, dass ein separates Template für diesen Formatter eingebunden wird:

core/modules/link/templates/link-formatter-link-separate.html.twig

So entsteht das HTML zur Ausgabe des Feldes durch die Weitergabe an das Template. Der Formatter erzeugt lediglich das Array $element, in dem über $delta die Daten für jeden Wert des Mehrfachfeldes geschrieben werden.

Wie Sie sehen, ist die Field API recht einfach und bequem zu verwenden. Im nächsten Artikel schreiben wir unseren eigenen Feldtyp mit Storage, Widget und Formatter.