it-swarm.com.de

So verwenden Sie Token als Filterwert in Ansichten

Ich suche nach einer Lösung, mit der ich Token in Ansichtsfilterwerten verwenden kann. Wenn ich beispielsweise das Textfeld 'my_custom_text' habe, hätte ich gerne einen Filter, mit dem ich den Operator 'Ist gleich' und einen Token-Wert anstelle einer fest codierten Zeichenfolge verwenden kann.

Beachten Sie, dass ich keine Kontextfilter verwenden kann, da ich nur wenige Filter habe, die ODER-verknüpft werden müssen.

Gibt es dafür ein Modul oder muss ich das selbst von Grund auf codieren?

5
SiliconMind

Also hier ist, was ich mir irgendwann ausgedacht habe.

  1. Ich wollte global php filter Nicht verwenden, da dies nur die Ergebnisse einschränkt, die bereits aus der Datenbank geladen wurden. In meinem Fall würde dies bedeuten, 1000 Zeilen zu laden, nur um 2 davon anzuzeigen. Nicht zu weise würde ich sagen.
  2. Ich wollte hook_views_query_alter Nicht verwenden, da dies bedeuten würde, dass ich mich jedes Mal in den Code einarbeiten müsste, wenn jemand eine Ansicht ändern oder erstellen möchte.

Am Ende habe ich meinen eigenen Views-Handler geschrieben, der einen der spannenden erweitert. Ich habe auch hook_field_views_data_alter Verwendet, um meinen Handler anstelle der Standardeinstellung anzuschließen.

Diese Lösung funktioniert ganz gut. Custom Handler ist eine sehr robuste Lösung und recht einfach zu implementieren ... sobald Sie wissen, wie es geht;)

0
SiliconMind

Verwenden Sie Kontextfilter anstelle von Filterkriterien.

In Drupal 8) müssen Sie zum Zeitpunkt des Schreibens auch das Modul views_argument_token installieren.

Wenn Sie einen Kontextfilter hinzufügen, wählen Sie im Popup-Fenster die Option "Standardwert bereitstellen". Von da an sollten die restlichen Einstellungen intuitiv sein.

1
Francisco Luz

Sie können hook_views_query_alter Verwenden, um Ihre Arbeit zu erledigen.

implementieren Sie diesen Hook in Ihrem benutzerdefinierten Modul und beschränken Sie sich mit der if-Anweisung auf Ihren Ansichtsnamen und bearbeiten Sie die Ansichtsabfrage.

0
Yusef