Déclaration d'un objet éditorial dont la page publique diffère de l'objet (type)

page permet de définir le nom de la page publique de l’objet (voir : API de déclaration d'objets éditoriaux - SPIP).

#URL_PAGE retourne une URL de type « page publique »
La balise est compilée par la function balise_URL_PAGE_dist($p) dans le fichier balise/url_.php qui appelle generer_url_public() qui est dans ecrire/inc/utils.php.

Je ne sais pas si je m’y prend mal, mais je n’ai pas l’impression de la déclaration de la page de l’objet éditorial soit pris en compte.

Pour mon objet placard, si la déclaration de la table spip_placards, indique page => 'mon_placard' c’est toujours le nom de l’objet placard et non mon_placard qui est retenu par un appel #URL_PAGE{placard,id_placard=1}.

Il est néanmoins possible de contourner le problème et de faire #URL_PAGE{mon_placard,id_placard=1} ; mais ce n’est pas l’usage auquel je m’attendais. Par ailleurs, de la partie privée, voir un objet n’ira pas sur la page du squelette public déclaré mon_placard.html.

Tu as essayé un truc du style #URL_PLACARD ?

c’est en effet en todo de supporter la déclaration de nom alternatif pour le squelette principal dans les objets. Seul page => false est supporté comme option dans la déclaration des objets

Dans tous les cas, que cette variable « page » soit pris bien en compte ou pas, ça n’a jamais été avec #URL_PAGE qu’on générait les URL des objets ! Ça c’est pour générer les pages NON objet (page=truc).

Pour les objets ça a toujours été #URL_MONOBJET

Donc, pour résumer : pas de prise en charge de ce type pour l’instant (juste 'page' => False) ; et, quoiqu’il en soit, mon appel n’était pas orthodoxe pour un objet (ne pas utiliser #URL_PAGE mail #URL_{mon_objet}.

Merci pour vos réponses qui participent à ma meilleure compréhension de SPIP. Vous êtes top les écureuils !