|
Par
gaga26
Mise à jour : 22/08/2008
Difficulté :
Facile
63 visites depuis 7 jours
, classé 640/777
|


Je ne critique pas du tout les codeurs de ce script, ils font un travail remarquable, ils en font peut-être même trop, c'est ce qui fait que leurs codes sont assez lourds.

1 2 3 | <?php include('libs/gaga.class.php'); $tpl = new gagatemplate();//nous n'avons pas besoin de définir de dossier, vu que nous sommes à la racine du site, pour plus d'infos, consultez la doc |
1 2 3 4 5 6 7 8 | <?php $req = mysql_query('SELECT COUNT(*) as nb FROM news'); $nb_news = mysql_fetch_assoc($req); $tpl->assign(array( 'titre_page' => 'News <-> Mon_site.com', 'timestamp' => time(), 'nb_news' => $nb_news['nb'])); |
1 2 3 4 5 6 7 | CREATE TABLE `news` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `titre` VARCHAR( 100 ) NOT NULL , `pseudo` VARCHAR( 30 ) NOT NULL , `texte` TEXT NOT NULL , `date` DATETIME NOT NULL ) |
1 2 3 4 5 | <?php $req = mysql_query('SELECT pseudo, titre, texte, DATE_FORMAT(date, "%d/%c/%Y %H:%i") date FROM news ORDER BY date DESC'); while($data = mysql_fetch_assoc($req)) { ... |
1 2 3 4 5 6 7 8 9 10 | <?php $req = mysql_query('SELECT pseudo, titre, texte, DATE_FORMAT(date, "%d/%c/%Y %H:%i") date FROM news ORDER BY date DESC'); while($data = mysql_fetch_assoc($req)) { $tpl->assign_array('list_news', array( 'pseudo' => $data['pseudo'], 'titre' => $data['titre'], 'texte' => $data['texte'], 'dateheure' => $data['date'])); } |
1 2 3 4 | <?php $tpl->cache_time = 300; //on met le cache à 5 minutes (300 sec) $tpl->cache = true; //active la mise en cache $tpl->parse('news.tpl'); //affichage du fichier template "templates/news.tpl" |
Les erreurs, c'est toujours tout bête...

1 2 3 4 5 6 7 8 9 10 11 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>News</title> </head> <body> <h1><!-- ici le titre --></h1> <!-- Ici, notre page --> </body> </html> |
1 | <a href="index.php">Accueil</a> - <a href="news.php">News</a> - <a href="forum.php">Forum</a> |
Je suis tout à fait d'accord, mais là, c'est pour l'exemple.
1 2 3 4 5 6 7 8 9 10 11 12 | <h1>{titre_page}</h1> <p class="menu"><include file="menu.tpl" /></p> <p style="text-align:center;">Bonjour, voici la date : <function name="date" string="d/m/Y h:i:s" var="$timestamp" /> <if cond="$nb_news == 0 || $nb_news == 1"><!-- Je met ce code car le site du zéro bug si j'utilise est_plus_grand_que, mais vous pouvez très bien le remplacer chez vous. --> il y a {nb_news} news enregistrée <else /> il y a {nb_news} news enregistrées </if> </p> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <foreach var="$list_news" as="x"> <table align="center"> <tr> <th>{x[titre]}</th> </tr> <tr> <td> <div style="text-align: justify">Par {x[pseudo]} le {x[dateheure]}</div> {x[texte]} </td> </tr> </table> </foreach> |
Toutefois, je vous laisse vous débrouiller si vous désirez faire une section d'administration des news. 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <? mysql_connect('localhost', 'root', ''); // Connexion à MySQL mysql_select_db('test'); // Sélection de la base test include('libs/gaga.class.php');//inclusion du moteur $tpl = new gagatemplate();//déclaration de l'instance $req = mysql_query('SELECT COUNT(*) as nb FROM news'); $nb_news = mysql_fetch_assoc($req);//récupération du nombre de news $tpl->assign(array(//déclaration des variables 'titre_page' => 'News <-> Mon_site.com', 'timestamp' => time(), 'nb_news' => $nb_news['nb'])); $req = mysql_query('SELECT pseudo, titre, texte, DATE_FORMAT(date, "%d/%c/%Y %H:%i") date FROM news ORDER BY date DESC'); while($data = mysql_fetch_assoc($req))//récupération des news { $tpl->assign_array('list_news', array(//déclaration des variables du bloc "news" 'pseudo' => $data['pseudo'], 'titre' => $data['titre'], 'texte' => $data['texte'], 'dateheure' => $data['date'])); } mysql_close();//fermeture de la connexion sql $tpl->cache_time = 300; //on met le cache à 5 minutes (300 sec) //!\Mise en cache seulement lorsque les essais sont terminés !!! //$tpl->cache = true; //activation de la mise en cache $tpl->parse('news.tpl');//compilation du fichier "templates/news.tpl" ?> |
1 | <a href="index.php">Accueil</a> - <a href="news.php">News</a> - <a href="forum.php">Forum</a> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>News</title> </head> <body> <h1>{titre_page}</h1> <p class="menu"><include file="menu.tpl" /></p> <p style="text-align:center;">Bonjour, voici la date : <function name="date" string="d/m/Y h:i:s" var="$timestamp" /> <if cond="$nb_news == 0 || $nb_news == 1"> il y a {nb_news} news enregistrée <else /> il y a {nb_news} news enregistrées </if> </p> <foreach var="$list_news" as="x"> <table align="center"> <tr> <th>{x[titre]}</th> </tr> <tr> <td> <div style="text-align: justify">Par {x[pseudo]} le {x[dateheure]}</div> {x[texte]} </td> </tr> </table> </foreach> </body> </html> |
| Fonction | Description |
|---|---|
| gagatemplate() | pour déclarer le moteur de templates |
| assign() | pour déclarer une ou plusieurs variables |
| assignArray() | pour déclarer un bloc |
| parse() | pour compiler et afficher un fichier template |
| cleanCompileDir() | vide le dossier des fichiers compilés |
| cleanCacheDir | vide le dossier des fichiers mis en cache |
| debug() | affiche un popup avec la page de débugage |
| delCache() | permet de supprimer le cache d'un fichier |
| isntInCache() | permet de savoir si un fichier n'est plus en cache ou pas |
| Variables | Description |
|---|---|
| tplDir | définit le dossier des fichiers templates |
| compileDir | définit le dossier des fichiers compilés |
| cacheDir | définit le dossier des fichiers mis en cache |
| forceCompile | définit si le fichier doit être recompilé ou pas |
| cache | définit si le cache est activé ou pas |
| cacheTime | définit le temps de mise en cache en secondes |
| display | définit s'il faut afficher ou pas les fichiers compilés |
| Balises | Description |
|---|---|
| var | pour afficher une variable |
| foreach | permet d'explorer un bloc |
| include | inclut un fichier dans un autre |
| condition | permet les conditions dans les templates |
| function | permet d'utiliser une fonction définie dans le php |
| commentaire | permet d'ajouter des commentaires dans les templates |
1 2 | $theme = $_COOKIE['theme'];
$tpl->assign('design', $theme);
|
1 | <link href="templates/design/{design}/style.css" rel="stylesheet" title="{design}" type="text/css" /> |
1 2 3 4 5 | $lang = $_SESSION['lang'];
if(is_file('templates/'.$lang.'/presentation.tpl'))
$tpl->parse($lang.'/presentation.tpl');
else
exit('ERROR : No file for your language !'); //Tout le monde peut comprendre ça. ^^
|
1 2 3 4 5 6 7 | <foreach var="$list_news" as="x"> <table align="center"> [...] </table> <foreachelse /> <div align="center">Il n'y a encore aucune news</div> </foreach> |