• User Attivo

    [Tutorial] Creare una nuova pagina all'interno di phpbb3

    Ciao a tutti e benvenuti in questo tutorial che vi mostrerà come aggiungere una nuova pagina all'interno del nostro forum phpbb3. Questa operazione può risultare utile qualora volessimo aggiungere nuova funzionalità alla board, come ad esempio un modulo per permettere agli utenti d'invitare i loro amici tramite e-mail.

    Perchè il tutto funzioni a dovere dobbiamo creare tre files :

    • esempio.php (che caricheremo nella root del forum)
    • esempio_body.html (da collocare all'interno della directory template dello stile utilizzato)
    • esempio.php (il file language che va inserito nel seguente percorso language/it/mods)
      Passiamo adesso al contenuto dei files, nei commenti del codice potete notare le spiegazioni relativi alle varie classi richiamate dalle pagine :
    1. esempio.php :

    [php]
    <?php
    // siamo all'interno di phpbb
    define('IN_PHPBB', true);
    // percorso relativo alla root del forum
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    // l'estensione dei file richiamati
    $phpEx = substr(strrchr(FILE, '.'), 1);
    // include il core della board
    include($phpbb_root_path . 'common.' . $phpEx);
    // istanzia la sessione utente
    $user->session_begin();
    // richiama i permessi dell'utente
    $auth->acl($user->data);
    // richiama il file languge
    $user->setup('mods/esempio');
    // inizio codice personalizzato
    // qui potete aggiungere quello che meglio credete
    // fine codice personalizzato

    // imposta l'header della pagina, contiene utenti in linea, titolo pagina, conteggio messaggi privati ed altro
    page_header($user->lang['ESEMPIO_TITLE']);
    // imposta il template della pagina
    $template->set_filenames(array(
    'body' => 'esempio_body.html')
    );
    //genera il footer, contiene l'output del debug, link al PCA e crediti
    page_footer();
    ?>
    [/php]

    1. esempio_body.html

    [html]<!-- INCLUDE overall_header.html -->
    <!--di seguito il codice html personalizzato -->

    <!--fine codice html personalizzato -->
    <!-- INCLUDE overall_footer.html -->
    [/html]

    Il sistema template engine di phpbb3 è abbastanza semplice da comprendere. Il tutto ruota alla verifica delle condizioni definite da php.
    Se per esempio vogliamo mostrare un blocco visibile solo agli utenti registrati dobbiamo includerlo come nel seguente esempio :

     <!-- IF S_USER_LOGGED_IN  -->
    <div>Contenuto nascosto agli ospiti</div>
    <!-- ENDIF -->
    
    1. esempio.php (il file di lingua)

    [php]
    <?
    if (!defined('IN_PHPBB'))
    {
    exit;
    }
    if (empty($lang) || !is_array($lang))
    {
    $lang = array();
    }
    $lang = array_merge($lang, array(
    'ESEMPIO_TITLE' => 'Titolo pagina di esempio',
    ));
    ?>[/php]

    Come abbiamo visto all'inizio il file language va caricato nella cartella language/it/mods, percorso che ho stabilito nel codice della pagina principale con **$user->setup('mods/esempio'); **.
    Per compilare questo tipo di files vi consiglio di utilizzare un editor che supporti la codifica in utf senza B.O.M.
    Il Byte Order Marker è una piccola sequenza di dati per indicare un tipo di codifica Unicode del file.
    Un editor perfetto e gratuito per evitare questa situazione è Notepad ++ .