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?

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.


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.


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();

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.