Far apparire la scritta "Risposte" solo quando ce ne sono


User login

Far apparire la scritta "Risposte" solo quando ce ne sono

Submitted by ziobudda on Thu, 01/05/2008 - 00:45

Prima di tutto una nota su drupal: sia per i commenti ad un "node", sia per le risposte ad un post di un forum, questo CMS utilizza sempre i commenti, e non è possibile theme-izzare facilmente questa peculiarità.

Prima di spiegarvi come ho realizzato questa nuova funzionalità vi presento il codice del mio file comment.tpl.php:


<?
function varthread($val) {
static $thread = -1;
if ($thread == -1) {
$thread = 0;
return true;
}
return false;
}

if (varthread($comment->thread)) {
$res = db_result(db_query("select type from node where nid = %d",$comment->nid));

if ($res == 'forum') {
?>

RISPOSTE:

<?
} else {
?>

COMMENTI:

<?
}
}
?>

new) ? ' comment-new' : ''; print ($comment->status == COMMENT_NOT_PUBLISHED) ? ' comment-unpublished' : ''; print ' '. $zebra; ?>"> <?php if ($submitted): ?>
<?php print t('Da !username, il !date: ', array('!username' => theme('username', $comment), '!date' => date("d/m/Y",$comment->timestamp))); ?>
<?php endif; ?>

<?php if ($comment->new) : ?>

<?php print drupal_ucfirst($new) ?>
<?php endif; ?>

<?php print $content ?>

Il cuore di tutto questo codice sono la funzione varthread() posta in alto al file ed il piccolo codice PHP scritto sotto.

Partiamo dalla funzione: il suo scopo è quello di ritornare true solamente la prima volta che viene invocata, mentre in tutti gli altri casi deve tornare FALSE. Per fare questo utilizza una variabile di tipo static, che sappiamo non perdere il suo valore durante l'esecuzione di tutto lo script PHP. Ritornare TRUE solamente la prima volta è dovuta da un'altra scelta fatta a monte sui commenti: devono essere visualizzati in ordine di inserimento, dal piu' vecchio al piu' giovane. Modificando due righe di questa funzione è possibile controllare anche il caso contrario (prima i piu' giovani).

Lo script PHP che segue la funzione, che è poi quello che invoca la varthread(), serve solamente per differenziare la scritta da visualizzare: RISPOSTE nel caso di forum e COMMENTI in tutti gli altri casi. Per fare questa scelta lo script controlla quale è il tipo di node relativo al commento che stiamo osservando (noi abbiamo a disposizione solamente il nid all'interno del commento) ,e a seconda del risultato visualizza una scritta oppure un'altra.

 

Trackback URL for this post:

http://www.ziodrupal.net/trackback/12

Inserito in:

No comments in reply to Far apparire la scritta "Risposte" solo quando ce ne sono

Merry Christmas