Plugin SPIP permettant d’uniformiser les URLs internes en chemins absolus sans nom de domaine.
Objectif
Dans SPIP, les URLs générées peuvent être :
- relatives (
article/monarticle,IMG/logo.png) - absolues avec domaine (
https://example.org/article/monarticle)
Les URLs relatives dépendent du contexte de la page et peuvent entraîner des comportements indésirables (concaténation, erreurs 404, incohérences).
Ce plugin permet de garantir des URLs internes sous la forme :
/article/monarticle
indépendantes du contexte.
Fonctionnalités
Le plugin fournit :
- un filtre
|url_racinepour convertir une URL en chemin absolu (racine) ; - un filtre
|urls_racinepour réécrire les URLs dans un fragment HTML ; - une intégration au pipeline
post_proprepour traiter automatiquement les contenus éditoriaux.
Utilisation
Filtre |url_racine
[(#URL_ARTICLE|url_racine)]
[(#CHEMIN{css/style.css}|url_racine)]
Filtre |urls_racine
[(#FICHIER|balise_img|urls_racine)]
Ce filtre réécrit notamment les attributs :
hrefsrcsrcsetactionformactiondata-*(selon implémentation)
Comportement
URLs internes
https://example.org/article/123 → /article/123
Site en sous-répertoire
https://example.org/spip/article/123 → /spip/article/123
Le sous-répertoire est conservé automatiquement.
URLs relatives
IMG/logo.png → /IMG/logo.png
Normalisation des chemins
Les segments relatifs sont résolus :
../IMG/logo.png → /IMG/logo.png
../../truc → /truc
URLs non modifiées
Le plugin ignore volontairement :
- les liens externes ;
mailto:,tel:,javascript:,data:;- les ancres
#ancre; - les URLs protocol-relative de type
//cdn.example.org/....
Portée
- Les contenus éditoriaux (
#TEXTE,#CHAPO, etc.) sont traités automatiquement viapost_propre. - Les squelettes (y compris le
head) doivent utiliser explicitement le filtre|url_racine.
Exemple :
<link rel="stylesheet" href="[(#CHEMIN{css/style.css}|url_racine)]">
Limites
Le plugin ne modifie pas l’ensemble du HTML via affichage_final.
Ce choix est volontaire afin de :
- préserver les performances ;
- éviter les effets de bord ;
- garder un comportement explicite et maîtrisé.
Conseil d’usage
Pour un résultat propre sur tout le site :
- utiliser
|url_racinedans les squelettes, noisettes et lehead; - laisser
post_propretraiter les contenus éditoriaux ; - éviter les URLs relatives dans les templates.
Comment l’utiliser dans le site
Pour résumer, dans les squelettes :
<a href="[(#URL_ARTICLE|url_racine)]">Voir l’article</a>
<link rel="stylesheet" href="[(#CHEMIN{css/dsfr.css}|url_racine)]">
<script src="[(#CHEMIN{javascript/site.js}|url_racine)]"></script>
<img src="[(#LOGO_ARTICLE|extraire_attribut{src}|url_racine)]" alt="">
Et pour un besoin ponctuel sur un bloc HTML :
[(#INCLURE{fond=inclure/un_fragment}|urls_racine)]
No discussion
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
