2

コメントIDに基づいてdrupalで個別のコメントを印刷したい。これどうやってするの?グーグルと他の情報源は私に何ももたらさなかった。ありがとうございました。

4

3 に答える 3

3
関数 print_comment($cid) {
  $sql = "SELECT * FROM {コメント} WHERE cid = %d";
  if ($comment = db_fetch_object(db_query($sql, $cid))) {
    $node = node_load($comment->nid);
    return theme('comment', $comment, $node);
  }
}
于 2009-03-21T00:57:27.803 に答える
3

ノードからの情報を含め、core のようにコメントを表示する必要がある場合、 Eaton の提案は適切です (ただし{comments}、 ではありません)。{comment}のデフォルトの theme_comment 実装modules/comment/comment.tpl.phpが $node を使用しないことを除いて。

comment.tpl.phpただし、コメントを 1 つ抽出する必要がある場合、 が提供する通常のコンテンツ形式で表示するのは不適切な可能性が高いため、少し異なる方法で行います。

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);
  }
}

hook_theme()そしてもちろん、モジュールの実装でこの特別なコメント形式を定義してくださいcomment.tpl.php

2014 年 2 月更新: これは 2009 年の質問/回答であることに注意してください。Drupal 8 では、仮想の基礎となる SQL データベースにアクセスしたくないだけで (とにかくこのようにアクセスするのではなく、DBTNG を使用します)、次のようなものを使用します。

if ($comment = entity_load('comment', $cid)) {
  return entity_view($comment, $view_mode);
}
于 2009-03-21T13:32:32.683 に答える
2

これを行うために SQL を使用する理由はありません。2 つの drupal API 関数を呼び出すだけで十分です。

function print_comment($cid) 
{
    $comment = _comment_load($cid);
    return theme('comment',$comment);
}
于 2010-01-28T22:26:43.380 に答える