it-swarm.com.de

Wie zeige ich die Anzahl der Knoten mithilfe eines Taxonomiebegriffs an?

Jemand fragte Ansichten und Knotenanzahl für Taxonomiebegriffe . Ich versuche das gleiche zu tun, aber mit Drupal 8.

Ich folge den in dieser Frage angegebenen Schritten und erhalte eine Zählung des Taxonomiebegriffs (sagen wir "Frucht"), aber wenn ich darauf klicke, gibt es eine Seite, auf der "Frucht" mehrmals aufgelistet ist, anstatt die Seiten selbst aufzulisten.

Wenn ich nicht zähle. Wenn ich dann auf den Taxonomiebegriff klicke, erhalte ich die richtige Listenseite (z. B. Apple, orange, Birne).

Kann mir jemand dabei helfen?

4
JDN

Folgendes hat für mich in Drupal-8.0.6 funktioniert.

Beachten Sie, dass aus irgendeinem Grund "Inhalts-NID" nicht als Feld für die Beziehung "Inhalt mit Begriff" angeboten wird. Daher habe ich stattdessen die UUID verwendet und es hat funktioniert.

  1. Erstellen Sie eine Taxonomie-Termansicht (mit einem Feld Taxonomy term: name, Das normalerweise mit der Term-Seite verknüpft ist).
  2. Beziehung> Taxonomiebegriff: Inhalt mit Begriff (wird node genannt).
  3. Erweitert: Aggregation verwenden: Ja
  4. Feld hinzufügen> Content: UUID Mit Beziehung node
  5. Aggregationstyp für UUID = Anzahl

Möglicherweise müssen Sie mit COUNT vs COUNT distinct Spielen.

Wenn Sie möchten, dass die Anzahl in Klammern wie folgt angezeigt wird:

linked_term (count)

Verwenden Sie im UUID-Feld Ergebnisse neu schreiben:

({{ uuid }})

Beachten Sie, dass die neue Notation der Vorlagensprache Twig) verwendet wird.

Anders als in der anderen Antwort für Drupal 8.0.6 angegeben) gibt es in Drupal 8.1.3) ein Feld für die Knoten-ID.

Mit Drupal 8.1.3) habe ich folgende Schritte ausgeführt:

  • Ich habe eine Ansicht von Taxonomie-Begriffen erstellt und sie auf die eines Vokabulars beschränkt (in meinem Fall Blog-Kategorien)
  • Als Beziehung habe ich Inhalt mit field_blog_category hinzugefügt, wobei field_blog_category das Feld ist, das ich einem von mir erstellten Inhaltstyp hinzugefügt habe
  • Ich habe Aggregration verwenden überprüft
  • Ich habe [~ # ~] id [~ # ~] (aufgeführt unter der Kategorie Inhalt) als neues Feld hinzugefügt
  • Ich setze Aggregrationstyp auf Count für das neue Feld (durch Klicken auf Aggregration-Einstellungen für dieses Feld)

Was ich bekam, war das folgende (wie aus der Vorschau ersichtlich).

(screenshot

Befolgen Sie die Schritte, die ich aufgelistet habe, aber verwenden Sie [~ # ~] uuid [~ # ~] als neues Feld (immer noch unter der Kategorie Inhalt aufgeführt) hätte das gleiche Ergebnis erhalten.

Wie erwartet hat sich auch die resultierende Abfrage unter Verwendung der Knoten-ID oder ihrer UUID nicht wesentlich geändert.

Verwenden der Knoten-ID

SELECT taxonomy_term_field_data.name AS taxonomy_term_field_data_name, COUNT(field_blog_category_taxonomy_term_field_data.nid) AS field_blog_category_taxonomy_term_field_data_nid, MIN(taxonomy_term_field_data.tid) AS tid, MIN(field_blog_category_taxonomy_term_field_data.nid) AS field_blog_category_taxonomy_term_field_data_nid_1
FROM 
{taxonomy_term_field_data} taxonomy_term_field_data
LEFT JOIN {node__field_blog_category} node__field_blog_category ON taxonomy_term_field_data.tid = node__field_blog_category.field_blog_category_target_id AND node__field_blog_category.deleted = '0'
LEFT JOIN {node_field_data} field_blog_category_taxonomy_term_field_data ON node__field_blog_category.entity_id = field_blog_category_taxonomy_term_field_data.nid
WHERE (( (taxonomy_term_field_data.vid IN  ('blog_categories')) ))
GROUP BY taxonomy_term_field_data_name
LIMIT 21 OFFSET 0

Verwenden der Knoten-UUID

SELECT taxonomy_term_field_data.name AS taxonomy_term_field_data_name, COUNT(field_blog_category_taxonomy_term_field_data__node.uuid) AS field_blog_category_taxonomy_term_field_data__node_uuid, MIN(taxonomy_term_field_data.tid) AS tid, MIN(field_blog_category_taxonomy_term_field_data.nid) AS field_blog_category_taxonomy_term_field_data_nid
FROM 
{taxonomy_term_field_data} taxonomy_term_field_data
LEFT JOIN {node__field_blog_category} node__field_blog_category ON taxonomy_term_field_data.tid = node__field_blog_category.field_blog_category_target_id AND node__field_blog_category.deleted = '0'
LEFT JOIN {node_field_data} field_blog_category_taxonomy_term_field_data ON node__field_blog_category.entity_id = field_blog_category_taxonomy_term_field_data.nid
INNER JOIN {node} field_blog_category_taxonomy_term_field_data__node ON field_blog_category_taxonomy_term_field_data.nid = field_blog_category_taxonomy_term_field_data__node.nid
WHERE (( (taxonomy_term_field_data.vid IN  ('blog_categories')) ))
GROUP BY taxonomy_term_field_data_name
LIMIT 21 OFFSET 0
1
kiamlaluno

Stieß auf einen Drupal Kernfehler mit der Taxonomie Inhalt mit Termbeziehung. Patch in https://www.drupal.org/project/drupal/issues/2674832#comment-10890660) Lassen Sie mich andere Inhaltsfelder zum Filtern verwenden (Inhaltstyp, nicht nur UUID), um eine Zählung zu erhalten.

0
YesCT