Cet exemple a été codé pour SPIP 2.0 et ne s’adresse donc pas aux versions antérieures (et pourrait ne pas fonctionner avec les versions futures !)
Parametrer le jeu d’url « page »
Il faut commencer par activer les urls « page » dans la configuration avancée du site, puis régler leurs parametres dans le fichier d’options, pour avoir l’extension en .html
:
Créer la balise #URL_CHOSE
Il faut ensuite creer la balise #URL_CHOSE
qui gérèrera l’url demandée. Pour mon besoin l’url devait récupérer l’identifiant de rubrique. La déclaration de la fonction est à mettre dans son fichier de fonctions :
Détaillons chaque ligne de la fonction :
- la fonction
interprete_argument_balise
récupère et stocke dans la variable $_id le premier argument passé à la balise, par exemple « 8 » si l’on appelle#URL_CHOSE{8}
. - en cas d’absence de valeur dans $_id, on demande à récupérer le champ SQL id_rubrique de la boucle en cours de lecture (Exemple :
<BOUCLE_art(ARTICLES)>#URL_CHOSE...
), ou de l’environnement (présence de#ENV{id_rubrique}
) et on l’affecte a $_id. -
$p->code
va contenir le php qui sera utilisé lors de la compilation du squelette (lorsque SPIP va lire une#URL_CHOSE
, son code sera remplacé par le contenu de$p->code
). Ici, on appelle la fonctiongenerer_url_entite
qui va renvoyer la valeur de l’url pour le type d’url spécifié. On lui passe 2 parametres : l’identifiant récupéré ($_id) ainsi que le nom de la page souhaité (’chose’). - le parametre
interdire_script
lorsqu’il vauttrue
n’execute pas le code PHP, mais l’echappe pour qu’il soit affiché sur la page (pratique pour les balises qui affichent des contenus saisis par les rédacteurs !). - retour de l’ensemble des parametres.
Informer le fichier .htaccess des redirections
Pour que les redirections soient effectives vers le bon squelette, il faut les déclarer dans le fichier .htaccess à la racine du site. On ajoutera dans les « réglages personnalisés » la ligne suivante :
Utiliser les url « page » standard de SPIP
Pour utiliser les urls pages standard (spip.php?choseXX
) il faut s’adapter un peu :
- inutile de définir de parametres pour le jeu d’url (enlever les déclarations de constantes (define))
- inutile de modifier le fichier .htaccess
- surcharger le fichier
ecrire/urls/page.php
et modifier les lignes suivantes pour ajouter|chose
: