Kommentare in Artikellisten (node list)
am 09.11.2008 - 22:52 Uhr in
Hej,
ich bin noch nicht lange mit Drupal beschäftigt und jetzt auch das erste Mal in diesem Forum aktiv. Ich hoffe, ihr könnt mir irgendwie weiterhelfen...und hoffe auch, dass ich das richtige Forum gewählt habe.
Ich möchte gern in der Übersichtsdarstellung von Artikeln (v.a. auf der Startseite) bereits die Kommentare zu den Artikeln einblenden - und nicht erst, nachdem man den Artikel einzeln aufgerufen hat. Jetzt bin ich mir nicht sicher, ob ich dazu
- einfach mein Template anpassen kann, oder
- ein eigenes Modul schreiben muss.
Was wäre dafür der bevorzugte Weg? Oder gibt es bereits eine fertige Lösung dafür? Könnt ihr mir einen Hinweis geben, wie ich da in etwa vorgehen müsste?
Versucht habe ich es bereits mit folgender Anleitung, die exakt das umsetzen sollte, was ich will: http://drupal.org/node/255456
Gescheitert bin ich daran, dass das CCK ViewField in der Version für Drupal 6.x anscheinend noch buggy ist. Es scheint nicht möglich zu sein, eine Ansicht/View einzubinden, die eine Relation von Kommentaren zum Node herstellt. Ich bekomme da folgende Fehlermeldung, wenn ich einen Artikel oder auch eine Artikelliste anschauen will:
user warning: Unknown column 'node.nid' in 'where clause'...
Möglicherweise kollidieren da die SQL-Abfragen von ViewField mit irgendeiner Funktion, die diese Abfrage noch einmal filtert oder ergänzt.
Für einen Anstoss, wie ich das doch noch umsetzen kann, wäre ich dankbar.
Einen sonntäglichen Gruß
JaJa
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich habe jetzt eine Lösung
am 10.11.2008 - 23:42 Uhr
Ich habe jetzt eine Lösung gefunden, die funktioniert. Das Modul "Content Templates" mit folgendem Template für Teaser tut seinen Dienst:
<?php
print $teaser;
$sql = db_rewrite_sql('SELECT * FROM {comments} WHERE (nid = %d) AND (status = 0)','{comments}');
$q_com = db_query($sql, $node->nid);
if ($q_com)
{
print "<div class=\"teasercomments\">";
print "<div class=\"teasercomment_header\">".$node->comment_count." Kommentar(e)</div>";
while ($com = db_fetch_object($q_com))
{
print "<div class=\"teasercomment\">";
print "<div class=\"teasercomment_date\">".format_date($com->timestamp,'medium')."</div>";
print $com->comment;
print "</div>";
}
print "</div>";
}
// Links habe ich für Teaser ausgeblendet,
// deshalb wird hier gleich noch der Kommentarlink erzeugt
print l('Kommentar hinzufügen','node/' . $node->nid. '/comments');
?>
Jetzt interessiert mich aber natürlich auch, wie das ganze funktionieren müsste, wenn man ein eigenes Modul schriebe. Rudimentäre Kenntnisse über den Aufbau von Modulen habe ich mittlerweile, aber die reichen noch nicht ganz, um das zu verstehen - für ein paar Hinweise wäre ich dankbar.
Wie müsste man das also angehen, wenn man ein eigenes Modul schreiben wollte? Welche hooks müsste man implementieren?
Gruß und Dank
JaJa
Kommentare in Artikellisten (node list) ??
am 11.11.2008 - 00:39 Uhr
Ich verstehe noch nicht ganz was Deine eigentliche Aufgabe ist: Kommentare in Artikellisten (node list).
Wenn es um ein eigenes Modul im Zusammenhang mit Nodes geht wirst Du wirst Du vermutlich fuer die Kernfunktion hook_nodeapi benoetigen.
Weitere Hooks koennten je nach Ausbaustufe des Modules anwendbar sein.
Denkbar ist auch die Kombination von einem View und einem Modul. Das Modul verwendet vom View bereitgestellte DB-Abfrage-Ergebnisse. Der View muss in diesem Fall eventuell mit Argumenten arbeiten.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Ich will genau das, was die
am 12.11.2008 - 08:59 Uhr
Ich will genau das, was die Lösung mit Content Templates bewirkt, mit einem selbstgeschriebenen Modul umsetzen.
hook_nodeapi ist schon mal ein guter Hinweis, das hatte ich vermutet. Mir ist nur noch nicht ganz klar, wie ich von dort aus die ausgabe beeinflusse. In der node.tpl.php gebe ich $content aus, aber wie kommen die kommentare von hook_nodeapi zu $content? Bei welcher $op muss ich mich einklinken (alter, load, view???)?
Gruß und Dank
JaJa