| « RGC 2014 : inscriptions ouvertes ! | Migration de SegaKore vers un tout nouveau "moteur" » |
Il peut se révéler intéressant, pour plein de raisons, de vouloir intégrer le contenu (le code) d'une page HTML, au sein d'une autre hébergée sur le même serveur, voire dans un billet sur un blog ; que ce soit pour intégrer par exemple une introduction, une signature, un formulaire, ou tout autre bout de code, qui serait commun à plusieurs pages/billets, et qu'on ait juste à modifier cette page, pour que la modification soit reprise partout où elle est incluse.
C'est ce que j'ai cherché à faire dernièrement, et bien que je n'ai en définitive pas retenu la solution, je suis parvenu à un résultat fonctionnel, que je vais livrer ci-dessous pour ceux qui chercheraient un jour à faire la même chose...
Lorsqu'on a accès à PHP, inclure le code d'une page est très simple, mais quand on n'a pas la possibilité de coller un petit include(), c'est moins simple... Me reposant sur le plugin Topics Anywhere pour forums phpBB, permettant d'afficher les sujets ayant reçu des réponses sur un site (système utilisé sur SegaKore), la méthode fait appel à quelques lignes de code dans un script PHP, et à un appel JavaScript de celui-ci.
Imaginons que je veux inclure dans ce billet le contenu d'une page HTML, hébergée sur ce serveur (c'est impératif), nommé : exemple.html
Pour ce faire, je crée tout d'abord un script PHP, nommé exemple.php , placé dans le même dossier que la page HTML (ce n'est pas obligatoire, tant qu'il est sur le même serveur), et qui va charger le contenu de cette page et le "transformer" de manière à ce qu'il puisse être récupéré dans un JavaScript :
PHP:
<?php | |
| |
$html_content = addslashes(file_get_contents("exemple.html")) ; | |
| |
$rows = explode("\n", $html_content) ; | |
$output = "" ; | |
foreach($rows as $row => $html_line) $output .= $html_line ; | |
| |
header("Content-type: text/javascript; charset=iso-8859-1") ; | |
exit("document.writeln('".$output."');\n") ; | |
| |
?> |
Le script parse le contenu de la page dans un premier temps, puis met bout à bout toutes les lignes de code HTML, pour ne plus en faire qu'une seule, afin que celle-ci puisse être utilisée par JavaScript ; en effet, la fonction document.writeln(), utilisée dans JavaScript pour afficher le texte/code, ne sait pas gérer plusieurs lignes.
Le résultat est visible en ouvrant le script PHP (lien donné ci-dessus) : le code de la page apparaît sur une seule ligne, au sein de la fonction document.writeln().
Enfin, il ne reste plus qu'à appeler le résultat envoyé par le script PHP, sous forme de JavaScript donc, au sein de la page ou du billet de destination, comme suit :
Code:
<script type="text/javascript" language="JavaScript" src="/blog/media/blogs/igrekkess/articles/inclusion_html/exemple.php"></script> |
Démonstration au sein même de ce billet, avec ci-dessous le contenu d'exemple.html :
Pour des raisons de sécurité, il est fortement déconseillé de faire en sorte que le script PHP soit dynamique et puisse inclure une page HTML dont le nom serait passé sous forme d'argument (fonction GET)...