Autore Sottoscrivi questo autore
Avatar utente
Lucky
Amministratore
Amministratore
 
Articoli: 75
Iscritto il: 11 gen 2009, 21:14
Località: Bari
Sito Web: http://www.portalxl.eu
Cerca articoli

Opzioni segnalibri
Segnalibri social networks disponibili:
Blogger Delicious Digg Facebook Feed amici Google Link in Live Mixx MySpace Netvibes Reddit Stumbleupon Technorati Twitter Wordpress
Vota questo articolo

Questo articolo è valutato 3
con 0 voti espressi.
Esporta articolo
 

[FAQ] Guida alla realizzazione di una Custom Page

ID Articolo: 59
Scritto da: Lucky
Scritto il: 25 lug 2010, 10:30
Descrizione articolo: Creare una pagina personalizzata su phpBB
Link esterno a questo articolo:
http://portalxl.eu/kb.php?a=59

La presente guida è di Micogian, collaboratore e mio collega di del gruppo Staff di phpbb.it.

Creazione di pagine personalizzate in phpBB

Queste note vogliono essere una piccola guida per capire come sia strutturato un Forum phpBB e come si possa sfruttare questa conoscenza per creare nuove pagine utilizzando la struttura e lo stile del nostro Forum.

Mi riferisco a un interessante articolo datato 21 ago 2008 di "pentapenguin" su phpbb.com "Add a New Custom Page to phpBB" (Aggiungi una pagina personalizzata in phpBB).

Tutto il meccanismo del Forum phpBB si basa sul Database mysql che contiene e memorizza tutti i dati che fanno funzionare il Forum e che vengono via via inseriti attraverso i Topics.
Considerando che il Database contiene tutte le informazioni che ci possono servire, possiamo utilizzarlo per estrarre e visualizzare dati in maniera diversa da quella prevista per default.

Detto questo vediamo cosa si deve fare per aggiungere una pagina personalizzata nel nostro Forum.

Il meccanismo che ci permette di operare nel Forum è rappresentato da una pagina PHP che attraverso le funzioni e lo stile utilizzato ha il compito di eseguire la connessione al Database, il controllo e le autorizzazioni relative all'utente e attraverso opportune query predisporre i dati necessari da visualizzare.
La visualizzazione avviene tramite un file HTML inserito nel "template" del proprio style.
Questo file HTML contiene degli "INCLUDE" cioè delle righe di codice che inseriscono nella pagina file già pronti e che quindi non hanno necessità di essere riscritti ogni volta.
Avremo così dei file che inseriscono la testata ("overall.header.html"), il corpo (ad esempio "viewforum_body.html"), il piede ("overall.footer.html") e altri file tutti destinati a inserire una particolare sezione nella pagina.

Credo che la cosa migliore per capire questo meccanismo sia quella di realizzare una pagina di prova, vediamo come fare.

- Creare il file "user_page.php"

Con un editor di testo (Blocco Note o Note Pad) copiamo il seguente codice in un file che chiameremo "user_page.php".
Il prefisso "user_" da usare nei nostri file potrebbe essere una buona soluzione per evitare di confondere le nostre pagine personalizzate da quelle di sistema.
Fate attenzione che non ci siano spazi o righe vuote prima del tag <?php e alla fine del file.

Copiare il seguente codice in un file che chiameremo "user_page.php"
Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

page_header('Title');

$template->set_filenames(array(
    'body' => 'user_page_body.html',
));

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();

?>


Vediamo cosa significano queste righe: le prime righe del codice hanno la funzione di abilitare il PHPBB, di
includere il file "common.php" che contiene tutte le funzioni di controllo del Database e dell'utente collegato.

- page_header('Title'); = è il titolo della pagina, quello che compare nella barra di controllo dei browser quando si
apre una pagina.
- $template->set_filenames(array('body' => 'user_page_body.html',)); = indica quale file HTML è collegato a questa pagina.
- make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx")); = è la parte a fondo pagina che consente di scegliere la Sezione del Forum.
- page_footer() = richiama il piede della pagina.

A questo punto potrebbe non essere necessario, ma se vogliamo includere nella nuova pagina le variabili nella nostra lingua
dobbiamo inserire il file che le contiene nella riga "$user->setup();"

in questo modo:
Codice: Seleziona tutto
$user->setup('nome_del_file_lingua');


Sostituire il "nome_del_file_lingua" con il nome del file senza estensione che contiene la traduzione delle variabili in italiano.
Ad esempio, se le variabili utilizzate nella pagina sono inserite in "viewtopic.php" inserire:
Codice: Seleziona tutto
$user->setup('viewtopic');


Altra cosa che possiamo fare è inserire il Titolo della pagina modificando la riga:
Codice: Seleziona tutto
page_header('Titolo della pagina');


Se volete creare una pagina accessibile solo agli iscritti dovete sostituire la riga:
Codice: Seleziona tutto
$user->setup();


con il seguente codice:
Codice: Seleziona tutto
if ($user->data['user_id'] == ANONYMOUS)
{
    login_box('', $user->lang['LOGIN']);
}


Nota: se volete restringere l'accesso dei motori di ricerca alla vostra pagina inserite il seguente codice:

Codice: Seleziona tutto
if ($user->data['is_bot'])
{
   redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
}

In questo caso i "bot" verranno indirizzati verso la Home.


Il file "user_page_body.html"

Ora andremo a creare il file HTML necessario per visualizzare il file PHP appena creato.

Copiate con un editor di testo il seguente codice in un file nominandolo "user_page_body.html", il nome che abbiamo prima inserito nella sezione "template" del file PHP.

Codice: Seleziona tutto
<!-- INCLUDE overall_header.html -->

<h2>Titolo della pagina</h2>

<div class="panel">
   <div class="inner"><span class="corners-top"><span></span></span>

   <div class="content">
      <p>
         contenuto della pagina.
      </p>
   </div>

   <span class="corners-bottom"><span></span></span></div>
</div>

<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->

Se volete potete sostitituire il titolo della pagina e il contenuto.
Ad esempio sostituite la stringa "contenuto della pagina" con questo testo:
Codice: Seleziona tutto
Per creare una nuova pagina in phpBB è necessario:
         <ul>
            <li>creare un file PHP che stabilisce la connessione con il Database e fornisce i controlli necesssari.</li>
            <li>inserire nei file "language" le eventuali variabili non previste per default.</li>
            <li>creare il file HTML nel template del vostro stile che provvede a visualizzare i dati richiesti.</li>
         </ul>



Abbiamo tutto quello che serve per fare una prova.

1) Copiamo il seguente codice in un file che chiameremo "user_page.php".
Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

page_header('Prova user_page');

$template->set_filenames(array(
    'body' => 'user_page_body.html',
));

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();

?>

2) Copiamo il seguente codice in un file che chiameremo "user_page_body.html"
Codice: Seleziona tutto
    <!-- INCLUDE overall_header.html -->

    <h2>Prova pagina personalizzata</h2>

    <div class="panel">
       <div class="inner"><span class="corners-top"><span></span></span>

       <div class="content">
          <p>
             Per creare una nuova pagina in phpBB è necessario:
         <ul>
            <li>creare un file PHP che stabilisce la connessione con il Database e fornisce i controlli necesssari.</li>
            <li>inserire nei file "language" le eventuali variabili non previste per default.</li>
            <li>creare il file HTML nel template del vostro stile che provvede a visualizzare i dati richiesti.</li>
         </ul>
          </p>
       </div>

       <span class="corners-bottom"><span></span></span></div>
    </div>

    <!-- INCLUDE jumpbox.html -->
    <!-- INCLUDE overall_footer.html -->


Caricate via FTP il file PHP nella root del Forum, mentre il file HTML va inserito nella cartella "template" del vostro stile.

Aprite il vostro browser e inserite l'url "http://www.vostro_sito.it/forum/user_page.php"
Naturalmente cambiate il nome "forum" se diverso, oltre al nome del dominio.
Se non ci sono stati errori avrete una pagina simile nella testata e piede al vostro Forum, ma con il corpo contenente il testo da voi inserito.

Con questa pagina di base possiamo inserire nel "corpo" quello che vogliamo.

Se invece vogliamo che la pagina sia visibile solo dagli utenti di un determinato gruppo (es.: group_id=2) , inseriamo il codice che rimanda al login tutti gli altri:
Codice: Seleziona tutto
if ($user->data['group_id'] != '2')
    {
        login_box('', $user->lang['LOGIN']);
    }


Se vogliamo escludere alcuni gruppi:
Codice: Seleziona tutto
if ($user->data['group_id'] == '2'  || $user->data['group_id'] == '3'  || $user->data['group_id'] == '4' )
    {
        login_box('', $user->lang['LOGIN']);
    }


La creazione, il mantenimento e gli aggiornamenti per il progetto Portal XL Italia richiedono molto tempo e fatica, aiutaci con una donazione, tutte le info qui.

Immagine
© Portal XL Italia Group - www.portalxl.eu
Questo articolo è stato modificato da Lucky il 3 ago 2010, 20:18

Chi c’è in linea

Iscritti connessi: Google [Bot], Microsoft Bing [Bot]

cron