Page.tpl.phpの$comment
オブジェクトを使用したいと思います。機能や使い方はありますか?
page.tpl.php テンプレートファイルは、Drupalからのページ出力に使用されます。ページがノードに出力されているとは言われていません。 node.tpl.php を使用することをお勧めします。これは、別のテンプレートが提案されていて、そのファイルが存在する場合を除いて、常にノードに使用されます。
私が報告しているコードはpage.tpl.phpに有効ですが、いくつかの変更を加えるだけで、node.tpl.phpにも使用できます。
表示されているノードのコメントに関心があると想定しています。
if (!empty($node)) {
$result = db_query('SELECT * FROM {comments} WHERE nid = %d', $node->nid);
while ($comment_obj = db_fetch_object($result)) {
// $comment_obj contains the comment object.
// ...
}
}
Node.tpl.phpでコードが使用されている場合、テンプレートは確実にノードを視覚化するために使用されるため、$node
が空でないかどうかを確認する必要はありません。
node.tpl.phpにはすでに$comment_obj
という名前の変数がありますが、その変数にはコメントオブジェクトが含まれていないため、変数$comment
を呼び出しました。ノードのコメント設定が含まれています。
Jeremy Frenchから指摘されているように、このようなコードは、プレゼンテーションコード(つまり、変数の内容を出力するコード)のみを含むテンプレートファイル内に配置しないでください。そのコードは、テンプレートファイルから表示される出力を構築する関数(テーマのtemplate.phpに含まれる)の本体である可能性があります。または、前処理関数で同様のコードを使用する必要があります。
この場合、コードは次のようになります。
function mymodule_preprocess_node(&$variables) {
$variables['comment_output'] = '';
if (!empty($variables[node])) {
$result = db_query('SELECT * FROM {comments} WHERE nid = %d', $variables[node]->nid);
while ($comment_obj = db_fetch_object($result)) {
// $comment_obj contains the comment object.
// ...
$variables['comment_output'] .= // ...
}
}
}
page.tpl.phpは、$variables['comment_output']
のコンテンツを出力する必要があります。
print $comment_output;
Drupalは comment.tpl.php を使用し、コメントオブジェクトが渡されることにも注意してください。何をしようとしているかによっては、それがテンプレートになる可能性があります。あなたが本当に興味を持っているファイル。