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