Carnet Wiki

Appels par Balises URL

Les balises d’appel dynamique [1] dans SPIP sont nombreuses, mais pas toujours documentées complètement : tentative de consolidation des documentations et informations trouvées (pour une V2 avec Bonux [2], désormais intégré dans le core pour SPIP v3 !).

Compléments aux articles Autres Goodies dans Bonux et Balises Bonux en cours d’etude / attention : version initiale écrite en 2012 ! avant sortie de la SPIP 3.......
(voir plutot #URL_ et raccourcis génériques .)

SPIP possède plusieurs façons -plusieurs balises- [3] pour générer un lien d’appel à une page, qu’on insérera, à l’intérieur de guillemets dans la balise <a href="#URL__{...}"> d’un squelette :

  • pour les objets standards de SPIP, une balise contextuelle par défaut(utilisant donc comme second argument implicite l’#ID_identificateur de l’objet concerné) est intégrée au langage :
    cette syntaxe est valable pour les objets suivants (décrits dans les tables de même nom -au pluriel-) : #URL_ARTICLE, #URL_RUBRIQUE, #URL_AUTEUR, #URL_BREVE, #URL_MOT, #URL_DOCUMENT [4], #URL_ FORUM [5], #URL_SITE (ou #URL_SYNDIC)
  • elle est étendue à d’autres objets : #URL_SITE_SPIP (pour le site d’origine..), #URL_SOURCE [6]
  • l’ouverture a des URL calculées ou spécifiques, est assurée par #URL_PAGE suivi d’un premier paramètre obligatoire, définissant le nom [7] du squelette à utiliser (voir #URL_PAGE).
  • avec ses pendants pour l’espace privé : en #URL_ACTION_AUTEUR et #URL_ECRIRE (voir plus bas)

Et quelques balises (Formulaires) spéciales :

  • #LOGIN_PUBLIC ou #URL_LOGOUT, qui acceptent une URL en paramètre optionnel,
  • #BOUTON_ACTION #BOUTON_ACTION
    Exemple avec SPIP3 action/delier_mot.php :
    #BOUTON_ACTION{#URL_ACTION_AUTEUR{supprimer_lien, mot-32-article-57}, <:chaine:>} 

    Dans l’action y’a la fonction action_supprimer_lien_dist qui fait juste :

    include_spip('action/editer_liens');
    objet_dissocier(array($objet_source=>$ids), array($objet_lie=>$idl));

Pas de doute, c’est bien de la programmation objet (toute la puissance de SPIP 3 transparait enfin !)

Nota.Bene :
ces balises calculent les liens en URL relative, en tenant compte des modes d’URL personnalisées.
Comme pour les balises d’accès direct ci-dessous, vous pouvez rajouter des paramètres complémentaires : voir les Aides au Débuggage de squelettes.

Paramètrages d’appel complémentaires

Sauf dans le cas des URL d’objet qui utilisent le contexte, vous penserez à expliciter en second argument les valeurs id_rubrique=#ID_RUBRIQUE (ou id_article=..) pour l’appel direct à un squelette personnalisé correspondant à l’objet courant.

L’appel en syntaxe raccourcie (sauf usage de systèmes d’URL personnalisées), d’une façon analogue aux codes #URL_ARTICLE ou #URL_RUBRIQUE des squelettes, s’abrège donc en passant le type de table suivi de son n° d’enregistrement : ?article109 ou ?rubrique23 (ce raccourci serait-il extensible à d’autres tables non standard ?)
-  un usage particulier [8] de #URL_PAGE{table:TABLE_non_spip} correspond à l’intégration de « Vertebres » dans le core, la nouvelle extension automatisant le scaffolding sur toute table SQL, exemple ?page=table:articles (usage réservé aux Webmestres par sécurité !!).

Rappelons aussi quelques variables complémentaires en paramètres de l’URL d’appel
-  connect = pour utiliser la connexion à une base de données secondaire
-  var_skel= sous-répertoire de squelettes pour le switcher de squelettes
-  skel= pour forcer un chemin (?) voir Un login/logout dans le pied qui fa...

Pour passer de multiples arguments à une #URL_.. il faut utiliser le filtre |parametre_url ( voir la documentation), que l’on pourra enchainer plusieurs fois (cf. parametre_url, exemple :
|parametre_url’param1’,12|parametre_url’param2’,’Salut !’

Interface Privée

Le fonctionnement de l’interface privée se répartit entre les appels d’« exec » et les appels d’« action » ; la différence ......

-  #URL_ACTION_AUTEUR
affiche l’adresse de l’action « action » avec le nécessaire pour vérifier les autorisations du visiteur connecté. Cette balise (syntaxe complète #URL_ACTION_AUTEUR{nom_action, arguments, retour}) accepte deux paramètres supplémentaires et facultatifs : une liste d’arguments et une adresse de redirection éventuelle.
(depuis la 1.9.2) documenté par Programmer une URL-d-action-en-squelette et #URL_ACTION_AUTEUR

-  #URL_ECRIRE
En quelques mots, #URL_ECRIRE est le correspondant de #URL_PAGE pour les exec de la partie privée ; de plus, la page recherchée est éventuellement acquise directement depuis un sous-repertoire formulaire(cf. Programmer) , avec le meme fonctionnement que #URL_ACTION_AUTEUR en acceptant un troisième argument pour rediriger l’utilisateur sur une page après exécution du traitement...
Mais vous découvrirez qu’#URL_ECRIRE connaît les internes de SPIP : en fonction de l’objet courant contextuel, un simple #URL_ECRIRE{env} vous génèrera directement l’appel à la page d’edition de l’article ou du mot (d’une façon analogue aux boutons d’administration affichés par #FORMULAIRE_ADMINISTRATION), en relançant même les variables de debug éventuelles....
En fait, les pages de l’espace privé sont baties en organisation Z [9], et définissent leur nom d’action par composition des termes utilisées en paramètre des fonctions #AUTORISER : du coup, le calcul des environnements permet d’appeler les « exec » magiquement...

Préciser le fonctionnement des passages d’arguments(un ou plusieurs : cf. http://www.spip.net/fr_article4630.html), la nécessité ou non de les encadrer de quotes....... qq.soucis avec l’expansion du & ?à vérifier ?

-  Quelques exemples :

  • #URL_ECRIRE{ naviguer } renvoie : ecrire/?exec=naviguer
  • #URL_ECRIRE{naviguer,args} renvoie : ecrire/?exec=naviguer&args
  • #URL_ACTION_AUTEUR{converser,args,redirectme} renvoie : ecrire/?action=converser&args&hash=xxx&redirect=redirectme
  • un exemple complet propose un mode testant meme les autorisations :
    <a href="#URL_PAGE{identifiants,focus=nom_inscription}&mode=(#URL_SITE_SPIP|tester_config{1comite})"

    (in dist/login.html)
    renvoie <a href="spip.php?page=identifiants&focus=nom_inscription&mode=.."

Ainsi pourrait-on ecrire :

#URL_ECRIRE{forum_envoi,statut=prive&id=363&script=articles#formulaire}

Ou encore

 
[(#URL_PAGE{my_backend}|parametre_url{id_mot,#ID_MOT}|parametre_url{id_rubrique,#_:ID_RUBRIQUE})]

renvoie :

<a href="spip.php?page=my_backend&id_mot=32&id_rubrique&..

[1Se souvenir qu’une balise dynamique calculée rend toujours un résultat..

[2Noter que Bonux redéfinit et étend de très nombreuses balises standard de SPIP : à préciser !

[3Mais aussi quelques filtres cf.| sinon_interdire_acces ’documenté dans les Balises Bonux..

[4Capable de générer directement un lien cliquable ??

[5voir spécificités..

[6Pour accéder à l’adresse d’une source de flux détaillée dans la Syndication des contenus.

[7Sans le suffixe .html, mais éventuellement précédé du chemin relatif au dossier squelettes(cf. usage de la balise #CHEMIN)

[8à revoir entre les versions SPIP2 et SPIP3 ayant déplacée Vertebresenespace privé !

[9Pour comprendre leur fonctionnement selon ce principe, il suffit de retrouver les structures des commentaires HTML définissant les blocs pour positionner insertion par pipelines.

en-cours d’améliorations et validations..

YannX - Mise à jour :3 janvier 2022 à 10h27min