Billet du blogue

Templates PHP

Lorsque j’ai à travailler sur un projet qui n’utilise pas un framework MVC, au lieu de créer des fichiers HTML séparés et d’y inclure un fichier d’entête et de pied de page à l’aide du module mod_include d’Apache ou d’un simple <?php include("entete.html"); ?>, j’y vais d’une façon différente.

Un problème avec une inclusion statique est que le contenu du fichier que l’on ajoute est… statique! On ne peut modifier certaines choses, comme le titre de la page, si l’élément TITLE est dans le fichier entete.html.

Un autre problème est que si certaines pages requièrent différents scripts Javascript ou différentes feuilles de style, on doit toutes les inclure dans l’entête — ce qui fait que chaque fichier doit être chargé lorsqu’on arrive sur le site pour la première. Je pourrais utiliser une méthode similaire à celle que propose Christian Heilmann dans son article « Keeping JavaScript Dependencies at Bay », mais j’ai choisi d’en utiliser une autre qui gère à la fois les scripts Javascript et les feuilles de style CSS.

Ma méthode est donc la suivante : Pour chaque page du site, on place ce code au début du fichier :

<?php
  $GLOBALS['pagedata']['titre']       = 'Accueil';
  $GLOBALS['pagedata']['stylesheets'] = array("global.css"=>"screen", "print.css"=>"print", "accueil.css"=>"screen");
  $GLOBALS['pagedata']['scripts']     = array("jquery.js", "global.js", "accueil.js");
  include(dirname(__FILE__)."/includes/entete.php");
?>

Le contenu de includes/entete.php ressemblera à ceci — sans le contenu (X)HTML habituel (DOCTYPE, HEAD, etc.) :

<title><? echo $GLOBALS['pagedata']['titre']?></title>

<?php
  if (isset($GLOBALS['pagedata']['stylesheets'])) {
    foreach ($GLOBALS['pagedata']['stylesheets'] as $sheet => $media) {
      echo '<link type="text/css" rel="stylesheet" href="/css/'.$sheet.'" media="'.$media.'" />'."\n";
    }
  }
?>
<?php
  if (isset($GLOBALS['pagedata']['scripts'])) {
    foreach ($GLOBALS['pagedata']['scripts'] as $script) {
      echo '<script type="text/javascript" src="/js/'.$script.'"></script>'."\n";
    }
  }
?>

Bien sûr, on pourrait éviter de répéter l’inclusion de global.css, global.js et jquery.js et les placer de façon permanente dans entete.php. En fait, il y a plusieurs choses qui dépendent du style de codeur que vous désirez adopter. J’espère que cela aura pu vous apporter quelque chose d’utile!

Posté le avec les tags: .

Commentaires fermés

Les commentaires pour ce billet ont été désactivés un mois après la date de publication de ce-dernier. Vous désirez exprimer votre opinion sur ce billet malgré le fait que les commentaires aient été désactivés ? Utilisez le formulaire de contact.


Fil atom des commentaires de ce billet0 commentaires

Aucun commentaire n'a été posté pour ce billet.