Formation PUB010 : PHP, 2025 JavaScript et les fichiers .inc

39.1 Fonction inclureJsPropreALaPageActuelle()


Dans un site PHP vanille, lorsqu'on travaille avec les fichiers entete.inc et pied-page.inc pour réutiliser le code commun, on a besoin d'une technique qui permettra à chacune des pages Web d'inclure un fichier JavaScript avec du code propre à cette page.

Il serait possible d'ajouter ce script à la fin complètement du code HTML (après pied-page.inc) mais ceci donnerait du code HTML non valide qui pourrait donner des résultats imprévisibles.

Fichier index.php

<?php
require 'include/entete.inc';

?>
<div class="...">

   ...

</div>
<?php
require 'include/pied-page.inc';
echo "<script src='js/index.js'></script>";

Code HTML généré :

HTML

        ...
    </body>

</html>

<script src='js/index.js'></script>

Le code JavaScript propre à la page Web devrait plutôt être chargé tout juste après les autres scripts, dans la zone d'en-tête (à condition d'utiliser l'attirbut defer).

Emplacement de la fonciton Inclure_js_propre_a_la_page_actuelle()

Une technique intéressante pour y arriver est de créer un fichier JavaScript qui porte le même nom que la page Web et de placer ce fichier dans un dossier précis.

Par exemple, si la page d'accueil (index.php) a besoin d'instuctions JavaScript qui lui sont propres, on placera ces instructions dans le fichier js/scriptspages/index.js.

Certaines pages n'auront pas besoin d'instructions JavaScript qui leur sont propres. Pour que le fichier soit ajouté seulement lorsqu'il existe, on pourra utiliser l'extrait de code suivant.

Une bibliothèque de fonctions, par exemple ma-bibliotheque.php, est un bon endroit pour placer ce code.

Fichier include/ma-bibliotheque.php

/** 
 * Ajoute une balise <script> pour un fichier .js qui porte le même nom que la page actuelle,
 * seulement si ce script existe.
 * @author Christiane Lagacé <christiane.lagace@hotmail.com>
 * Supposition critique : le fichier doit être placé dans le sous-dossier js/scriptspages pour pouvoir être inclus.
 * Ex : le script pour la page d'accueil sera js/scriptspages/index.js.
 *
 * @return void
 *
 */
function inclureJsPropreALaPageActuelle(){
   $dossierRacineSite = dirname(__FILE__, 2);
 
   // Le deuxième paramètre de basename permet de supprimer cette chaîne de la valeur retournée
   $pageActuelleSansExtension = basename( $_SERVER['SCRIPT_NAME'], '.php' );

   if ( file_exists( $dossierRacineSite . '/js/scriptspages/' . $pageActuelleSansExtension . '.js' ) ) {
      echo "<script src='js/scriptspages/$pageActuelleSansExtension.js' defer></script>";
   }
}

Et pour utiliser cette fonction, on ajoutera ce code dans le fichier entete.inc.

Fichier include/entete.inc (PHP)

<?php require_once 'include/ma-bibliotheque.php'; ?>
<head>

   ...

   <script src="js/monscript.js" defer></script>

   <?php inclureJsPropreALaPageActuelle(); ?>

</head>

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre