Como mostrar a contagem de comentários do nó no node.tpl?

15

Tive a brilhante idéia de alterar minhas permissões de usuário para que os convidados não possam ver os comentários em um nó. Não tenho problemas com o Views no meu site, pois eles podem ver claramente que existem comentários nos nós e estarão mais inclinados a se registrar. O problema parece ser quando eles chegam no meu site diretamente a um nó, não veem nenhum comentário e pensam "isso é uma porcaria; vamos lá".

Existe uma maneira de mostrar a quantidade de comentários abaixo de um nó?

Reg Gordon
fonte

Respostas:

10

Eu recomendo que você use template_preprocess_node () .
Este é um exemplo básico para D8

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

E então você pode usá-lo em seu node.html.twigarquivo da seguinte maneira:

{{ comment_count }}

Um exemplo básico no D6 está abaixo, você pode personalizá-lo ao seu gosto. No arquivo template.php localizado no diretório do tema, adicione algo como (substituindo YOURTHEME pelo nome do seu tema):

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

e salve o arquivo. Agora em node.tpl.php (ou qualquer modelo equivalente, node-mycontenttype.tpl.php, etc), basta adicionar:

<?php print $num_comments; ?>

Onde quer que você queira que a contagem de comentários seja localizada e salve. Limpe o cache e visualize suas alterações.

Laxman13
fonte
Eu tentei adaptar seu código para o template_preprocess_node ao drupal 7, mas estou recebendo este erro Aviso: Variável indefinida: num_comments em include () (linha 116
Alexander
O que você mudou durante a adaptação? Sua consulta ao banco de dados é semelhante à fornecida por @doterobcn abaixo?
Laxman13
12

Você pode usar $comment_countno node.tpl.php .

$type: Tipo de nó, ou seja, história, página, blog etc
$comment_count.: Número de comentários anexados ao nó.

graceman9
fonte
Suponho que $comment_countconta o número de comentários visíveis ao usuário; se o usuário atual não puder ver comentários, essa variável será definida como zero.
Kiamlaluno
11
Sim. E mais diretamente$node->comment_count
artfulrobot
4

Atualização, para o Drupal 7, sua consulta no template.php deve se parecer com:

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

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

Agora em page.html.twig:

{{ comment_count }}

Limpe o cache e visualize suas alterações.

rpayanm
fonte
É muito ruim você consultar o banco de dados assim para algo que pode ser muito mais simples usando a API Drupal: $ variable ['node'] -> get ('comment') -> comment_count;
Ipwa #
@ipwa se você sabe o nome de campo de comentário, caso contrário, não é uma solução
golddragon007
0

No Drupal 8, use isso diretamente no seu modelo de nó:

{{ node.comment.comment_count }}

Observe que, para funcionar, você precisa ter o campo de comentário padrão em seu nó, que é sempre chamado de comentário.

ipwa
fonte