Ich möchte einen einzelnen Kommentar in Drupal basierend auf seiner Kommentar-ID drucken. Wie kann ich das machen? Google und andere Quellen haben mir nichts gebracht. Vielen Dank.Wie drucke ich einen einzelnen Kommentar in Drupal?
Antwort
Eaton Vorschlag ist gut (außer es {comments}
ist, nicht {comment}
), wenn Sie den Kommentar angezeigt werden müssen, wie Kern es tut, einschließlich der Informationen von dem Knoten kommen. Außer der standardmäßigen theme_comment-Implementierung in modules/comment/comment.tpl.php
wird $ node nicht verwendet.
Allerdings würde ich es etwas anders machen, denn wenn Sie einen einzelnen Kommentar extrahieren müssen, ist es wahrscheinlich unangebracht, sie mit der normalen Inhaltsformatierung anzuzeigen, die von comment.tpl.php
bereitgestellt wird.
function print_comment($cid) {
$sql = "SELECT * FROM {comment} c WHERE c.cid = %d";
if ($comment = db_fetch_object(db_rewrite_sql(db_query($sql, $cid), 'c'))) {
return theme('my_special_comment_formatting', $comment);
}
}
Und natürlich definieren diese besondere commment Formatierung in hook_theme()
Implementierung des Moduls, inspiriert von dem, was comment.tpl.php
tut.
2014-02 UPDATE: Beachten Sie, dass dies eine 2009 Frage/Antwort ist. In Drupal 8, Sie wollen einfach nicht die hypothetische zugrunde liegende SQL-Datenbank zuzugreifen (und würde es so ohnehin nicht, aber verwenden DBTNG), aber nur etwas verwenden wie:
if ($comment = entity_load('comment', $cid)) {
return entity_view($comment, $view_mode);
}
Hah. Danke, dass Sie die Unterscheidung zwischen Kommentar und Kommentar bemerkt haben. Ich hatte api.drupal.org geöffnet und bemerkte nicht, dass ich die D7-Version des Codes sah - der Tabellenname wurde in der neuen Dev-Version in singular geändert. – Eaton
Außerdem erhalten Sie einige PHP-Hinweise, wenn kein Knotenobjekt übergeben wird - $ node-> type wird verwendet, um mögliche Vorlagenoptionen (wie comment-story.tpl.php) in der Standard-phptemplate \ _preprocess zu erstellen \ _comment Funktion. – Eaton
'phptemplate_preprocess_comment' wird jedoch nicht beim Aufruf des Themas ('my_special_comment_formatting') verwendet. Aber guter Fang für 'theme ('comment')'! Ich hatte nur die Vorlage überprüft, nicht die Vorverarbeitungsfunktion. – FGM
function print_comment($cid) { $sql = "SELECT * FROM {comments} WHERE cid = %d"; if ($comment = db_fetch_object(db_query($sql, $cid))) { $node = node_load($comment->nid); return theme('comment', $comment, $node); } }
kein Grund, zu verwenden, sql dies zu tun, zwei drupal api Funktionsaufrufe ist alles, was es braucht.
function print_comment($cid)
{
$comment = _comment_load($cid);
return theme('comment',$comment);
}
Was ist der Kontext davon? Möchtest du eine Seite haben, die nur ein Kommentar ist? Ein Block? Machen Sie es zu einer Seitenvorlage? Einen einzelnen Kommentar in einer Knotenvorlage drucken? –