Suite à un de mes topics du forum j'ai adopté un petit système de template maison simpliste mais suffisant pour l'ampleur de mon projet.
Seulement j'ai un petit soucis quand il s'agit de faire une include.
Je m'explique
Tout dabord voilà a quoi ressemble mon fichier à inclure. Sachant qu'il est provisoire en ce qui conçerne la boucle et l'affichage direct avec echo. Mais en gros se fichier doit exécuter du code avant de l'afficher :
<?php
$req = new mysql( $ServeurSql, $LoginSql, $PasseSql, $BaseSql );
$res = $req -> ExecReq( "SELECT * FROM cms_menu ORDER BY position" );
while( $val = $req -> ArraySuiv( $res ) )
{
echo $val['nom'];
}
?>
Ensuite je cherche donc à l'appeler lorsque je rencontre la chaine %%menu%% dans le fichier que je parcours. Je vais coller les 2 méthodes que j'ai essayé. Je dois être sur une mauvaise piste car aucune des deux ne donne le résultat voulu :$html = LireFichier( REP_PAGES.$page.'.htm' );
### On parse
// Tableau des éléments a remplacer
$balise[] = '%%NOM_SITE%%';
$balise[] = '%%DESC_SITE%%';
$balise[] = '%%MOTSCLES_SITE%%';
$balise[] = '%%THEME_SITE%%';
$balise[] = '%%MENU_SITE%%'; // ICI
// Eléments de remplacement
$remplacement[] = NOM_SITE;
$remplacement[] = DESC_SITE;
$remplacement[] = MOTSCLES_SITE;
$remplacement[] = REP_THEMES.THEME_SITE;
$remplacement[] = include REP_MODULES.'menu.php'; // ICI
// Remplacement
$html = str_replace( $balise, $remplacement, $html );
### On affiche la page
echo $html;
Cette première méthode marcherais presque, le code est exécuté. Le problème c'est que l'unclude se fait en tout début de page et apparait même avant le header de ma page au lieu de se faire à l'endroit ou la balise %%MENU_SITE%% se trouve dans le fichier que je parse...Voici la seconde que j'ai essayé par dépis. Celle-ci évidement n'exécute pas mon code mais se contente de le lire, logique en fait...
$remplacement[] = LireFichier( REP_MODULES.'menu.php' );
Voilà
Si quelqun à une idée et peut m'expliquer pourquoi dans la première méthode l'include ne se fait pas à l'endroit voulu... j'ai du mal à comprendre. Quelquechose cloche dans mon raisonnement
Edit : la fonction LireFichier se contente simplement de parcourir un fichier.