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

Anzeigemodi: Ansichts- und Formularmodi

18/06/2025, by Ivan

Anzeigemodi

Es gibt Anzeigemodi (verfügbar unter admin/Structure/Display-Mode), die verschiedene Darstellungen von Inhaltseinheiten zum Anzeigen oder Bearbeiten bereitstellen. Zwei Arten von Anzeigemodi sind „Ansichtsmodi“ und „Formularmodi“. Beide Typen – Ansichtsmodi und Formularmodi – sind Beispiele für „Konfigurationsobjekte“. Hier ein Beispiel für einen exportierten Ansichtsmodus.

uuid: 15dc7aa9-13fd-4412-9c06-06d09f915d08
langcode: en
status: false
dependencies:
  module:
    - node
id: node.full
label: 'Full content'
targetEntityType: node
cache: true

Quelle: core.entity_view_mode.node.full.yml

Das wichtigste Attribut ist targetEntityType. Jeder Anzeigemodus (Ansichts- oder Formularmodus) ist genau einem Inhaltstyp zugeordnet. Es gibt Bezeichnungen, die für mehrere Anzeigemodi verwendet werden. Beispielsweise verwendet das Standardprofil von Drupal Core das Wort „Full“ in Ansichtsmodus-Bezeichnungen für Inhaltstypen wie Knoten, benutzerdefinierte Blöcke und Kommentare.

Ansichts- und Anzeige-Modi

  • Verwaltet zusammen unter: /admin/structure/display-mode/view
  • Aktiviert für jeden Bundel im Bereich „Benutzerdefinierte Anzeigeeinstellungen“ unter URLs wie: /admin/structure/types/manage/page/display (wobei „page“ das Knoten-Bundle ist)
  • Konfiguriert für Ansichtsmodi eines Bundels unter URLs wie: /admin/structure/types/manage/page/display/teaser (wobei „page“ das Knoten-Bundle und „teaser“ der Ansichtsmodus ist)

Die Idee der Ansichtsmodi ist älter als Drupal 8. Sie existierten bereits in Drupal 7. In Drupal 6 gab es das Konzept der „Build-Modi“. Ansichtsmodi erlauben es Drupal-Website-Bauwerkzeugen, wie etwa dem Entity Reference Feld, eine Entität in bestimmter Weise anzufordern. Beispiel: „song“ und „artist“ sind jeweils Knotentypen, und ein Song enthält ein Referenzfeld auf einen Künstler. Die „Full“-Ansicht des Song-Knotens könnte die „Teaser“-Ansicht des Künstler-Knotens einbetten. In diesem Beispiel ist „teaser“ der Ansichtsmodus, den der Künstler-Knoten verwendet, und „full“ der Ansichtsmodus, den der Song-Knoten verwendet.

Üblicherweise, wenn ein Entwickler den Künstler-Knoten im „Teaser“-Ansichtsmodus anzeigen möchte, konfiguriert er die Anzeige speziell für Künstler und Teaser. Das erfolgt auf der Registerkarte „Anzeige verwalten“ auf der Konfigurationsseite des Bundles. Ein Beispiel für diese Seite im Standard-Drupal-Core-Profil ist /admin/structure/types/manage/article/display.

Auf dieser Seite kann der Entwickler benutzerdefinierte Anzeigeeinstellungen der Felder für das Bundle festlegen (Feldreihenfolge und verwendeter Feld-Formatter) für jeden Ansichtsmodus. Nicht alle Ansichtsmodi müssen für jedes Bundle eine eigene Konfiguration haben. Im Beispiel haben nur die Ansichtsmodi „RSS“ und „Teaser“ eigene Einstellungen, alle anderen fallen auf die „Standard“-Konfiguration zurück. Die Zuordnung zwischen Entity-Bundle und Ansichtsmodus wird als View Display bezeichnet. @see EntityViewDisplayInterface

d8-view-modes

Formularmodi und (Formular-)Operationen

  • Verwaltet zusammen unter: /admin/structure/display-mode/form
  • Aktiviert für jeden Bundel unter URLs wie: /admin/structure/types/manage/page/form-display (wobei „page“ das Knoten-Bundle ist)
  • Konfiguriert für Formularmodi eines Bundels unter URLs wie: /admin/structure/types/manage/page/form-display/simple (wobei „page“ das Knoten-Bundle und „simple“ der Formularmodus ist)

Wie bei den Ansichtsmodi sind Formularmodi eine Möglichkeit, unterschiedliche Feldkonfigurationen für dasselbe Entity-Bundle zu erstellen. Formularmodi erlauben mehrere verschiedene Anordnungen und Widget-Konfigurationen der Felder, genau wie Ansichtsmodi verschiedene Anordnungen und Formatter-Konfigurationen erlauben.

In Drupal 7 gab es ein Feld und ein Feld-Widget auf der Registerkarte „Felder verwalten“ eines Inhaltstyps. Das ist jetzt aufgeteilt in zwei Tabs: „Felder verwalten“ und „Formularanzeige verwalten“. Dies gibt mehr Flexibilität darin, wie das Formular zum Hinzufügen/Bearbeiten von Inhaltstypen aussieht. Der Tab „Anzeige verwalten“ bleibt wie in Drupal 7. Zusätzlich zu Inhaltstypen kann man auch Ansichtsmodi für andere Entity-Typen wie Benutzer, Taxonomie, Kommentare und benutzerdefinierte Blöcke verwalten.

Zusätzlich zu den Formularmodi erlauben Formular-Operationen die Definition, welche Klassen für bestimmte Formulare verwendet werden, z.B. das Löschformular für einen Knoten. Die Klasse für das Löschformular unterscheidet sich von der Klasse für das Bearbeitungsformular. Diese Operationen werden in den Annotationen der Entity definiert.

Hier ein Beispiel, das zwei benutzerdefinierte Formularoperationen sowie den Standard-Formularmodus in dasselbe Formular MyEntityForm einbindet. Stellen Sie sicher, dass dieses Formular ContentEntityForm erweitert.

/**
 * @ContentEntityType(
 *   id = "myentity",
 *   handlers = {
 *     "form" = {
 *       "default" = "Drupal\myentity\Form\MyEntityForm",
 *       "add" = "Drupal\myentity\Form\MyEntityForm",
 *       "edit" = "Drupal\myentity\Form\MyEntityForm",
 *       "delete" = "Drupal\myentity\Form\MyEntityDeleteForm",
 *     },
 *   },
 * )
 */

Wenn Sie Formular-Operationen für bestehende Entities hinzufügen oder ändern wollen, können Sie hook_entity_type_build und hook_entity_type_alter verwenden.

Derzeit muss eine Operation für den verwendeten Formularmodus explizit konfiguriert sein. Im Gegensatz zu Ansichtsmodi (die auf die Standard-View zurückfallen, wenn keine Ansichtskonfiguration für einen Modus existiert), verwenden Formularmodi standardmäßig nicht die „default“-Operation. Das wird als Bug betrachtet. Siehe #2511720: Allow form modes to fall back to default operation if not explicitly set.

Um ein Formular im benutzerdefinierten Formularmodus anzuzeigen, verwenden Sie _entity_form in Ihrer Route. Zum Beispiel, um das benutzerdefinierte „Editieren“-Formular von MyEntity anzuzeigen, verwenden Sie diese Route:

entity.myentity.edit_form:
 path: '/myentity/{myentity}/edit'
 defaults:
   _entity_form: myentity.edit
   _title: 'Edit MyEntity'
 requirements:
   _permission: 'edit myentity entities'

Ein weiteres Beispiel:

Es ist üblich, dass Registrierungsformulare für Benutzer nicht alle benutzerdefinierten Felder anzeigen. Nach der Registrierung erhalten sie Zugriff auf das Profilbearbeitungsformular mit zusätzlichen Feldern. Hier ein Beispiel für eine solche Konfiguration:

  • Klicken Sie auf „Feld hinzufügen“ unter /admin/config/people/account/fields
  • Wählen Sie im nächsten Bildschirm den Feldtyp „Liste (Text)“
  • Geben Sie ihm das Label „Abonnementliste“
  • Klicken Sie auf „Speichern und fortfahren“
  • Füllen Sie die Liste der erlaubten Werte, z.B.:

           1 | Nachrichten
           2 | Wichtige Ankündigungen
           3 | Angebote, Rabatte, Vergünstigungen
           4 | Partnernachrichten

  • Klicken Sie auf „Speichern“
  • Setzen Sie es als Pflichtfeld
  • Wählen Sie alle vier Elemente als Standardauswahl und speichern Sie
  • Wechseln Sie auf den Tab „Formularanzeige verwalten“
  • Unten in der Liste der Felder befindet sich der Bereich „Benutzerdefinierte Anzeigeeinstellungen“, klappen Sie diesen auf
  • Aktivieren Sie im Feld „Benutzerdefinierte Anzeigeeinstellungen für die folgenden Formularmodi verwenden“ die Option „Registrieren“ und speichern Sie
  • Sie haben nun einen zweiten Tab mit dem Namen „Registrieren“
  • Deaktivieren Sie das Feld „Abonnementliste“, indem Sie es in den Bereich „Deaktiviert“ ziehen. Speichern Sie
  • Wechseln Sie zum Tab „Anzeige verwalten“ und stellen Sie sicher, dass das Feld „Abonnementliste“ aktiviert ist

Melden Sie sich von der Seite ab und besuchen Sie das Registrierungsformular. Das Feld Abonnementliste wird nicht angezeigt.
Nach der Anmeldung ist das Feld Abonnementliste im Profilbearbeitungsformular verfügbar.