Taxonomie Hierarchie
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> </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....
Anhang | Größe |
---|---|
taxonomie_hierarchie.gif | 36.49 KB |
view_taxonomy_term_php.txt | 1.91 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 1 Tag 5 Stunden
vor 1 Tag 8 Stunden
vor 1 Tag 8 Stunden
vor 1 Tag 9 Stunden
vor 1 Tag 9 Stunden
vor 1 Tag 9 Stunden
vor 2 Tagen 12 Minuten
vor 3 Tagen 8 Stunden
vor 4 Tagen 8 Stunden
vor 4 Tagen 15 Stunden