Avevo intenzione di ristrutturare il mio vecchio e disordinato sito fatto 3-4 mesi.

Ma quando ci ho messo le mani, nn capivo più niente perchè era tutto disordinato: codice di qua, stringhe di là, html al centro, alla fine, variabili alla cavolo... beh... La situazione era veramente disastrosa.

Fino a quando non decido di imparare finalmente a programmare con i template.

Mi informo un pò: leggo l'articolo su freephp.html.it e cerco un pò nel forum i vecchi 3d.

Dopo problemi iniziali, finalmente mi illumino: è proprio facile


Il fatto è che l'articolo del sommo GM andava perfettamente per dei template statici.

Ma se io avessi per esempio voluto creare una pagina con un sistema di news?
dove c'è:[list=1][*]una prima parte statica[*]una seconda parte dinamica (l'elenco delle news)[*]una terza parte statica[/list=1]


Beh... Mi sono chiuso dentro il mio laboratorio delle ricerche e ne sono uscito vincitore!
Finalmente avevo la soluzione in mano!

Vi provo a spiegare il tutto! (Ma chiedo venia, perchè è anche la mia prima pillola )



Allora, sappiamo che con il metodo dei template possiamo dividere completamente il codice HTML dal codice PHP su due file diversi.

Qundi creiamo due nuovi file:

index.php e index.tpl*

(*) dove per .tpl ci sta qualsiasi estensione! tanto il formato è sempre testo


Fin qui ci siete?
Bene, iniziamo a buttare giù due righe per il file index.tpl:
Codice PHP:
<html>
<
head>
<
title>{title}</title>
</
head>
<
body>
Questa è una prova di news!



Fine della prima parte!




<
hr-tpl>

News numero {news_id} - {news_title}




<
hr-tpl>



Questa è la fine della pagina!

by {autore}!
</
body>
</
html
Beh.. è tutto codice html eccezion fatta per due o tre simboli che con l'html non centrano proprio 'na mazza

Vi spiego la loro utilità:
{stringa} <-- queste sono stringhe che daranno posto alle variabili una volta elaborato con il php
<hr-tpl> <-- questa, come da nome, è un interruzione di template

Credo che stiate capendo ciò che voglio fare, vero?

Ma continuiamo!


Buttiamo giù il codice php da mettere nel file index.php (prima parte):
Codice PHP:
// 1- iniziamo con il prendere il testo dal file template con il fido implode()
$input=implode("",file("index.tpl"));

// 2- dividiamo in 3 parti con il sommo explode()
$temp=explode("<hr-tpl>",$input);

// 3- attribuiamo questo array a diverse variabili
$tpl_alto=$temp["0"];
$tpl_news_temp=$temp["1"];
$tpl_basso=$temp["2"]; 
Spiegiamo questa prima parte:
nel primo passo abbiamo imploso in una variabile tutto il contenuto del file index.tpl;
nel secondo passo abbiamo invece diviso in tre parti (visto che le interruzioni di template <hr-tpl> erano due) il file;
nel terzo passo abbiamo attribuito queste tre parti a 3 diverse (la prima statica, la seconda dinamica e la terza statica) variabili.

Buttiamo giù il codice php da mettere nel file index.php (seconda parte):
Codice PHP:
// Settiamo la prima parte della pagina
$title="Creazione di template dinamici! - by eX-Arus";
$tpl_alto=str_replace("{title}"$title$tpl_alto);

// Settiamo la seconda parte della pagina, la parte dinamica
$tpl_news="";
/*
eventuale query al db mysql
$action=mysql_query("SELECT * FROM db")
*/
while ($array=mysql_fetch_array($action))
{
        
//attribuiamo alla varibile news la seconda parte di testo
        
$news=$tpl_news_temp;
        
//trasformiamo gli array
        
$news_id=$array["news_id"]
        
$news_titolo=$array["news_titolo"]
        
//cambiamo le stringhe del template con le varibili
        
$news=str_replace("{news_id}"$news_id$news);
        
$news=str_replace("{news_title}"$news_title$news);
        
//aggiungiamo questa parte di testo alla variabile finale
        
$tpl_news.=$news;
}

// Settiamo la terza parte della pagina
$autore="eX-Arus";
$tpl_basso=str_replace("{autore}"$autore$tpl_basso); 
Spieghiamo la seconda parte:
ho semplicemente cambiato le stringhe del template ({stringa}) con delle varbili grazie alla funzione str_replace()

Buttiamo giù il codice php da mettere nel file index.php (ultima parte):
Codice PHP:
// Output dei dati della pagina. Operazione finale
$output="";
$output.=$tpl_alto;
$output.=$tpl_news;
$output.=$tpl_basso;
echo 
$output
Ho semplicemente creato una nuova variabile e ho aggiunto in ordine i valori delle 3 parti.

----------------------------------------------------------------------

Riepilogo di tutto il codice php:
Codice PHP:
// iniziamo con il prendere il testo dal file template con il fido implode()
$input=implode("",file("index.tpl"));

// dividiamo in 3 parti con il sommo explode()
$temp=explode("<hr-tpl>",$input);

// attribuiamo questo array a diverse variabili
$tpl_alto=$temp["0"];
$tpl_news_temp=$temp["1"];
$tpl_basso=$temp["2"];

// Settiamo la prima parte della pagina
$title="Creazione di template dinamici! - by eX-Arus";
$tpl_alto=str_replace("{title}"$title$tpl_alto);

// Settiamo la seconda parte della pagina, la parte dinamica
$tpl_news="";
/*
eventuale query al db mysql
$action=mysql_query("SELECT * FROM db")
*/
while ($array=mysql_fetch_array($action))
{
        
//attribuiamo alla varibile news la seconda parte di testo
        
$news=$tpl_news_temp;
        
//trasformiamo gli array
        
$news_id=$array["news_id"]
        
$news_titolo=$array["news_titolo"]
        
//cambiamo le stringhe del template con le varibili
        
$news=str_replace("{news_id}"$news_id$news);
        
$news=str_replace("{news_title}"$news_title$news);
        
//aggiungiamo questa parte di testo alla variabile finale
        
$tpl_news.=$news;
}

// Settiamo la terza parte della pagina
$autore="eX-Arus";
$tpl_basso=str_replace("{autore}"$autore$tpl_basso);

// Output dei dati della pagina. Operazione finale
$output="";
$output.=$tpl_alto;
$output.=$tpl_news;
$output.=$tpl_basso;
echo 
$output
Ok, ho finito, spero di non avervi annoiato e di aver spiegato una cosa nuova ed interessante ^_^

Grazie a tutti per la lettura, e se avete consiglio siete ben accetti!


Ciao