Anzeigen der Anzahl der Knotenkommentare in node.tpl

15

Ich hatte die gute Idee, meine Benutzerberechtigungen zu ändern, damit Gäste die Kommentare zu einem Knoten nicht sehen können. Ich habe keine Probleme mit Views auf meiner Site, da sie deutlich sehen, dass es Kommentare zu Knoten gibt, und sie sind eher geneigt, sich zu registrieren. Das Problem scheint zu sein, wenn sie auf meiner Site direkt an einem Knoten ankommen, keinen Kommentar sehen und denken, "das ist ein bisschen Mist, lass uns gehen."

Kann ich die Anzahl der Kommentare unter einem Knoten anzeigen?

Reg Gordon
quelle

Antworten:

10

Ich empfehle, template_preprocess_node () zu verwenden .
Dies ist ein grundlegendes Beispiel für D8

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

Und dann können Sie es in Ihrer node.html.twigDatei wie folgt verwenden:

{{ comment_count }}

Ein grundlegendes Beispiel in D6 finden Sie weiter unten. Sie können es nach Ihren Wünschen anpassen. Fügen Sie in der Datei template.php, die sich in Ihrem Themenverzeichnis befindet, Folgendes hinzu (ersetzen Sie YOURTHEME durch den Namen Ihres Themas):

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';
}

und speichern Sie die Datei. Fügen Sie nun in der Datei node.tpl.php (oder einer entsprechenden Vorlage, node-mycontenttype.tpl.php usw.) Folgendes hinzu:

<?php print $num_comments; ?>

Wo immer Sie möchten, kann die Anzahl der Kommentare gespeichert werden. Leeren Sie den Cache und zeigen Sie Ihre Änderungen an.

Laxman13
quelle
Ich habe versucht, Ihren Code für den template_preprocess_node an Drupal 7 anzupassen, erhalte jedoch diesen Fehler. Hinweis: Nicht definierte Variable: num_comments in include () (Zeile 116
Alexander
Was haben Sie während der Anpassung geändert? Entspricht Ihre Datenbankabfrage der von @doterobcn unten angegebenen?
Laxman13,
12

Sie können $comment_countin node.tpl.php verwenden .

$type: Knotentyp, dh Story, Seite, Blog usw
$comment_count.: Anzahl der an den Knoten angehängten Kommentare.

graceman9
quelle
Ich nehme an, das $comment_countzählt die Anzahl der für den Benutzer sichtbaren Kommentare. Wenn der aktuelle Benutzer keine Kommentare sehen kann, wird diese Variable auf Null gesetzt.
kiamlaluno
1
Ja. Und direkter$node->comment_count
artfulrobot
4

Update, für Drupal 7 sollte deine Abfrage auf template.php so aussehen:

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

Für 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'];
}

Jetzt in page.html.twig:

{{ comment_count }}

Leeren Sie den Cache und zeigen Sie Ihre Änderungen an.

rpayanm
quelle
Es ist wirklich schlecht, die Datenbank nach etwas abzufragen, das mit der Drupal-API viel einfacher zu erledigen ist: $ variables ['node'] -> get ('comment') -> comment_count;
Ipwa
@ipwa, wenn Sie den Namen des Kommentarfelds kennen, sonst ist es keine Lösung
golddragon007
0

In Drupal 8 verwenden Sie dies direkt in Ihrer Knotenvorlage:

{{ node.comment.comment_count }}

Beachten Sie, dass Sie in Ihrem Knoten das Standard-Kommentarfeld haben müssen, das immer als Kommentar bezeichnet wird, damit es funktioniert.

ipwa
quelle