Krk est un petit logiciel que j'ai développé et qui gère les pages de ce site. Je le documente et le mets à disposition ici.
(Enfin, c'est ce que je compte faire - site en construction.)
Il s'agit d'un ensemble de scripts PHP, plus un petit logiciel utilitaire de transcodage en Java.
Krk est le nom d'une île de l'Adriatique.
Le logiciel vise à faciliter la construction et la maintenance de sites Web statiques, ou principalement statiques, organisés de manière hiérarchique (ou surtout de cette manière).
La manière classique de créer un tel site est d'écrire un ensemble de pages HTML statiques. L'organisation hiérarchique du site se fait en regroupant ces pages dans une arborescence de dossiers et de sous-dossiers.
L'emploi d'une feuille de style commun à l'ensemble d'un site permet de centraliser les choix concernant le graphisme; et permette de faire évoluer ce graphisme, pour l'ensemble des pages, en modifiant seulement cette unique feuille de style.
Cependant, la structure même de chaque page reste codée «en dur» dans le fichier HTML correspondant. Les éléments communs comme l'entête de la page, la hiérarchie des blocs, le menu, etc. sont présents dans chaque page.
Il existe de nombreuses solution à ce problème, mais la plupart sont lourdes à mettre en œuvre, se basant souvent sur une base de données (MySql...) en arrière-plan. Le but de Krk est d'apporter une solution simple, basée sur de simples scripts PHP. L'édition des pages individuelles se fait comme l'édition classique d'une page HTML, sauf que le fichier édité ne contient que la partie variable.
Krk s'appuie sur une description hiérarchique du site. En fonction de cette description hiérarchique, et de la page courante, Krk génère automatiquement pour chaque page un menu hiérarchique et un «breadcrumb».
Les pages d'un site géré par Krk apparaissent, du point de vue du visiteur, comme des pages HTML, avec un suffixe .html. Cela rend le référencement des pages plus simple, évitant les problèmes que posent les pages avec suffixe .php, ou pire avec une query-string (pages de type index.php?page=glop).