Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › FAQ ›

Taxonomie Hierarchie

Eingetragen von moserwi (29) am 31.01.2011 - 20:10 Uhr in
  • Konfiguration

Worum geht es?

Hierarchische Darstellung einer Taxonomie (Kategorisierung, Gliederung)
Die Taxonomie soll als Menü dargestellt werden und die einzelnen Äste sollen die untergeordneten Knoten oder am Ende der Hierarchie die zugeordneten Beiträge anzeigen können.

Prerequisites:
Basisinstallation von Drupal 6.20 englisch
module: taxonomy und taxonomy_menu sowie views aktivieren.

1.) Erstellen eines neuen Inhaltstyps, ich habe ihn document genannt

2.) Taxonomie, ein Vokabular hinzufügen und ein paar Testeinträge in der Hierarchie hinzufügen. Anmerkungen nur kurz und in Textform einfügen.

3.) Ein Menü erstellen, ich habe es documents mit Titel Inhalt genannt

4.) Vokabular konfigurieren
Name Dokumente
Content types: document
Required At least one term in this vocabulary must be selected when submitting a post. ANHAKEN
Menu location: documents
Menu path type: default BITTE darauf belassen, die anderen Pfade haben bei mir nicht funktioniert!!

Hintergrund: Wird ein Knoten, ich nenne in im weiteren BRANCH selektiert dann wird die view taxonomy_term mit
dem Pfad taxonomy/term/% (tid) aufgrufen. Der Pfad ist im taxonomy modul offensichtlich hardcoded....

Use term name, Synchronise changes to this vocabulary, Do not create title link attribute ANHAKEN

Select to rebuild the menu on submit. ANHAKEN und Speichern.

Damit wird das Menü erstellt

5.) Den zum Menü gehörenden Block in der linken oder rechten Seitenleiste plazieren.

6.) Die view taxonomy_term am besten exportieren und absichern
In den Defaulteinstellungen die Tabelle und die volle Seitennavigation aktivieren.
Die Felder Titel, Benutzer und Erstellungsdatum und andrere hinzufügen.

Damit wurde die Standardanzeige der Anrisstexte deaktivert!!! Gegebenfalls die View vorher kopieren und dann
einen Link (zeige ich später wie) einfügen um die Ansicht umzuschalten. Unbedingt den Pfad ändern!

Hier kommt ein großes Problem auf uns zu denn wir wollen ja die Branches in der Hierarchie auch anzeigen lassen.
Bedingt durch die Einschränkungen der Views ist das leider über die Views alleine nicht möglich. Na mir zumindest....
Als Alternative habe ich in der Header der View taxonomy_term (PHP-Filter einschalten!!!) nachstehenden PHP-Code eingefügt
(Bitte die Datei im Anhang herunterladen, die hat dann keine Kommentare!)

<?php
  
  
// über uns ist jetzt der Titel den die Taxonomie, genauer gesagt die View erstellt hat
   // wir holen uns mal die Referenz auf die derzeitige Ansicht damit wir an das Übergabeargument ran kommen
  
$view = views_get_current_view();
  
  
// Mit dem Uebergabeargument holen wir uns das Objekt des terms (Begriffes)
  
$taxonomy_term = taxonomy_get_term($view->args[0]);
  
  
// und drucken die Beschreibung in der Rohfassung einfach als kurzen abstract ohne besondere Formatierung aus
  
print $taxonomy_term->description;
  
// ein bisserl Abstand zur Beschreibung kann auch nicht schaden
  
echo "<p>&nbsp;</p>";

  
// so fragen wir mal die Datenbank was sie denn so an "Branches" fuer uns hat, also subterms in der Taxonomie
  
$sql = "SELECT term_data.tid AS tid, term_data.name AS term_data_name, term_data.description AS term_data_description FROM term_data term_data LEFT JOIN term_hierarchy term_hierarchy ON term_data.tid = term_hierarchy.tid WHERE term_hierarchy.parent = " . $view->args[0] . " ORDER BY term_data.name";
  
  
$results = db_query($sql);
  
// Wenn wir Daten zur Verfügung haben heisst das, da wir ja Dokumente(nodes, pages, stories etd.) NUR in der untersten Hierarchie ablegen
   // UND diese KEIN Teil der Taxonomie sind sondern nur eine Referenz zum taxonomy term haben!!!!
   // heisst das für uns dass wir NUR terms eine Ebene unter uns anzeigen lassen - das macht die obige query
  
if (!empty($results))
   {
        
// Wir wollen eine Tabelle ausgeben und brauchen even und odd felder
        
$marker= 1;
        
// sowie einen Tabellenkopf der nur einmal erstellt werden soll
        
$thead = false;
        
        
// schauen wir mal wieviele zeilen wir zusammenkriegen
        
$counter = 0;
         while (
$fields = db_fetch_array($results))         
         {     
           
// Also die Kernfrage nochmal sicherheitshalber
            // haben wir Daten und ist noch kein Tabellenkopf geschrieben?
           
if (!empty($fields) && $thead == false)
            {
                
// Kein Tabellenkopf vorhanden, schreiben wir Ihn
                 // Achtung die Bezeichnungen sind in dem Fall  statisch!!
                 
echo "<table class='views-table cols-2'>";
                  echo
"<thead><tr>";
                  echo
"<th class='views-field'>Bereich</th>";
                  echo
"<th class='views-field'>Beschreibung</th>";
                  echo
"</tr></thead>";
                  echo
"<tbody>";
                 
$thead = true;
            };
           
// wir scheiben eine ungerade Zeile
           
if ($marker == 1)
            {
                  echo
"<tr class='odd views-row-first'>";
                 
// und setzen den Marker auf gerade
                 
$marker = 0;<a href="/faq/33295"></a>
            } else
            {
                 
// wir schreiben eine gerade Zeile
                 
echo "<tr class='even views-row-last'>";
                 
// und setzen den Marker auf ungerade
                 
$marker = 1;
            };
                           
// so wir sind in der HTLM Zeile und schreiben den Inhalt, also den Link auf den untergeordneten Begriff rein
                           
echo "<td class='views-field'><a href='/taxonomy/term/" . $fields['tid'] . "'>" . $fields['term_data_name'] . "</a></td>";
                            echo
"<td class='views-field'>" . $fields['term_data_description'] . "</a></td>";
                           
// und machen die TableRow wieder zu
                           
echo "</tr>";
        
// und ab zur naechsten vorhandenen Zeile bis keine mehr da ist
        
$counter++;
         };
        
// so, die Tabelle schliessen
        
echo "</tbody></table>";
        
// und aus  
   
};
    if (
$counter == 0)
    {
        
// und wirklich aus? NEIN eigentlich nicht denn wenn das obige nicht wahr ist
         // dann gibt es Dokumente zum Anzeigen und die Tabelle der taxonomy_term Ansicht wird nachstehend aufgebaut
         // das sollte mit Hilfe des Moduls prepopulate möglich sein. Soweit ich es beurteilen kann liefert prepopulate auch die richtigen Werte
        
print '<a href="/node/add/document?edit[taxonomy]['. $taxonomy_term->vid .']='. $taxonomy_term->tid .'" >Neues Dokument erstellen</a>';
    };  
?>

Der vorstehende code ist bis auf die Tabellenbezeichnungen so variabel dass man ihn einfach in den Header der View reinkloppen kann.

so und nun sind naürlich die Resultate gefragt

OK das Bild will da nicht rein... kommt als Anhang dazu.

Also ich hoffe wirklich dass dieser knappe Abriss geholfen hat die Taxonomieproblematik zu erfassen. Ich denke es ist alles drin um den Faden zu kriegen.

willi moser

siehe auch:
Prepopulate und node taxonomy dropdown box für den Link "Neuen Beitrag erstellen"
2011-02-02 so jetzt hab ich folgendes gefunden Vocabulary Index Das dürfte ähnliches möglich machen....

AnhangGröße
taxonomie_hierarchie.gif36.49 KB
view_taxonomy_term_php.txt1.91 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 51 Minuten
  • Hey danke
    vor 2 Wochen 19 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 19 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association