Visualizzare i commenti in posizioni differenti.

 

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->comment

Quindi 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

<?php
if (function_exists('comment_render') && $node->comment) {
   print
comment_render($node, $node->cid);
}
?>

che 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.

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

<?php
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;
 
}
}
?>

scegliendo, 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.

Altri contenuti che potrebbero interessarti

  • Drupal si occupa esclusivamente della validazione lato server delle informazioni, ma spesso è consigliabile prevedere ad una prima validazione dei dati inseriti dall'utente lato client, in modo da evitare l'invio della richiesta limitando quindi le possibilità di errore. Ovviamente la validazione...
  • Esempio di vista generata dall'integrazione del nostro modulo con views
    Alzi la mano chi non ha mai usato views. Alzi la mano che l'ha mai usato. Ok, non proprio tutti ma buona parte di voi ha alzato la mano, questo perchè è sicuramente uno strumento potentissimo per la visualizzazione delle informazioni, quindi è fondamentale (o comunque molto utile) andare ad...
  • Pagina di ricerca con filtri dinamici nelle views
    Le viste sono uno strumento estremamente potente e permettono di andare ad elaborare le informazioni creando degli elementi (pagine, blocchi, ...) di presentazione. La possibilità di usare dei filtri esposti ne fa degli strumenti adatti alla creazione di strumenti di ricerca dei contenuti. L'...
  • Chi avesse iniziato ad utilizzare Drupal 7 si sarà senz'altro d'accordo che stanno nascendo dei temi di partenza molto sofisticati da cui partire per la realizzazione di temi, in particolare sta emergendo sempre più Omega 3. Questi temi, però possono avere necessità di essere estesi per aggiungere...

Commenti

Invia nuovo commento





  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <h2> <h3> <h4> <table> <thead> <tbody> <tr> <th> <td>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Linee e paragrafi vanno a capo automaticamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.



Condividi contenuti