Xavier Lamorlette
J'ai codé ce site en PHP. Sa structure et quelques pages exemples montrant ses fonctionnalités sont disponibles sous GitHub : https://github.com/xlamorlette/site-perso-php. Voici quelques explications.
index.phpindex.txtcommun.phpChaque répertoire du site doit contenir un fichier index.php et un fichier index.txt.
index.phpLe fichier index.php est le même dans tous les répertoires (cela permet de refléter la structure du site avec des URL claires et significatives).
Il inclut le fichier common.php qui est à la racine du site, en prenant en compte le chemin relatif nécessaire. Les variables $root et $path_elements sont utilisées dans common.php.
// --- contenu de index.php dans chaque répertoire ---
<?php
$current_path = dirname($_SERVER['SCRIPT_FILENAME']);
$all_path_elements = explode("/", $current_path);
$nb_levels = 0;
while (! file_exists(str_repeat("../", $nb_levels) . "common.php")) {
$nb_levels ++;
}
$root = str_repeat("../", $nb_levels);
$path_elements = array_slice($all_path_elements, -$nb_levels);
require_once($root . "common.php");
?>
Pour la racine du site, ce fichier index.php est spécifique :
// --- contenu de index.php à la racine ---
<?php
$root = "./";
$path_elements = NULL;
require_once($root . "common.php");
?>
index.txtindex.txt de chaque répertoire contient :
meta description, sinon le titre est utilisé) ;Si on met une ligne "*sommaire", un sommaire de la page est alors créé, en recherchant dans la page les lignes "+lien+titre" qui seront elles-mêmes remplacées par des balises au sein de la page.
Jusqu'à trois niveaux hierarchiques (avec un, deux, ou trois caractères '+' en début de ligne) sont gérés.
La deuxième partie de la ligne "+titre" est optionnelle : elle permet d'avoir un titre différent de la balise.
Exemple de fichier index.txt :
PHP
code PHP du site
sources PHP de ce site
<h3 style="text-align:center;">Sources PHP du site</h3>
[…]
*sommaire
+structure_repertoires+Structure des répertoires
[…]
++index_txt+Fichier <code>index.txt</code>
[…]
Pour afficher, récursivement, la structure des pages filles d'une catégorie (c'est-à-dire les pages filles d'un répertoire), on utilise la balise *structure_pages_filles :
// --- contenu de index.txt pour l'affichage d'une catégorie ---
Titre de la page
description courte de la page
description longue de la page
<h3 style="text-align:center;">Titre</h3>
<p>Voici les pages de cette catégorie :</p>
*structure_pages_filles
commun.phpcommon.php qui contient la structure commune à toutes les pages :
display_navigation_table_of_contents() du fichier table_of_contents.php.
read_structure() du fichier build_structure.php.read_structure() détermine l'arborescence du site en parcourant récursivement les répertoires contenant des fichiers index.php et index.txt, et en lisant ces fichiers index.txt.index.txt du répertoire courant (après les trois premières lignes comme expliqué plus haut).*sommaire".
build_page_table_of_contents() du fichier page_structure.php. Cette fonction lit le fichier pour y trouver les lignes "+xxx".+xxx" sont remplacées par des balises au sein de la page.*structure_pages_filles affiche la structure des pages filles d'une catégorie, en appelant display_structure(read_structure("./")).Ce site utilise la feuille de style CSS style.css.
La dernière mise à jour de cette page date d'octobre 2025.
Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.