declarer_url_objets

Ce pipeline permet d’utiliser des URLs standard de SPIP sur les objets indiqués et de calculer la correspondance entre une URL standard et l’objet correspondant. Ces URLs peuvent être de la forme :

  • spip.php?objetXX (spip.php ?article12)
  • ?objetXX (?article12)
  • pareil avec .html à la fin.

Avec le fichier .htaccess fournit par SPIP et activé, les URL peuvent aussi être :

  • objetXX (article12)
  • objetXX.html (article12.html)

L’URL calculée lorsqu’on utilise les fonctions de calcul d’URL de SPIP (balise #URL_ ou fonction generer_url_entite) dépend du jeu d’URL sélectionné dans la configuration de SPIP.

Ce pipeline est appelé dans ecrire/inc/urls.php avec une liste d’objets prédéfinie. Il prend et retourne un tableau de la liste des objets pouvant servir d’URL :

$url_objets = pipeline('declarer_url_objets', array('article', 'breve', 'rubrique', 'mot', 'auteur', 'site', 'syndic'));

La balise #URL_nom renvoie une URL pour un objet et un identifiant donnée (pas besoin de déclaration pour cela). Ce pipeline est utilisé pour décoder une URL standard et retrouver l’objet et l’identifiant de l’objet sur laquelle elle s’applique. Une fois déclaré un objet « nom », ?nomXX dans l’URL permet à SPIP de calculer que l’objet est « nom » ; que l’identifiant « id_nom » vaut « XX » et que par conséquent, il doit essayer de charger le squelette nom.html avec l’identifiant trouvé.

L’usage de ce pipeline peut aller de pair avec la déclaration de « table_titre » dans le pipeline declarer_tables_interfaces. Cela indique sur quelle colonne SQL de l’objet puiser pour créer une URL signifiante.

Exemple

Le plugin « Grappes » utilise ce pipeline permettant de créer des URLs pour cet objet. #URL_GRAPPE crée une URL adaptée à l’objet. SPIP saura alors à quel squelette se référer lorsque cette URL est appelée : grappe.html.

function grappes_declarer_url_objets($array){
	$array[] = 'grappe';
	return $array;
}

Le pipeline d’interface déclare aussi le champ de titre pour des URL signifiantes :

function grappes_declarer_tables_interfaces($interface){
	// [...]
	// Titre pour url
	$interface['table_titre']['grappes'] = "titre, '' AS lang";
	return $interface;
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français