Come mostrare il conteggio dei commenti dei nodi in node.tpl?


15

Ho avuto la brillante idea di modificare i miei permessi utente in modo che gli ospiti non possano vedere i commenti su un nodo. Non ho problemi con Views nel mio sito, poiché possono vedere chiaramente che ci sono commenti sui nodi e saranno più propensi a registrarsi. Il problema sembra essere quando arrivano sul mio sito direttamente a un nodo, non vedono alcun commento e pensano "è un po 'schifo; andiamo."

C'è un modo per mostrare la quantità di commenti sotto un nodo?

Risposte:


10

Ti consiglio di usare template_preprocess_node () .
Questo è un esempio di base per D8

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

E poi puoi usarlo nel tuo node.html.twigfile in questo modo:

{{ comment_count }}

Un esempio di base in D6 è di seguito, è possibile personalizzarlo a proprio piacimento. Nel tuo file template.php situato nella directory del tuo tema, aggiungi qualcosa sulla falsariga di (sostituendo YOURTHEME con il nome del tuo 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 salva il file. Ora in node.tpl.php (o in qualsiasi modello equivalente, node-mycontenttype.tpl.php, ecc.) Aggiungi semplicemente:

<?php print $num_comments; ?>

Ovunque desideri che il commento venga localizzato e salvato. Svuota la cache e quindi visualizza le modifiche.


Ho provato ad adattare il tuo codice per template_preprocess_node a drupal 7 ma sto riscontrando questo errore Avviso: Variabile non definita: num_comments in include () (riga 116
Alexander

Che cosa hai cambiato durante l'adattamento? La tua query sul database è simile a quella fornita da @doterobcn di seguito?
Laxman13

12

Puoi usare $comment_countin node.tpl.php .

$type: Tipo di nodo, ad esempio storia, pagina, blog, ecc
$comment_count.: Numero di commenti allegati al nodo.


Suppongo che $comment_countconti il ​​numero di commenti visibili all'utente; se l'utente corrente non può vedere i commenti, quella variabile verrebbe impostata su zero.
kiamlaluno

1
Sì. E più direttamente$node->comment_count
artfulrobot il

4

Aggiornamento, per Drupal 7 la tua query su template.php dovrebbe apparire come:

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

0

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

Ora in page.html.twig:

{{ comment_count }}

Svuota la cache e quindi visualizza le modifiche.


È davvero un male esercitarsi a interrogare il db in questo modo per qualcosa che può essere reso molto più semplice usando l'API Drupal: $ variabili ['nodo'] -> get ('commento') -> comment_count;
ipwa,

@ipwa se conosci il nome del campo del commento, altrimenti non è una soluzione
golddragon007

0

In Drupal 8 usa questo direttamente nel tuo modello di nodo:

{{ node.comment.comment_count }}

Si noti che per funzionare, è necessario disporre nel campo del commento predefinito del nodo che è sempre denominato commento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.