Project

General

Profile

Nomenclature #3469

Étendre la balise #URL_PAGE à tout objet éditorial

Added by tetue tetue about 4 years ago. Updated over 2 years ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Category:
filtres et balises
Target version:
Start date:
06/06/2015
Due date:
% Done:

0%


Description

La balise #URL_PAGE affiche actuellement la page fabriquée par le squelette passé en paramètre : http://www.spip.net/fr_article4630.html

Cette balise pourrait être étendue aux objets éditoriaux de SPIP, de façon à être utilisée facilement, sans paramètre, pour lier explicitement la page SPIP, ce qui est utile pour les objets possédant par ailleurs une URL qui leur est propre, tel que les sites.

#URL_PAGE afficherait l’url de la page dédiée à l’objet, c’est-à-dire la page générée via le squelette homonyme (sans nécessiter de le passer en paramètre), si ce skel existe, sinon rien.

Par exemple :

- dans une boucle SITES, #URL_PAGE afficherait l’url de la page fabriquée par le skel « site » — au lieu de l’actuel [(#ID_SYNDIC|generer_url_entite{site})] anciennement [(#ID_SYNDIC|generer_url_site)], trop barbare — tandis que #URL_FORUM affiche l’url de la page où est affiché le message
- dans une boucle DOCUMENTS, #URL_PAGE afficherait l’url de la page fabriquée par le skel « document », s’il existe, tandis que #URL_DOCUMENT affiche l’url du fichier multimédia
- idem avec les FORUMS
- dans une boucle SYNDIC_ARTICLES, #URL_PAGE n’afficherait rien, car le squelette « article_syndic » n’existe pas
- dans une boucle ARTICLES, #URL_PAGE afficherait l’url de la page fabriquée par le skel « article », comme #URL_ARTICLE
- etc.

Il ne s’agit pas tant qu’une évolution, puisque l’affichage de toutes ces URLs est déjà possible, que d’une homogénéisation et simplification de la nomenclature. Mieux vaut écrire #URL_PAGE que [(#ID_SYNDIC|generer_url_entite{site})], n’est-ce pas ;)


Related issues

Related to SPIP - Evolution #3311: Renommer generer_xxxx_entite en generer_objet_xxxx Nouveau 10/23/2014

History

#1 Updated by cedric - about 4 years ago

  • Target version set to 3.2

#2 Updated by marcimat 🌈 over 2 years ago

Idée intéressante et certainement à creuser.

Je vois quelques problèmes dans la logique de la proposition cependant
  • [(#ID_SYNDIC|generer_url_entite{site})] génère une URL, que le squelette de site existe ou pas
  • l'absence d'un squelette pour l'objet n'indique pas obligatoirement qu'une URL générée pour l'objet n'est pas valide. Par exemple l'URL générée pour un groupe de mots-peut être la page mot avec le paramètre id_groupe=x.
  • URL_PAGE{x} retourne toujours une URL publique, alors que [(#ID_SYNDIC|generer_url_entite{site})] retourne une URL publique si on est dans le public, et une URL pour l'espace privé si on est dans l'espace privé. Ce qui permet d'appeler un même squelette dans le privé et le public tout en conservant des urls qui pointent dans l'espace dans lequel on est donc.
Et quelques difficultés d'implémentation :
  • #URL_PAGE chercherait objet et id_objet dans la boucle parente ou éventuellement dans l'environnement.
  • #URL_PAGE{truc, params} doit continuer de fournir des URLs de pages
    Mais il va falloir pouvoir indiquer simplement à des moments l'objet et l'id_objet spécifique, pour un lien donné, tel que
  • #URL_PAGE{article, 3} et là, du coup on a les mêmes paramètres que précédemment, mais pour les utilisations différentes

On pourrait peut être utiliser une autre balise, plutôt que de réutiliser #URL_PAGE même si c'est très tentant.
En tout cas il faut bien définir le comportement souhaité lorqsu'on réutilise un squelette dans le privé et dans le public. Génère t-on toujours l'URL publique, ou est-ce que l'URL dépend du contexte public / privé.

On pourrait par exemple utiliser #URL_OBJET, il me semble que l'on parle bien systématiquement d'objet éditoriaux.
  • #URL_OBJET sans paramètre :
    • calcule #OBJET et #ID_OBJET de la boucle dans laquelle il se trouve, ou les boucles parentes ou l'environnement
    • calcule l'URL selon l'espace dans lequel le squelette est utilisé (comme generer_url_entite())
  • #URL_OBJET{article, 3} calcule l'URL de l'article 3. = [(#VAL{3}|generer_url_entite{article})]

Ceci dit si on utilise #URL_XX il est plus logique que ces notations se comportent toutes pareil en retournant toujours l'URL publique.
Si #URL_OBJET{article, 3} retourne toujours l'URL publique, dans le privé comme dans le public, elle serait équivalente à #URL_ARTICLE{3}, et conserverait une certaine logique avec l'existant.

Mais du coup, ça ne simplifie pas ce que montre Tetue là

Mieux vaut écrire #URL_PAGE que [(#ID_SYNDIC|generer_url_entite{site})], n’est-ce pas ;)

Puisque la plupart de nos usages avec generer_url_entite sont fait pour des squelettes qui sont utilisables dans le privé et le public et dont on veut qu'ils conservent les liens dans le même espace.

À creuser / réfléchir.

#3 Updated by marcimat 🌈 over 2 years ago

  • Related to Evolution #3311: Renommer generer_xxxx_entite en generer_objet_xxxx added

Also available in: Atom PDF