Как напечатать один комментарий в drupal?
Я хочу напечатать отдельный комментарий в drupal на основе его идентификатора комментария. Как я могу это сделать? Google и другие источники мне ничего не дали. Спасибо.
3 ответа
Предложение Итона хорошо (кроме {comments}
не {comment}
) если вам нужно отобразить комментарий, как это делает ядро, включая информацию, поступающую с узла. За исключением реализации по умолчанию theme_comment в modules/comment/comment.tpl.php
не использует $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);
}
}
И, конечно, определите это специальное форматирование комментария в вашем модуле hook_theme()
реализация, вдохновленная тем, что comment.tpl.php
делает.
2014-02 ОБНОВЛЕНИЕ: обратите внимание, что это вопрос / ответ 2009 года. В Drupal 8 вы просто не хотите получать доступ к гипотетической базе данных SQL (и в любом случае не делали бы это так, но использовали бы DBTNG), а просто использовали что-то вроде:
if ($comment = entity_load('comment', $cid)) {
return entity_view($comment, $view_mode);
}
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); возвращаемая тема ('comment', $comment, $node); } }
Нет смысла использовать какой-либо sql для этого, достаточно всего двух вызовов api-функций drupal.
function print_comment($cid)
{
$comment = _comment_load($cid);
return theme('comment',$comment);
}