[gelöst] Views: Zur original node auch die Kommentare der Übersetzung anzeigen, und umgekehrt

am 01.03.2010 - 22:16 Uhr in
Es geht hier um ein Problem, dass mich jetzt schon länger begleitet: Auf einer multilanguage-site hat jede Node in einem translation set in ihrer Sprache einen eigenen Kommentarbereich. Ich möchte aber, dass sowohl im Original als auch in der Übersetzung alle Kommentare stehen; in der Übersetzung auch die vom Original, und umgekehrt. Hier wurde das Problem unter anderem auch beschrieben: http://drupal.org/node/242313 Eine Lösung fand man da auch nicht, aber thekayra empfahl das Modul nodecomments, das aus Kommentaren vollständige nodes macht. Ich habe das auch mal ausprobiert, habe aber keine wirklichen Fortschritte gemacht.
Meine Grundidee war ein Argument zu übergeben, dass eine Relationship benutzt. Das "beste" was dabei herausgekommen ist, war folgendes:
Relationships - Node: Original Parent Nid +
Arguments - (Node) Node translation: Translation set node ID
(Die Relationship wird mit nodecomments mitgeliefert) Das gibt tatsächlich die Kommentare von Original und Übersetzung aus, aber nur mit der Original node ID (weil die gleich der tnid ist.)
Mein Gedankengang war die node ID als Argument zu nehmen, und über die Relationships die relevanten Übersetzungen (per tnid) und dann deren Kommentare (per nid /cid) herauszuziehen. Allerdings machen mir dabei die Relationships schwer zu schaffen. Ich hab mir schon angeschaut, wie mysql die Tabellen verbindet, bin aber nicht os ganz schlau daraus geworden.
Hat irgendjemand ne gute Idee, wie man das machen könnte? Bin offen für alle Vorschläge, kann auch völlig von meinen Ansätzen abweichen, oder daraus hinauslaufen, irgendwas selbst zu schreiben. Ich wüsste nur unendlich gerne, ob das überhaupt irgendwie möglich ist. ;) Bin gerade echt vernagelt, was die Sache angeht.
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi, ich habe jetzt durch
am 02.03.2010 - 19:42 Uhr
Hi,
ich habe jetzt durch educated guessing / Zufall eine Views Relationship gefunden, die tatsächlich alle Kommentare unter allen Übersetzungen anzeigt!
Hier die Relationships und Argumente:
Relationships:
Arguments
(Translations) Node: Nid
Ein ziemliches Monstrum, wie man sehen kann. Der MySQL Query sieht so aus:
SELECT node.nid AS nid
FROM node node
LEFT JOIN node_comments node_comments ON node.nid = node_comments.cid
LEFT JOIN node node_node_comments ON node_comments.nid = node_node_comments.nid
LEFT JOIN node node_node ON node_node_comments.tnid = node_node.nid
LEFT JOIN node node_node_1 ON node_node.nid = node_node_1.tnid
WHERE (node.status <> 0) AND (node_node_1.nid = 3)
Ich freue mich gerade riesig, das könnt ihr euch gar nicht vorstellen. Es gibt zwei kleinere Wermutstropfen (auf den ersten Blick, hoffentlich kommt nicht noch mehr!):
Wenn es zu einer Node keine Übersetzung gibt, werden gar keine Kommentare angezeigt (weil es keine tnid gibt). Das kann man aber relativ einfach umgehen, indem man eine Übersetzungs-Node erstellt, diese aber einfach nicht veröffentlicht.
edit: Hm, das Problem damit ist jetzt, dass bei "mixed language" statt dem node teaser in der default language gar nichts mehr angezeigt wird. Das lässt mit dem Modul active translation beheben. Eine automatische Übersetzung kann man mit i18n auto translate erstellen.
Die zweite Sache: Die Anzahl der Kommentare wird in den Nodeteasern nur für die Node in der aktuellen Sprache angezeigt. Das ist natürlich korrekt, im Sinne der neuen View aber nicht. Da kann man aber sicher auch irgendwas zurecht basteln. Vorzugsweise natürlich mit Views!
Achja, getestet habe ich nur eine flache Viewdarstellung der Kommentare; threaded sollte auch gehen, bin mir aber nicht 100%ig sicher. Mehr als zwei Sprachen funktionieren auch super.
P.S. Wenn Bedarf besteht, kann ich das nochmal etwas ausführlicher und übersichtlicher schreiben, dass es dann evtl. ins Handbuch wandert.