Taxonomie - bestehende Beiträge neuem Taxonomie-Begriff zuordnen
am 06.01.2014 - 11:43 Uhr in
Hallo Forum,
ich möchte eine Drupal6-Seite auf D7 upgraden. Hierbei setzt die Seite sehr stark auf Taxonomie. Es gibt in D6 sieben Vokabulare mit Begriffen, die jeweils einem eigenen Menu zugeordnet sind:
- Menu A --> Vokabular A
- Menu B --> Vokabular B
- Menu C --> Vokabular C
- Menu D --> Vokaublar D
- Menu C --> Vokabular E
In D7 soll es nur noch ein Menü geben, in dem die 5 D6-Menüs als Hauptmenupunkte des D7-Menus gelistet werden.
- D7-Menu Menüpunkt 1 --> Menuname Menu A, Untermenupunkte Vokabular A
- D7-Menu Menüpunkt 2 --> Menuname Menu B, Untermenupunkte Vokabular B
- D7-Menu Menüpunkt 3 --> Menuname Menu C, Untermenupunkte Vokabular C
- D7-Menu Menüpunkt 4 --> Menuname Menu D, Untermenupunkte Vokabular D
- D7-Menu Menüpunkt 5 --> Menuname Menu C, Untermenupunkte Vokabular E
Der 1. Ansatz war hier einfach ein neues Vokabular "Hauptmenu" zu definieren und mit dem Modul Taxonomie-Manager die Begriffe des Vokabular A als Unterbegriffe von Menuname Menu A zu schieben. Das natürlich identisch für D7-Menupunkt 2 - 5. Die Anzeige wird dann über das Modul taxonomie-menu geregelt.
Hat auch genau so geklappt, wie beabsichtigt, jeodch hat es einen Schönheitsfehler. Die Hauptmenupunkte des D7-Menus haben bei Aufruf (noch) keine Beiträge. Ziel ist aber, dass der Oberbegriff alle Beiträge des Oberbegriffs wie auch alle Beiträge aller beinhalteten Unterbegriffe auflistet. Ansonsten macht das ja keinen Sinn. Es geht um ein Newsportal, bei dem die Anzahl der Beiträge eine wichtige Größe für die Relevanz der Menupunkte bedeuten.
Hat jemand eine Idee, wie die bestehenden Beiträge (ca. 1700) den neu geschaffenen Taxonomie-Begriffen zugeordnet werden können? Oder kann ich Taxonomie irgendwie dazu bringen, dass es bei Aufruf der Oberbegriffe die verlinkten Beiträge der zugehörigen Unterbegriffe anzeigt? Ich komme da irgendwie nicht weiter.
Da es ein Upgrade ist, ist mir egal. ob ich die Lösung in D6 oder D7 finde.
Ich sage schon mal vielen Dank für's Lesen und freue mich über jeden Tipp
LG
2be
- Anmelden oder Registrieren um Kommentare zu schreiben
Eventuell kommst du mit
am 06.01.2014 - 11:59 Uhr
Eventuell kommst du mit https://drupal.org/project/shs weiter? hier werden nur die Taxonomy Begriffe angezeigt die auch Content enthalten.
Ich bin nicht sicher ob ich deine Frage richtig verstehe, könntest du nicht die Taxonomy Begriffe von Menu A - E einzeln aus D6 exportieren und in einer CSV zusammen fassen und wieder importieren und dann mit shs ausgeben?
Grüße Jenna
Leider nicht
am 06.01.2014 - 17:04 Uhr
Hallo Jenna,
vielen Dank für den guten Tipp! Doch leider komme ich da nicht weiter. Der normale Weg ist ja, zuerst die Vokabulare festlegen, die Taxnomie-Begriffe in den Vokabularen listen und die Beiträge dann mit den Taxonomiebegriffen verlinken. Ich muss jetzt durch die Veränderung der Menustruktur den umgekehrten Weg gehen, nämlich bestehende Beiträge mit einem neuen Taxonomie-Begriff verlinken. Das ist mein Hauptproblem. Über die neue Menühierarchie habe ich in den Menupunkten der 1. Ebene überall neue Taxonomie-Begriffe geschaffen. Die Menüpunkte der 2. Ebene werden dann über Taxonomie-Manager den Menüpunkten der 1. Ebene zugeordnet. Die 2. Ebene des Menüs klappt auch problemlos, jedoch sind mit den Taxonomie-Begriffen der 1. Ebene keine Beiträge verlinkt und ich bekomme bei Auswahl des Menüpunktes die Meldung "Momentan ist kein Inhalt mit diesem Begriff klassifiziert".
Mein Ziel ist, dass bei Auswahl des Menüpunktes der 1. Ebene alle Beiträge die den Menüpunkten der 2. Ebene und weiterer Ebenen aufgelistet werden. Das wäre (wenn auch recht fragi)l wohl noch über ein VIEW zu lösen, doch ich habe auch die Taxonomiebegriffe als alternative Navigation unterhalb des Beitrags angezeigt. Und dort sind dann bei neuen Beiträgen auch die Beiträge der Menüpunkte der 1. Ebene zu sehen, aber nur der 1. Menüebene, keine weiteren. Das kann dann je nach Stand auch nur ein einzelner Beitrag sein. Ein Beitrag zu einem Menüpunkt ist aber definitiv zu wenig für ein Newsportal.
Viele Grüße 2be
Zitat:"Ich habe die Länge und Breite dieses Landes bereist und mit den besten Leuten geredet, und ich kann Ihnen versichern, daß Datenverarbeitung ein Tick ist, welcher dieses Jahr nicht überleben wird.“ Editor für Computerbücher bei Prentice Hall, 1957.
Vermutlich wirst Du um ein
am 06.01.2014 - 19:19 Uhr
Vermutlich wirst Du um ein eigenes Update-Modul nicht herumkommen. Du erstellst erst eine Crosstabelle alte tid <--> neue tid. Dann läufst Du in einem Batch-Prozess über alle Nodes, die geändert werden sollen. Du lädst den Node mit node_load ($nid), ersetzt die tid in der Node-Struktur und speicherst den geänderten Node mittels node_save($node). Ich habe etwas ähnliches zum Umbau von Multigroup-Einträgen (D6) in eine Field-Collection (D7) schon geschrieben, weil es dazu keinen "normalen" Weg gibt, das zu migrieren. Der Aufwand in Deinem Fall liegt hauptsächlich im Erstellen der Crosstabelle.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
So ganz schlau ...
am 06.01.2014 - 20:07 Uhr
... werde ich aus deiner Antwort nicht. Lass mich das mal in kleine Stücke packen, die ich auch verdauen kann :-)
Vermutlich wirst Du um ein eigenes Update-Modul nicht herumkommen.
Das hatte ich befürchtet. Kämpfe mich auch gerade durch Das Drupal-Entwicklerhandbuch für D6.
Du erstellst erst eine Crosstabelle alte tid <--> neue tid.
Das verstehe ich sogar noch :-) Doch ich muss keine tid ersetzen, nur eine weitere hinzufügen. Alles andere bekomme ich über das Modul Taxonomie-Manager geregelt. Auch hier kommt dann eine tid hinzu, wenn die tid = x oder y oder z ist. Das kann man genau über die Crosstabelle spezifizieren.
Dann läufst Du in einem Batch-Prozess über alle Nodes, die geändert werden sollen. Du lädst den Node mit node_load ($nid), ersetzt die tid in der Node-Struktur und speicherst den geänderten Node mittels node_save($node).
Hier fehlt mir das Fachvokabular für Batch-Prozess, ich muss allerdings dann folgerichtig keine tid ersetzen, sondern hinzufügen. und dann die geänderte Node wieder speichern.
Ich denke, mit dienen Angaben komme ich einigermaßen klar und kann mir ein kleines Modul zusammenbauen. Wenn ich das schaffe, dann veröffentliche ich den Code mal hier, sollte ich scheitern, dann auch :-) Dann hoffe ich auf einen Tipp, wo der Fehler im Code liegt.
Doch bis hier vielen, vielen Dank an euch beide für die Hilfe.
Viele Grüße
2be
Zitat:"Ich habe die Länge und Breite dieses Landes bereist und mit den besten Leuten geredet, und ich kann Ihnen versichern, daß Datenverarbeitung ein Tick ist, welcher dieses Jahr nicht überleben wird.“ Editor für Computerbücher bei Prentice Hall, 1957.