Système de template
Posté : 25 août 2005, 22:13
Salut
Voilà je suis en train de coder un site pour un ami, et je me rend compte que l'utilisation de "template" (pas de design complets, je vais expliquer
) facilite énormément la vie, et surtout le code.
J'ai alors cherché dans le systeme d'Invision (un forum) qui propose l'intégration d'informations du forum (nombre de membres, de posts ...) à partir d'un systèeme de "mini-templates", qui s'appele ssi template.
J'ai alors cherché dans le code pour en arriver à un code (attention version très simplifiée, sans aucunes vérification, je les ait supprimée au fur et à mesure pour voir ce qui pouvait empecher mon script de marcher) que voici :
et voici le script du fichier qui sert de template (matchs.html)
et quand je charge la page avec le javascript, rien 
j'ai essayé à partir de ma page "templates_matchs2.php" d'afficher ce que ça devrait donner en ajoutant :
C'est alors que j'ai essayé d'afficher ce que ça devrait donner, toujours à partir de ce même fichier, mais cette fois en n'utilisant qu'une seule et même fonction
quelqu'un aurait il une idée ? je dois dire que mes tests étant fructueux je désespère
c'est peut être tout bête mais je n'ai rien trouvé :'(
Petite précision : les fonctions ne fonctionnent pas je crois dans quand je les appele dans ma focntion "do_matchs" car le output($to_echo)" par exemple ne donne rien, alors que si je fais un echo il m'est arrivé qu'il marche (je ne sais plus dans quel cas par contre avec tous ces essais :\)
Merci de votre aide
Voilà je suis en train de coder un site pour un ami, et je me rend compte que l'utilisation de "template" (pas de design complets, je vais expliquer
J'ai alors cherché dans le systeme d'Invision (un forum) qui propose l'intégration d'informations du forum (nombre de membres, de posts ...) à partir d'un systèeme de "mini-templates", qui s'appele ssi template.
J'ai alors cherché dans le code pour en arriver à un code (attention version très simplifiée, sans aucunes vérification, je les ait supprimée au fur et à mesure pour voir ce qui pouvait empecher mon script de marcher) que voici :
<?php
$export_type = "js";
$template_url = "templates";
switch ($_GET['a'])
{
case 'matchs':
do_matchs();
break;
default:
echo "erreur";
break;
}
function output($to_echo) {
$to_echo = str_replace ("\r", "", $to_echo);
$to_echo = str_replace ("\n", "", $to_echo);
$to_echo = str_replace ("'", "\"", $to_echo);
echo "<!--\ndocument.write('".$to_echo."');\n-->";
}
function load_template($template=""){
$filename = "templates/matchs.html";
if (file_exists($filename)) {
if ( $FH = fopen($filename, 'r') )
{
$template = fread( $FH, filesize($filename));
fclose($FH);
}
}
else{
echo "Erreur : $filename";
}
return $template;
}
function parse_template( $template, $assigned=array() )
{
foreach( $assigned as $word => $replace)
{
$template = preg_replace( "/\{$word\}/i", "$replace", $template );
}
return $template;
}
function do_matchs(){
$template = load_template("matchs.html");
$to_echo = parse_template( $template, array (
'date' => "ladate",
'team' => "leskilleurs",
'score' => "lescore",
'comment' => "commentaire"
)
);
output($to_echo);
}
?>
Que j'appele ensuite (pour l'intégrer dans ma page, avec une commande javascript :Code : Tout sélectionner
<script type="text/javascript" src="templates_matchs2.php?a=matchs"></script>Code : Tout sélectionner
<tr>
<td width="25%">{date}</td>
<td width="50%">{team}</td>
<td width="20%">{score}</td>
<td width="5%">{comment}</td>
</tr>j'ai essayé à partir de ma page "templates_matchs2.php" d'afficher ce que ça devrait donner en ajoutant :
$match = do_matchs();
Mais sans résultat non plus.C'est alors que j'ai essayé d'afficher ce que ça devrait donner, toujours à partir de ce même fichier, mais cette fois en n'utilisant qu'une seule et même fonction
function do_matchs2(){
$filename = "templates/matchs.html";
$FH = fopen($filename, 'r');
$template = fread( $FH, filesize($filename));
$assigned = array (
'date' => "ladate",
'team' => "leskilleurs",
'score' => "lescore",
'comment' => "commentaire"
);
foreach( $assigned as $word => $replace)
{
$template = preg_replace( "/\{$word\}/i", "$replace", $template );
}
echo $template;
}
et là j'obtiens bien j'ai alors tenté d'appeler cette fonction sur la page où je veuix l'inclure j'ai donc modifiéladate leskilleurs lescore commentaire
case 'matchs':
do_matchs();
break;
Pour en faire
case 'matchs':
do_matchs2();
break;
Et ça ne marche pas Petite précision : les fonctions ne fonctionnent pas je crois dans quand je les appele dans ma focntion "do_matchs" car le output($to_echo)" par exemple ne donne rien, alors que si je fais un echo il m'est arrivé qu'il marche (je ne sais plus dans quel cas par contre avec tous ces essais :\)
Merci de votre aide