Я хочу напечатать отдельный комментарий в drupal на основе его идентификатора комментария. Как я могу это сделать? Google и другие источники ничего мне не дали. Спасибо.
Предложение Eaton хорошее (за исключением {comments}
, not {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); } }
И, конечно, определите это специальное форматирование Commment в реализации 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); return theme ('comment', $ comment, $ node); } }
Нет причин использовать какой-либо sql для этого, два вызова функции drupal api – все, что требуется.
function print_comment($cid) { $comment = _comment_load($cid); return theme('comment',$comment); }