web-dev-qa-db-fra.com

Comment afficher Node Nombre de commentaires dans node.tpl?

J'ai eu la brillante idée de modifier mes autorisations utilisateur afin que les invités ne puissent pas voir les commentaires sur un nœud. Je n'ai aucun problème avec les vues autour de mon site, car ils peuvent clairement voir qu'il y a des commentaires sur les nœuds, et ils seront plus enclins à s'inscrire. Le problème semble être lorsqu'ils arrivent sur mon site directement sur un nœud, ils ne voient aucun commentaire et pensent "c'est un peu merdique; allons-y".

Existe-t-il un moyen de montrer le nombre de commentaires sous un nœud?

15
Reg Gordon

Je vous recommande d'utiliser template_preprocess_node () .
Ceci est un exemple de base pour D8

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

Et puis vous pouvez l'utiliser dans votre node.html.twig fichier comme ceci:

{{ comment_count }}

Un exemple de base dans D6 est ci-dessous, vous pouvez le personnaliser à votre guise. Dans votre fichier template.php situé dans votre répertoire de thème, ajoutez quelque chose dans le sens de (en remplaçant YOURTHEME par le nom de votre thème):

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

et enregistrez le fichier. Maintenant, dans node.tpl.php (ou tout modèle équivalent, node-mycontenttype.tpl.php, etc.), ajoutez simplement:

<?php print $num_comments; ?>

Partout où vous souhaitez que le nombre de commentaires soit localisé et enregistré. Vider le cache puis afficher vos modifications.

10
Laxman13

Vous pouvez utiliser $comment_count in node.tpl.php .

$type: Node type, c'est-à-dire histoire, page, blog, etc.
$comment_count: Nombre de commentaires attachés au nœud.

12
graceman9

Mise à jour, pour Drupal 7 votre requête sur template.php devrait ressembler à:

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

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

Maintenant dans page.html.twig:

{{ comment_count }}

Videz le cache, puis affichez vos modifications.

0
rpayanm

Dans Drupal 8 utilisez ceci directement dans votre modèle de nœud:

{{ node.comment.comment_count }}

Notez que pour que cela fonctionne, vous devez avoir le champ de commentaire par défaut dans votre nœud qui est toujours nommé commentaire.

0
ipwa