it-swarm.com.de

Wie werden die unmittelbaren Kinder eines Taxonomiebegriffs auf seiner Seite angezeigt?

Wie kann ich in Drupal 8) die unmittelbaren untergeordneten Elemente eines Taxonomiebegriffs auf seiner Seite anzeigen?

Zum Beispiel habe ich ein hierarchisches Taxonomie-Vokabular wie dieses (vereinfacht):

Tiere
- Fische
---- Blennies
------ Gelber Blenny
------ Green Blenny
---- Grundeln
------ Blauer Grundel
------ Roter Grundel

Auf der Seite für den Taxonomiebegriff "Fische" (z. B. Steinfrüchte/Fische) möchte ich, dass Blennies und Gobies (aber nicht ihre Kinder) erscheinen.

Ich habe versucht, Kontextfilter unter Struktur> Ansichten> Erweitert zu konfigurieren, konnte dies jedoch nicht.

2
Nick Hope

Angesichts Ihrer zusätzlichen Informationen, dieser kurzen Schritt-für-Schritt-Anleitung, sollten Sie die gewünschten Ergebnisse erzielen:

  • Duplizieren/deaktivieren Sie die ursprüngliche Taxonomie-Ansicht/ändern Sie sie wie folgt.
  • Entfernen Sie in "Erweiterte/Kontextfilter" "Inhalt: Hat Taxonomie-Term-ID"
  • Fügen Sie einen neuen Kontextfilter "Inhalt: Hat Taxonomie-Term-ID (mit Tiefe)" hinzu:
    • Tiefe: 1 (zeigt auch Inhalte für die untergeordneten Begriffe der nächsten Stufe an)
    • Wenn der Filterwert NICHT in der URL enthalten ist:
      • Geben Sie den Standardwert an
      • Typ: Taxonomie-Term-ID von URL
      • Standardfilter von der Term-Seite laden: aktiviert
    • Wenn der Filterwert IS in der URL oder ein Standardwert angegeben ist:
      • Titel überschreiben: aktiviert, verwenden Sie die Variable {{ arguments.term_node_tid_depth }} (Dadurch wird sichergestellt, dass der Begriff Name im Seitentitel angezeigt wird.)
      • (Optional, aber dringend empfohlen) Validierungskriterien angeben: aktiviert
      • Validator: Taxonomie-Term-ID
      • Wortschatz: (Ihr Wortschatzname überprüft)
      • (Optional) Benutzer validieren hat Zugriff auf den Taxonomiebegriff: aktiviert

Wenn Sie ein Bild anzeigen möchten, möchten Sie möglicherweise auch das Format der Ansicht von Inhalt in Felder ändern und das Bildfeld Ihres getaggten Inhalts hinzufügen.

Bitte beachten Sie, dass der Tiefenmodifikator zu Duplikaten führen kann. Daher sollten Sie in den Abfrageeinstellungen des Abschnitts "Erweitert"/"Andere" die Option "Unterscheiden" aktivieren.

Sie können Ihre Ansichtsergebnisse weiter verbessern, indem Sie Beziehungen zu den tatsächlichen Begriffen, dem Begriffsnamen und Gruppierungen hinzufügen. Dies scheint jedoch für Ihre ursprüngliche Frage nicht möglich zu sein.

Ich habe die obigen Schritte für eine saubere D8-Testinstanz mit automatisch generierten Inhalten und Vokabeln ausgeführt, und es hat einwandfrei funktioniert.

BEARBEITEN:

Ihren Kommentaren zufolge möchten Sie tatsächlich nur Felder der untergeordneten Taxonomiebegriffe anzeigen. So geht's:

  • deaktivieren Sie die Standardtaxonomieansicht
  • erstellen Sie eine neue Ansicht
  • wählen Sie in Ansichtseinstellungen/Anzeigen die Option "Taxonomiebegriff".
  • "of Type" ist dein Wortschatz
  • aktivieren Sie unter "Seiteneinstellungen" die Option "Seite erstellen" und geben Sie die URL "Taxonomie/Begriff /%" an.
  • klicken Sie auf "Speichern und bearbeiten".
  • fügen Sie im Filter "Erweitert/Kontext" den Filter "Taxonomiebegriff: Übergeordnet" hinzu.
  • wenden Sie die gleichen Einstellungen wie in meiner obigen Lösung auf den Kontextfilter an, mit Ausnahme der Titelvariablen, die jetzt '{{argument.tid}}' sein sollte.

Als Ergebnis sollten Sie die untergeordneten Elemente der ersten Ebene des Taxonomiebegriffs in der Ansicht sehen.

Wenn Sie nur einige ihrer Eigenschaften anzeigen möchten, wechseln Sie den Ansichtstyp zu Felder und fügen Sie das Feld hinzu, das Sie anzeigen möchten.

2
Mario Steinitz

In der Ansicht :

wenn Sie die Standardansicht taxonomy_term ändern/duplizieren, sollten Sie den Standardkontextfilter ( mit der Taxonomiebegriffs-ID ) entfernen und einen neuen hinzufügen "Hat Taxonomie-Term-ID (mit Tiefe)" , mit einer Tiefe von 1.

Programmatisch :

$terms = \Drupal::service("entity_type.manager")->getStorage("taxonomy_term")->loadTree("<VID>","<TID of Fishes>", 1 /* the depth : 1 */, true /* to load entities */);
foreach($terms as $term){
  //rendering whatever...
  print $term->label();
}
0
Oulalahakabu