Les balises natives de SPIP
La fonction de base d’un lien dans un squelette SPIP est obtenue en écrivant l’instruction HTML de lien <a href="..">..</a> en faisant calculer à SPIP la référence-cible du lien dans l’espace public du site, par la balise #URL_PAGE{squelette}, avec le nom du squelette et éventuellement des paramètres complémentaires, comme par exemple :
<a href="#URL{arbo,id_rubrique=33} title="Accès à l'arborescence">Arbo</a>
De même pour accéder à une page de l’espace privé, on dispose de l’équivalent #URL_ECRIRE{article_edit,id_article=22} pour éditer l’article, et #URL_ACTION_AUTEUR.
Dans le cas des objets éditoriaux natifs de SPIP, sont proposées les balises de raccourci public correspondantes, #URL_... pour les page rubrique, article, auteur, voire aussi #URL_SITE_SPIP, mais attention au cas des sites (pour une raison historique : présence de champs nommés ’url_site’ dans les tables ARTICLES ou SITES) !
Accès à la page interne descriptive d’un site référencé
La table des (SYNDICS) [1] comporte un champ correspondant à la balise #URL_SITE .... qui n’est donc valable QUE dans ce contexte ; or cette URL <code>#URL_SITE{id_site=..} serait, en cohérence avec les autres URL d’objets, l’appel à cette page !
Dans ce cas dérogatoire, il faut utiliser, ou utiliser la ’vraie’ balise native #URL_SYNDIC [2], ou introduire le codage proposé par exemple dans la page de recherche :
<a href="[(#ID_SYNDIC|generer_url_entite{site,'','',#CONNECT})]">#NOM_SITE</a> ou bien [3] ou bien ce code [4]
- /* Permet dans un texte de faire [->refsite12] qui fera un lien vers la page du site en cours décrivant ce site (et non pas un lien direct vers le site de destination) */
- function generer_url_refsite($id, $args, $ancre) {
- }
...
Ou bien vous pouvez toujours reprendre (dans l’espace public) la syntaxe #URL_PAGE{nom_squelette}{id_syndic=...},ou tout autre argument que vous aurez prévu dans la boucle principale de votre squelette...
Les accès disponibles par PHP
Le premier source à explorer est bien sûr ./ecrire/balise/url_.php qui reprend les fonctions correspondantes aux balises ci-dessus.
On découvre deux fonctions utilitaires :
generer_generer_url($type, $p)
generer_generer_url_arg($type, ..)
L’autre piste a regarder porte de meme sur ./ecrire/inc/utils.php avec les diverses fonctions generer_url...() ..
A partir de SPIP 4.1
Bien noter que generer_url_entite() sera déprécié par generer_objet_lien()

Article publié le 19 février 2020, et actualisé en février 2022 Provisoire (à compléter...) .
Répondre à cet article