Wie erstelle ich mit Views 3 einen verschachtelten Baum mit Begriffen und Knoten?

22

Ich muss etwas Ähnliches erstellen:

Farben (Wortschatz)

  • Rot (Begriff)
    • Dunkel (Begriff)
      • Knoten 1
      • Knoten 2
    • Licht (Begriff)
      • Knoten 3
      • Knoten 4
  • Blau (Begriff)
    • Knoten 5
    • Knoten 6
  • Grün (Begriff)
    • Knoten 7
    • Knoten 8

(Aufzählungszeichen sind Einrückungen.)
Gibt es eine Möglichkeit, dies mit Drupal 7 und Ansichten 3 zu tun? Wenn nicht, gibt es einen anderen Weg, dies zu tun?

iStryker
quelle
Zur Verdeutlichung - wie ich Ihre Frage vielleicht falsch verstanden habe - möchten Sie eine solche Struktur auf einer Seite darstellen?
Maciej Zgadzaj
Ja auf nur 1 Seite
iStryker

Antworten:

15

Dank refino habe ich mit den folgenden Modulen eine schöne Lösung gefunden:

Nachfolgend finden Sie die Erklärung:

  1. Erstellen Sie zuerst eine neue Taxonomie (nennen wir sie "Ordner")
  2. Erstellen Sie dann einen neuen Inhaltstyp (nennen wir ihn "Element") mit einem Termbezugsfeld für die Taxonomie "Ordner"
  3. Erstellen Sie eine neue "Content" -Ansicht (nennen wir sie "Elementansicht")
  4. Wählen Sie Feldanzeige
  5. Fügen Sie Ihrem Begriffsreferenzfeld einen Kontextfilter hinzu
  6. Erstellen Sie eine neue "Taxonomy" -Ansicht (nennen wir sie "Folder Tree")
  7. Fügen Sie 2 Felder hinzu (Termname und Term-ID). Das zweite Feld kann von der Anzeige ausgeschlossen werden
  8. In Beziehung: Fügen Sie einen "Elternbegriff" hinzu
  9. Fügen Sie ein drittes Feld (Term-ID) hinzu und weisen Sie es Ihrer übergeordneten Beziehung zu. Dieses Feld kann von der Anzeige ausgeschlossen werden
  10. Wählen Sie Format "Baum (Adjacency-Modell)" und wählen Sie in den Parametern: Geordnete Liste + Hauptfeld (Ihre erste TID), Elternfeld (Ihre TID, die der Elternbeziehung zugewiesen ist). Sie sollten jetzt einen schönen Baum haben, in dem alle Begriffe verschachtelt sind
  11. Fügen Sie ein viertes Feld "Global: View" hinzu (dies ist im Lieferumfang von Views Field View enthalten) und wählen Sie Ihre "Elementansicht" aus. Zeigen Sie Master add [tid] im Textfeld Arguments an

Ich hoffe das hilft

Prost

Edit by iStryker : Das habe ich bekommen. Das einzige, was ich geändert habe, war, die Elementansicht in eine Tabellenansicht umzuwandeln und die Standardklassen (zeilen- und streifenweise) zu entfernen.

Bild des Endprodukts von iStryker

Fred
quelle
Eine große Hilfe von diesem Kommentar. Nur eine kleine Anmerkung: Möglicherweise möchten Sie die Felder (Verwaltungstitel) umbenennen, da in den Dropdown-Listen der VT-Einstellungen beide Felder "Term-ID" nicht unterscheidbar sind.
Artur
Diese Antwort brachte mir 90%. Ich musste Standardklassen für jedes Feld entfernen. Entfernen Sie Tabellenklassen in der Ansicht 'Elementansicht'. Thema ein wenig
iStryker
Ich habe einen Schritt hinzugefügt, um Duplikate in der Inhaltsansicht zu reduzieren. Außerdem ist das Feld "Argumente" in Global: View jetzt mit "Kontextfilter" beschriftet, und das zu verwendende Token lautet "[! Tid]".
Andere Maschinen
Ist dies möglich, aber mit organischen Gruppen anstelle von Taxonomie?
IamOnStage
14

Ich habe drei Ansichten in Drupal 7.8 und Views 3 + Views Field erstellt, wobei ich eine Ansicht mit Include View in eine andere verschachtelt habe, und ich habe ein solches Ergebnis erhalten (angehängt). Bildbeschreibung hier eingeben

Schritt für Schritt, wie es geht:

  1. Erstelle den Wortschatz "Farben" und fülle ihn mit Tags aus.

  2. Erstellen einer neuen Ansicht von Taxonomieknoten Farben - Ich nenne es "Knoten von Farben"

2.1 Formattabelle, Einstellungen: Gruppierungsfeld: Taxonomiebegriff: Name

2.2 Erweiterte Kontextfilter: Taxonomiebegriff: Übergeordneter Begriff

2.3 Erweiterte Beziehungen: Taxonomiebegriff: Inhalt unter Verwendung von Farbe

2.4 Felder festlegen: Taxonomiebegriff: Term-ID, Taxonomiebegriff: Name, (field_color) Inhalt: Titel

2.5 Filterkriterien: Taxonomiebegriff: Wortschatz (= Farben)

2.6 Wenn Sie möchten, können Sie auch "Von der Anzeige ausschließen" für Term-ID, Taxonomiebegriff: Name festlegen

2.7 Pfad festlegen: / knoten-der-farben /%

2.8 Festlegen des Verhaltens "Keine Ergebnisse": Global: Ansichtsbereich (wir werden später darauf zurückkommen) 2.9 speichern

3.Erstelle eine neue Ansicht der Taxonomieknoten. Farben - Ich nenne es "Knoten der Farben 2".

3.1 Tabelle formatieren, Einstellungen: Gruppierungsfeld: keine

3.2 Erweiterte Kontextfilter: Taxonomiebegriff: Begriff-ID

3.3 Erweiterte Beziehungen: Taxonomiebegriff: Inhalt unter Verwendung von Farbe

3.4 Felder setzen: Taxonomiebegriff: Term-ID, Taxonomiebegriff: Name, (field_color) Inhalt: Titel

3.5 Filterkriterien: Taxonomiebegriff: Wortschatz (= Farben)

3.6 Wenn Sie möchten, können Sie auch "Von der Anzeige ausschließen" für Term-ID, Taxonomiebegriff: Name festlegen

3.7 Pfad festlegen: / knoten-der-farben-2 /%

3.8 Kein Ergebnisverhalten einstellen: Global: kein

3.9 Speichern

Gehen Sie zurück und bearbeiten Sie "Nodes of Colors" erneut

4.1 gehe zu Set no results behaviour: Global: View area

4.2 Setzen Sie die Ansicht auf Einfügen: Ansicht: node_of_colors2 Anzeige: Seite

4.3 set Vererben Sie kontextbezogene Filter

4.4 speichern

5 Kehren Sie wieder zu Ansichten zurück (Begriff eingeben)

5.1 Eine neue Ansicht der Taxonomieknoten erstellen Farben - ich nenne es "Farbbaum"

5.1 Tabelle formatieren, Einstellungen: Gruppierungsfeld: keine

5.2 Erweiterte Kontextfilter: keine

5.3 Erweiterte Beziehungen: Taxonomiebegriff: Elternbegriff

5.4 Felder festlegen: Taxonomiebegriff: Term-ID, Taxonomiebegriff: Term-ID, Taxonomiebegriff: Name, Ansicht: Include-Ansicht (Include-Ansicht)

5.5 Filterkriterien (1): Taxonomiebegriff: Wortschatz (= Farben)

5.6 Filterkriterien (2): (Übergeordneter) Taxonomiebegriff: Begriff

5.7 Wenn Sie möchten, können Sie auch "Von der Anzeige ausschließen" für die Ausdrucks-ID und eine Bezeichnung für die Einschlussansicht festlegen

5.8 Setze Pfad: / colors-tree

5.9 Kein Ergebnisverhalten einstellen: kein

5.10 speichern

... und das sollte es endlich sein.

Refineo
quelle
können Sie "5.4 Felder festlegen ... Ansicht: Ansicht einschließen" ein bisschen mehr klären. Ich sehe dafür nirgendwo eine Option. Thanks
uwe
Es tut mir leid, dass ich nicht geschrieben habe, ich habe Views 7.x-3.0-rc1 + Views-Feld 7.x-1.0-rc1
Refineo
OK danke. Ich habe auch einige Anweisungen in der Warteschlange befolgt. Drupal.org/node/1171604
uwe
Wow, diese Antwort hat innerhalb von 7 Tagen eine massive positive Resonanz erhalten. Hat das jemand getestet, oder haben Sie gerade abgestimmt, weil @Refineo die ausführlichste Antwort gegeben hat?
iStryker,
Ich habe es noch einmal versucht und es hat nicht funktioniert. Ich hasste Sie alle, die diese Frage aufgeworfen haben, ist die letzte Woche ohne Prüfung
iStryker
4

Ich habe die D6- oder D7-Version nicht selbst ausprobiert, aber ich dachte, ich würde sie erwähnen, falls es das ist, wonach Sie suchen: Views Tree Module - D7 progress

Bearbeiten : Es gibt jetzt eine D7-Version, checke die Modulhomepage Views Tree

nmc
quelle
3

Wenn Sie das Video von der URL erhalten möchten, verwenden Sie den folgenden Code.

$vid = $_GET['vid'];
$tid = 0;
$level = 0;
print taxonomy_tree($vid, $tid, $level);
function taxonomy_tree($vid, $tid = 0, $level) {
  $children = taxonomy_get_children($tid, $vid);
  $output = '';
  if ($children) {
    $output .= '<ul>'; 
    foreach ($children as $child) {
      $level++;
      $output .= '<li class="taxonomy-tree-lvl' . $level . ' ">'; 
print $level;
      $output .= l($child->name, 'taxonomy/term/'. $child->tid) . '(' . taxonomy_term_count_nodes($child->tid) . ')'; 
      $output .= taxonomy_tree($vid, $child->tid, $level);
      $output .= '</li>';

      $level--; 
    }
    $output .= '</ul>'; 
  }

  return $output;

}

Oder verwenden Sie den folgenden Code.

$vocabulary = taxonomy_vocabulary_load(2);//Here pass the vid
print $vocabulary->name;
$vid1 = $_GET['vid'];
if(!$vid1) {
$vid1 = 2;
print 'empty';
}
$vid = 2;
$parent = 0;
print get_child_terms($parent, $vid1);
 function get_child_terms($parent, $vid) {
      $sql = "SELECT td.tid, td.vid, td.name"
         . "  FROM {term_data} td"
         . "  JOIN {term_hierarchy} th on th.tid = td.tid"
         . " WHERE th.parent = %d"
         . "   AND td.vid = %d"
         . " ORDER BY td.weight, td.name";
    $terms = db_query($sql, $parent, $vid);
    $output = "";
    while ($aterm = db_fetch_object($terms)) {
        $output .= "<li>";
        $output .= l("$aterm->name", "taxonomy/term/$aterm->tid/all") . " ("
                .  taxonomy_term_count_nodes($aterm->tid) . ")</li>\n"
                .  get_child_terms($aterm->tid, $vid);
    }
    return ($output != "") ? "<ul style='list-style-type: none;
  margin: 0px 0px 0px 20px;
  padding: 0px;'>\n". $output ."</ul>\n" : "";
  }
Ahmad
quelle
2

Natürlich gibt es:

  1. Richten Sie Ihr hierarchisches Vokabular ein,
  2. Hinzufügen zu einem ausgewählten Inhaltstyp,
  3. Erstellen Sie eine Ansicht, in der die Knoten dieses Inhaltstyps mit Kontextfilter aufgelistet sind :

    • entweder "Inhalt: Hat Taxonomiebegriffs-ID" - wenn Sie nur Knoten auflisten möchten, die einem bestimmten Begriff zugeordnet sind,
    • oder "Inhalt: Hat Taxonomiebegriffs-ID (mit Tiefe)" - wenn Sie Knoten auflisten möchten, die einem bestimmten Begriff sowie dessen untergeordneten Begriffen zugewiesen sind.

      In diesem Fall müssen Sie in der Filterkonfiguration die Tiefe festlegen - wie viele Ebenen darunter (oder darüber) soll dieser Filter funktionieren?

Angenommen, die URL Ihrer Ansicht lautet http://mysite.com/myview und 'Red' tid = 1. Wenn Sie dann zu http://mysite.com/myview/1 wechseln , werden alle Knoten aufgelistet, die einem der beiden zugewiesen sind Begriffe "rot", "dunkel" und / oder "hell".

Maciej Zgadzaj
quelle
Ich suche keine Antwort für einen bestimmten Begriff. Ich suche einen Blick für den gesamten Wortschatz
iStryker
Und genau das habe ich beschrieben.
Maciej Zgadzaj
2

Sie können das Taxonomie-Menümodul verwenden . Hier ist ein Zitat darüber (von der Projektseite des Moduls):

Wandelt Ihre Taxonomie-Vokabeln mit Leichtigkeit in Menüs um!

Eigenschaften:

  • Benutzerdefiniertes Menü pro Wortschatz
  • Verwendet den Standardtaxonomiebegriffs-Pfad oder benutzerdefinierte Pfade
  • In Ansichten integrieren
  • In Pathauto integrieren: Verwenden Sie URL / Pfad-Aliase
  • Beeinträchtigt andere Menümodule nicht
Dilari
quelle
Willkommen bei Drupal SE! taxonomy_menu ist ein cooles Projekt und es kann dies gut tun. OP will es aber in Views machen.
AyeshK
0

Ich versuche dasselbe zu erreichen, habe aber in D7 nicht viel gefunden. Das Modul Taxonomie-Blöcke erledigt dies in einem Block - nicht in Ansichten.

uwe
quelle
0

Ich glaube, ich habe noch einen anderen Weg gefunden, um dieses Problem zu lösen, und ich denke, es ist einfacher als der Rest dieser Lösungen. Es sind keine zusätzlichen Module erforderlich, und Sie benötigen nur eine Ansicht.

Angenommen, Sie haben ein hierarchisches Vokabular mit zwei Ebenen (Farben) und einen Inhaltstyp mit einem Termverweis auf dieses Vokabular erstellt, gehen Sie folgendermaßen vor:

  1. Erstellen Sie eine neue Ansicht und filtern Sie nach "Taxonomievokabular: Maschinenname (= Farben)"
  2. Beziehungen hinzufügen: (1) Taxonomy term: Content using Colorund (2)Taxonomy term: Parent term
  3. Fügen Sie die Felder zur Ansicht hinzu: (1) Title(wählen Sie field_colorunter "Beziehung" und fordern Sie diese Beziehung an ), (2) Taxonomy term name(keine Beziehung verwenden und von der Anzeige ausschließen) (3) Taxonomy term name(ja, wählen Sie diesmal erneut Parentfür Beziehung und Ausschließen vom Display).
  4. Jetzt gruppieren Sie es, indem Sie auf Einstellungen des Formats klicken: (1) Gruppierung 1:, (Parent) Taxonomy term: Name(2)Taxonomy term: Name

Getan. Wenn Sie über mehr als zwei Ebenen verfügen, fügen Sie einfach eine weitere Beziehung des übergeordneten Elements hinzu, wobei Übergeordnetes Element als Beziehung der Beziehung verwendet wird.

BEARBEITEN: Wenn Sie die Beziehung nicht benötigen, werden Sie mit Dupes enden. Eltern werden zweimal aufgelistet, wenn sie untergeordnete Begriffe haben, auf die von Knoten verwiesen wird. Dies schränkt die Antwort in diesen Begriffen der obersten Ebene ein wenig ein, ohne dass Knoten, die darauf verweisen, sie nicht anzeigen. Da das Sortieren wahrscheinlich wichtig ist, kann es je nach Anzeigebedürfnissen zu Problemen kommen, wenn Inhalte auf einen Begriff der obersten Ebene verweisen.

cdmo
quelle
Es gibt keinen Filter "Taxonomievokabular: Maschinenname (= Farben)", bis eine Beziehung hinzugefügt wird. Ich vermute, der erste Schritt ist der zweite. Auch ich konnte nicht verstehen, wie man Feldtitel hinzufügt, wenn man field_color in "Beziehung" wählt.
Dimetry