Limitare i visitatori sul proprio forum Phpbb3
Lorenzo Denami | 8 05 2008Dopo alcune settimane in cui sono rimasto senza pc, ritorno a scrivere sul mio foglio degli appunti preferito. Questa volta riporterò una modifica fatta da me al forum Phpbb3 (Versione 3.0) del sito di San Costantino Calabro, che vi invito ad andare a visitare. Questa modifica consente di limitare le possibilità dei visitatori nel seguente modo: per ogni post si visualizza solo il primo messaggio, senza allegati, se non inseriti in linea col testo. Alla fine di questo viene accodato un avviso che invita a registrarsi o loggarsi attraverso i link riportati. Se la discussione si sviluppa su più pagine viene visualizzato sempre e solo il primo messaggio anche se clicchiamo sulla seconda pagina o sulla ventesima. Ho preferito tenere la possibilità di visualizzare il numero di pagine in modo da sottolineare la consistenza della discussione, e soprattutto per limitare la modifica ad un solo file. Di seguito riporto le modifiche effettuate al file viewtopic.php di phpbb3 (ver 3.0)
Cerchiamo la riga con:
$start = request_var('start', 0);
e sotto aggiungiamo:
if($user->data['user_id'] == ANONYMOUS){
$start=0;
}
in modo tale che chi richiede di vedere le pagine successive alla prima, di una determinata discussione, visualizza sempre e comunque il primo messaggio.
Ora facciamo in modo che si possa accodare in fondo alla pagina visualizzata il messaggio che invita l’utente a logarsi.
Cerchiamo dunque la riga con:
$postrow = array(
e alla riga immediatamente prima aggiungiamo:
$avviso='<p><blockquote class="uncited"><div><span style="color: rgb(0, 128, 0);"><span style="font-family: Comic Sans MS;">Per visualizzare il resto della discussione </span><a class="postlink" href="./ucp.php?mode=login"><span style="color: rgb(191, 0, 0);">autentificati al sistema.</span></a><span style="color: rgb(0, 128, 0);"> Per eseguire il login devi essere registrato. La registrazione è completamente gratuita, richiede solo pochi secondi e garantisce l’accesso alle funzioni avanzate. L’amministratore può anche dare permessi speciali agli utenti. Prima di eseguire il login assicurati di aver letto i termini d’uso e le varie regole.</span><br/><br/><a class="postlink" href="./viewtopic.php?f=9&t=59"><span style="color: rgb(191, 0, 0);">Come e perchè iscriversi</span></a> | <a class="postlink" href="./ucp.php?mode=terms"><span style="color: rgb(191, 0, 0);">Condizioni d’uso</span></a>| <a class="postlink" href="./ucp.php?mode=privacy"><span style="color: rgb(191, 0, 0);">Trattamento dei dati personali</span></a> | <a class="postlink" href="./ucp.php?mode=register"><span style="color: rgb(191, 0, 0);">Iscriviti</span></a><br/></span></div></blockquote><p>';
Attenzione il codice in questo caso è effettivamente incomprensibile. Ma se facciamo bene attenzione notiamo che non è altro che un semplice pezzo di ipertesto in html. Naturalmente il messaggio è personalizzable.
Sostituiamo la riga con:
'MESSAGE' => $message,
con la riga:
'MESSAGE' => $user->data['user_id'] != ANONYMOUS?$message:$message.$avviso,
e ancora la riga con:
if (!empty($attachments[$row['post_id']]))
con la riga con:
if (!empty($attachments[$row['post_id']]) && $user->data['user_id'] != ANONYMOUS)
in modo che gli allegati, se non inseriti in linea con il testo, non vengano visualizzati.
In fine, cerchiamo la riga con:
unset($attachments[$row['post_id']]);
e subito sotto aggiungiamo
if($user->data['user_id'] == ANONYMOUS){
break;
}
in modo da bloccare il while dopo il primo messaggio e visualizzare solo quest’ultimo.
Come potete vedere la modifica è stata banale. Partendo da questi spunti si possono effettuare altre modifiche interessanti in modo da andare maggiormente incontro alle proprie esigenze. Spero vi sia stata di aiuto. Buon lavoro
Allegati: viewtopic.zip





