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.14.1. Erweiterung eines benutzerdefinierten Filter-Handlers für Drupal Views

25/05/2025, by Ivan

Im vorherigen Artikel haben wir uns angesehen, wie man das Views-Modul mit einer benutzerdefinierten Datenbank für das Modul Did this help? integriert:

https://www.drupal.org/project/did_this_help

In diesem Artikel überschreiben wir den Views-Filter für das Choice-Feld (Ja/Nein):

Ja/Nein Feld

Derzeit ist es ein normales Textfeld, das mit dem "string"-Handler erstellt wurde und die Eingabe eines Suchbegriffs erlaubt. Da wir aber nur zwei Optionen (Ja/Nein) haben, wäre es besser, ein Dropdown statt eines Textfeldes zu verwenden. Erstellen wir also die Datei /did_this_help/src/Plugin/views/filter/DidThisHelp.php:

<?php

namespace Drupal\did_this_help\Plugin\views\filter;

use Drupal\views\Plugin\views\filter\InOperator;

/**
 * Filtert anhand einer Liste von Ja/Nein-Optionen.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("did_this_help")
 */
class DidThisHelp extends InOperator {

}

Wir erben die Klasse DidThisHelp von der Elternklasse InOperator, welche einen Filter mit Auswahlfeld, Radio-Buttons oder Checkboxen bereitstellt, je nach Views UI-Einstellungen.

In der Methode getValueOptions() fügen wir die Liste der verfügbaren Optionen hinzu:

  /**
   * {@inheritdoc}
   */
  public function getValueOptions() {
    if (isset($this->valueOptions)) {
      return $this->valueOptions;
    }

    $this->valueOptions = [
      'yes' => $this->t('Yes'),
      'no' => $this->t('No'),
    ];

    return $this->valueOptions;
  }

Die Eigenschaft valueOptions ist in der Elternklasse InOperator definiert, daher müssen wir hier nur das Array mit Optionen angeben.

Als Ergebnis erhalten wir diesen Filter:

Ja/Nein Filter

Wenn wir den Filter als exponiert aktivieren, sehen wir dieses Dropdown-Menü:

Ja/Nein Dropdown

Sie können jede Filterklasse aus dieser Liste von Klassen überschreiben, die von Views und anderen Modulen bereitgestellt werden:

Name Pfad Beschreibung
Access core/modules/node/src/Plugin/views/filter/Access.php Filter nach node_access-Einträgen.
BooleanOperator core/modules/views/src/Plugin/views/filter/BooleanOperator.php Einfacher Filter zum Abgleichen von booleschen Werten.
BooleanOperatorString core/modules/views/src/Plugin/views/filter/BooleanOperatorString.php Einfacher Filter zum Abgleichen von booleschen Werten.
Broken core/modules/views/src/Plugin/views/filter/Broken.php Handler als Platzhalter für fehlende oder defekte Handler.
Bundle core/modules/views/src/Plugin/views/filter/Bundle.php Filterklasse zum Filtern nach Entity-Bundles.
Current core/modules/user/src/Plugin/views/filter/Current.php Filter-Handler für den aktuellen Benutzer.
Date core/modules/datetime/src/Plugin/views/filter/Date.php Date/Time Views Filter.
Equality core/modules/views/src/Plugin/views/filter/Equality.php Einfacher Filter für Gleich/ungleich-Vergleiche.
FilterPluginBase core/modules/views/src/Plugin/views/filter/FilterPluginBase.php Basisklasse für Views Filter Plugins.
InOperator core/modules/views/src/Plugin/views/filter/InOperator.php Einfacher Filter für mehrere auswählbare Optionen über Checkboxen.
LanguageFilter core/modules/views/src/Plugin/views/filter/LanguageFilter.php Filter für Sprach-Auswahl.
LatestRevision core/modules/views/src/Plugin/views/filter/LatestRevision.php Filter, um nur die neueste Revision einer Entität anzuzeigen.
ListField core/modules/options/src/Plugin/views/filter/ListField.php Filter-Handler, der List-Felder als Optionen nutzt.
ManyToOne core/modules/views/src/Plugin/views/filter/ManyToOne.php Komplexer Filter für „Viele-zu-Eins“-Beziehungen, z.B. Taxonomie-Begriffe oder Rollen.
ModerationStateFilter core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php Filter für den Moderationsstatus einer Entität.
Name core/modules/user/src/Plugin/views/filter/Name.php Filter-Handler für Benutzernamen.
NodeComment core/modules/comment/src/Plugin/views/filter/NodeComment.php Filter basierend auf dem Status von Kommentar-Node.
NumericFilter core/modules/views/src/Plugin/views/filter/NumericFilter.php Einfacher Filter für „größer als“ / „kleiner als“ Vergleiche.
Permissions core/modules/user/src/Plugin/views/filter/Permissions.php Filter-Handler für Benutzerrollen.
Roles core/modules/user/src/Plugin/views/filter/Roles.php Filter-Handler für Benutzerrollen.
Search core/modules/search/src/Plugin/views/filter/Search.php Filter-Handler für Suchbegriffe.
Standard core/modules/views/src/Plugin/views/filter/Standard.php Standardimplementierung des Basis-Filter-Plugins.
StatisticsLastUpdated core/modules/comment/src/Plugin/views/filter/StatisticsLastUpdated.php Filter für das neuere Datum des letzten Kommentars oder der letzten Node-Aktualisierung.
Status core/modules/file/src/Plugin/views/filter/Status.php Filter nach Dateistatus.
Status core/modules/node/src/Plugin/views/filter/Status.php Filter nach Veröffentlichungsstatus.
StringFilter core/modules/views/src/Plugin/views/filter/StringFilter.php Basistextfeldfilter zur Bearbeitung von String-Filterbefehlen wie Gleichheit, Like, Not Like, etc.
TaxonomyIndexTid core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php Filter nach Taxonomie-Begriff-ID.
TaxonomyIndexTidDepth core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTidDepth.php Filter-Handler für Taxonomiebegriffe mit Tiefenangabe.
UidRevision core/modules/node/src/Plugin/views/filter/UidRevision.php Filter zum Überprüfen von Revisionen, die ein bestimmter Benutzer erstellt hat.
UserUid core/modules/comment/src/Plugin/views/filter/UserUid.php Filter, der eine Benutzer-ID akzeptiert, um Knoten zu überprüfen, die der Benutzer gepostet oder kommentiert hat.
UserUid core/modules/tracker/src/Plugin/views/filter/UserUid.php UID-Filter zum Überprüfen von Knoten, die ein Benutzer gepostet oder kommentiert hat.
ViewsFilter core/modules/views/src/Plugin/Annotation/ViewsFilter.php Definiert eine Plugin-Annotation für Views-Filter-Handler.