Quante volte, in fase di creazione o personalizzazione di un tema vi è capitato di non sapere come fare per posizionare i commenti dove volete voi, magari solo su determinate pagine, o magari solo se si verificano determinate condizioni? Bhè, a me è capitato alcune volte, e non sempre si poteva operare con una soluzione pulita, vediamo ora quel è il metodo migliore che sono riuscito a trovare.
Come prima cosa dobbiamo sapere che i commenti, i Drupal, vengono visualizzati in una variabile del nodo, e più precisamente in $node->commentQuindi operando sul tema, nel file del contenuto di cui vogliamo andare a gestire in maniera autonoma i commenti andiamo a posizionare, alla fine del file xxx.tpl.php la riga di codice:
<?php $node->comment = NULL; ?>In questo modo la variabile vine svuotata e il contenuto non verrà visualizzato nella pagina. A questo punto dobbiamo andare a posizionare i commenti dove vogliamo che questi vengano visualizzati all'interno del nodo che stiamo preparando, quindi sempre nel file xxx.tpl.php andiamo ad inserire, dove vogliamo inserire i commenti, ma comunque prima della chiamata che svuota il contenuto della variabile vista precedentemente, il codice
<?phpche ci permette di inserire i commenti all'interno della stessa pagina. Ovviamente possiamo inserire questo codice all'interno di alcuni tipi di nodi e non di altri, così come usare blocchi if per visualizzarli solo se alcune condizioni sono verificate.
if (function_exists('comment_render') && $node->comment) {
print comment_render($node, $node->cid);
}
?>
Cosa succede nel caso in cui abbiamo necessità di vedere i contenuti indicati al di fuori dal nodo, ma all'interno di un qualsiasi blocco che deve essere visualizzato nella stessa pagina? l'operazione da fare per visualizzare questo tipo do contenuto è abbastanza semplice, è sufficiente creare un nuovo blocco (Administer » Site building » Blocks » Add block). A questo punto andare a inserire il nome del blocco (per esempio Commenti) e nel contenuto del blocco inserire<?phpscegliendo, ovviamente, come formato di inserimento PHP code. A questo punto andiamo a salvare il blocco e posizioniamolo dove vogliamo, andando magari a scegliere di visualizzarlo solo in alcune pagine, o solo per determinanti utenti. Questo è tutto.
if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
$node = node_load(arg(1));
// Do something with the node
if (function_exists('comment_render') && $node->comment) {
print comment_render($node, $node->cid);
// $node->comment = NULL;
}
}
?>
Comments
Post new comment