Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在drupal中打印单个注释?_Php_Drupal_Drupal Comments - Fatal编程技术网

Php 如何在drupal中打印单个注释?

Php 如何在drupal中打印单个注释?,php,drupal,drupal-comments,Php,Drupal,Drupal Comments,我想根据drupal的注释ID在drupal中打印一条单独的注释。我该怎么做?谷歌和其他来源没有给我任何信息。多谢各位 伊顿的建议很好,除了{comments},而不是{comment},如果您需要像core那样显示注释,包括来自节点的信息。除了modules/comment/comment.tpl.php中的默认主题注释实现没有使用$node之外 function print_comment($cid) { $sql = "SELECT * FROM {comments} WHERE ci

我想根据drupal的注释ID在drupal中打印一条单独的注释。我该怎么做?谷歌和其他来源没有给我任何信息。多谢各位

伊顿的建议很好,除了{comments},而不是{comment},如果您需要像core那样显示注释,包括来自节点的信息。除了modules/comment/comment.tpl.php中的默认主题注释实现没有使用$node之外

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); } } 但是,我的做法略有不同,因为如果需要提取单个注释,则使用comment.tpl.php提供的正常内容格式显示它可能是不合适的

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);
  }
}
当然,受comment.tpl.php的启发,在模块的hook_主题实现中定义这种特殊的comment格式

2014-02更新:请注意,这是一个2009年的问题/答案。在Drupal 8中,您只是不想访问假设的底层SQL数据库,而且无论如何也不会这样做,而是使用DBTNG,而只是使用如下内容:

if ($comment = entity_load('comment', $cid)) {
  return entity_view($comment, $view_mode);
}

没有理由使用任何sql来实现这一点,只需要两个drupal api函数调用

function print_comment($cid) 
{
    $comment = _comment_load($cid);
    return theme('comment',$comment);
}

哈。感谢您注意到评论/评论的区别。我打开了api.drupal.org,没有注意到我正在查看D7版本的代码-在新的开发版本中,表名已更改为单数,如果没有传入node对象,您将收到一些PHP通知-$node->type用于在默认phptemplate_preprocess_comment函数中构造可能的模板选项,如comment-story.tpl.PHP。不过,在调用主题“my_special_comment_formatting”时不会使用phptemplate_preprocess_comment。但对于主题“评论”来说,这是一个很好的捕捉!我只检查了模板,没有检查预处理函数。这是什么上下文?你想要一个只是评论的页面吗?一个街区?是否将其作为页面模板的一部分?是否在节点模板中打印单个注释?