node.tplでノードコメントカウントを表示する方法


15

ゲストがノード上のコメントを見ることができないように、ユーザーのアクセス許可を変更するという素晴らしい考えがありました。自分のサイトの周囲のビューには問題がありません。ノードに関するコメントがあることを明確に確認でき、登録する傾向があります。問題は、彼らが私のサイトに直接ノードに到着し、コメントを見ず、「それはちょっとくだらない、行こう」と思うときだと思われます。

ノードの下にコメントの量を表示する方法はありますか?

回答:


10

template_preprocess_node()を使用することをお勧めします。
これはD8の基本的な例です

function YOUR_THEME_preprocess_node(&$variables) {
  $variables['comment_count'] = $variables['node']->get('YOUR_COMMENT_FIELD')->comment_count;
}

そして、次のnode.html.twigようにファイルで使用できます:

{{ comment_count }}

D6の基本的な例を以下に示します。好みに合わせてカスタマイズできます。テーマディレクトリにあるtemplate.phpファイルで、次の行に沿って何かを追加します(YOURTHEMEをテーマの名前に置き換えます)。

function YOURTHEME_preprocess_node(&$variables) {
  $nid = $variables['node']->nid;
  $variables['num_comments'] = db_result(db_query('SELECT COUNT(cid) AS count FROM {comments} WHERE nid = %d', $nid)) . ' comment(s) on this node';
}

ファイルを保存します。ここで、node.tpl.php(または同等のテンプレート、node-mycontenttype.tpl.phpなど)に次を追加するだけです。

<?php print $num_comments; ?>

コメントカウントを見つけて保存する場所。 キャッシュをクリアして、変更内容を表示します。


私は、Drupalの7にtemplate_preprocess_nodeためのコードを適応させることを試みたが、私は、このエラー通知取得しています:未定義の変数:含んでNUM_COMMENTS()(ライン116
アレクサンダー

適応中に何が変わりましたか?データベースクエリは、以下の@doterobcnで指定されたもののように見えますか?
Laxman13

12

あなたは使用することができる$comment_countnode.tpl.php

$type:ノードタイプ、つまりストーリー、ページ、ブログなど
$comment_count:ノードに添付されたコメントの数。


私はそれ$comment_countがユーザーに見えるコメントの数を数えると思います。現在のユーザーがコメントを表示できない場合、その変数はゼロに設定されます。
キアムルノ

1
はい。さらに直接$node->comment_count
-artfulrobot

4

更新、Drupal 7の場合、template.phpのクエリは次のようになります。

$vars['num_comments'] = db_query("SELECT COUNT(cid) AS count FROM {comment} WHERE nid =:nid",array(":nid"=>$vars['nid']))->fetchField();

0

Drupal 8の場合:

function YOURTHEME_preprocess_node(&$variables) {
  $nid = $variables['node']->nid->value;
  $num_comment = db_query('SELECT comment_count FROM {comment_entity_statistics} WHERE entity_id = ' . $nid)->fetchAssoc();
  $variables['comment_count'] = $num_comment['comment_count'];
}

今page.html.twigで:

{{ comment_count }}

キャッシュをクリアして、変更を表示します。


Drupal APIを使用してもっと簡単にできるように、dbをクエリするのは本当に悪いです。$ variables ['node']-> get( 'comment')-> comment_count;
-ipwa

コメントフィールド名がわかっている場合は@ipwa、そうでなければ解決策ではない
-golddragon007

0

Drupal 8では、これをノードテンプレートで直接使用します。

{{ node.comment.comment_count }}

それが機能するためには、常にcommentという名前のノードにデフォルトのコメントフィールドが必要であることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.