Taxonomiebegriffsname als Kontextfilter für die Ansicht


18

In D7 war ich eine Ansicht gemäß einer Taxonomieausdruck filtern können Namen aus der URL übernommen. Ein Beispiel wäre diese URL

http://www.gbyte.co/tags/drupal-planet/rss.xml

"drupal-planet" würde in die Taxonomie-Term-ID konvertiert, die dann die Ansichtsergebnisse entsprechend filtert.

Jetzt habe ich eine entsprechende D8-Ansicht mit einem Kontextfilter "Content: Tags (field_tags)" eingerichtet, wobei field_tags das Taxonomiefeld ist. Die D8-Ansicht zeigt jedoch nur dann Ergebnisse an, wenn ich die tatsächliche Term-ID wie folgt in die URL übergebe:

http://www.gbyte.co/tags/9/rss.xml

Ich möchte, dass es auch mit dem Begriff Name funktioniert, wie es D7 tat. Fehlt die Funktionalität oder muss ich die Ansicht anders konfigurieren?


Gibt es Neuigkeiten zu diesem Thema? Ich habe das gleiche Problem
jeroen

Antworten:


20

Der in den Term-ID- Filter konvertierte Termname scheint in D8-Ansichten zu fehlen .

Eine Problemumgehung für den Site-Builder besteht darin, eine Beziehung und Taxonomiebegriffe auf dem Knoten hinzuzufügen und dann einen Taxonomiebegriff: Name- Filter zu Kontextfiltern unter Verwendung der oben genannten Beziehung hinzuzufügen . Aktivieren Sie das Kontrollkästchen Validierungskriterien angeben, setzen Sie Ihren Validator auf den Namen des Taxonomiebegriffs und aktivieren Sie die entsprechende Taxonomie, nach der gefiltert werden soll.


12
Site-Builder-Fallstrick in der D8-Benutzeroberfläche zum Hinzufügen von Kontextfiltern: Der Titel des Kontextfilters lautet "Name" und die Kategorie lautet "Taxonomiebegriff". Bei der Suche nach "Taxonomie" wird dieser Filter nicht aufgelistet, da nur nach dem Titel und der Beschreibung gesucht wird, nicht nach der Kategorie.
Keithm

1
Zusätzlich können Sie den Titel mit {{ arguments.name }}in den Einstellungen des Kontextfilters überschreiben .
Cptstarling


3

Zur Vervollständigung habe ich es zum Zeitpunkt des Schreibens der Frage geschafft, dieses Problem zu umgehen, indem ich den Taxonomiebegriffsnamen von der URL in eine Begriffs-ID in views_hook_pre_view () konvertierte und ihn dann als Eingabe für den Kontextfilter verwendete die Taxonomie-IDs akzeptiert.

Hier ist der Code für den Views-Hook:

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}

2

So erweitern Sie die Antwort von Shawn Conn:

  • Klicken Sie in der Ansichtskonfiguration unter "Erweitert" -> "Beziehungen" auf "Hinzufügen".
  • Wählen Sie nun 'Taxonomiebegriffe auf Knoten'
  • Wählen Sie auf dem nächsten Bildschirm das Vokabular "Tags" und fordern Sie die Beziehung an.
  • Klicken Sie nun unter Erweitert -> Kontextfilter auf "Hinzufügen".
  • Wählen Sie unter "Wenn der Filter NICHT verfügbar ist" die Option "Standardwert bereitstellen" und "Rohwert aus URL". Wählen Sie andere Optionen aus, die Ihren Anforderungen entsprechen.
  • Wählen Sie unter "Wenn Filter verfügbar ist oder ein Standardwert angegeben ist" die Option "Validierungskriterien angeben" und anschließend "Taxonomiebegriffsname" für den Validator aus. Wählen Sie das Vokabular "Tags" und klicken Sie dann auf Übernehmen.

Ich hoffe, das hilft!


1

Ich weiß nicht, ob Sie dieses Problem noch haben, aber ich konnte eine Beziehung für "Taxonomiebegriffe auf Knoten" mit dem gewünschten Taxonomie-Vokabular erstellen und dann einen Kontextfilter mit dieser Beziehung für "Taxonomiebegriff: Name" erstellen, der es Ihnen ermöglicht basierend auf dem Namen anstatt der TID zu validieren.


2
Ich habe das gleiche Problem in dieser Frage beschrieben, können Sie klarer sein. Ich habe bereits eine Beziehung festgelegt, aber der Kontextfilter funktioniert nur mit tid statt term name. Natürlich reden wir über D8. Danke im Voraus.
Vagner

1

@kiethm hat die richtige Vorgehensweise bereitgestellt. Wählen Sie in den Kontextfiltern "Name" und nicht "Taxonomiebegriffs-ID" aus und legen Sie die Validierungskriterien für die Verwendung von "Taxonomiebegriffsname" fest .


1

Hey, ich habe eine Weile nach dieser Antwort gesucht. Für alle anderen wie mich, die nach einer Lösung suchen, habe ich mich zum Teil von hier und den Ergebnissen von drupal.org und dann auch von folgenden Quellen in meinen Erfolg hineinversetzt: http://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Ich benutze Drupal 8 und Zirkon. Ich bin brandneu und verwende möglicherweise die falschen Begriffe. Ich wollte in "Panel first col 1" Kontext-Image-Links basierend auf der Kategorie der Seite erstellen, auf der sich jemand befindet. Was ich getan habe, war zu Struktur> Ansichten> Karussell (die Ansicht, die die Bilder in diesem Blockbereich enthält)> Erweitert> Durch Kontextfilter hinzufügen> Hat Taxonomiebegriffs-ID> Wählen Sie unter Standardwert bereitstellen: Taxonomiebegriffs-ID von URL (die erstellt wurde) Für mich macht das keinen Sinn, aber was auch immer)> dann habe ich alle drei Kontrollkästchen aktiviert: Standardfilter von Termseite laden, Standardfilter von Knotenseite laden, das ist gut für verwandte Taxonomieblöcke, Begriffe nach Vokabeln begrenzen. Dann habe ich für Vokabeln Kategorien angekreuzt.

PUH! Endlich! Vielen Dank an alle hier, die mich in die richtige Richtung gelenkt haben! Ich konnte nicht erklären, warum es funktioniert, total, aber was auch immer, es tut und ich werde weiterhin beschäftigt sein.


1

Ich habe ein winziges Modul geschrieben, um die fehlende Funktionalität wiederherzustellen und dies wieder richtig zum Laufen zu bringen:

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

Es fügt den Argumentvalidator "Termname in ID konvertieren" für Taxonomiebegriffe, die in "Kontextfiltern" in Ansichten verwendet werden, erneut hinzu. Weitere Informationen und Anweisungen finden Sie auf der Projektseite.

Viel Spaß, -Derek (dww)


0

Sie können dies tun, indem Sie Inhalt hinzufügen : Hat die Taxonomiebegriffs-ID im Kontextfilter, dann können Sie die Taxonomie im Kontext verwenden, indem Sie die Filterkriterien anpassen

Bildbeschreibung hier eingeben


Sie haben einen Screenshot von einer D7-Installation gemacht. In D8 gibt es keinen "Taxonomy Term" -Validator. Stattdessen gibt es "Taxonomiebegriffs-ID" oder "Taxonomiebegriffsname", die beide den Taxonomienamen von der URL nicht akzeptieren. Sie akzeptieren nur die ID.
gbyte.co

0

Ich habe dies in Drupal-8 erreicht, indem ich den Kontextfilter "Taxonomiebegriff: Name" verwendet habe.

Geben Sie dann den Standardwert ein. Geben Sie die Taxonomiebegriffs-ID von URL ein

Geben Sie dann die folgenden Validierungskriterien an:

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.