Dans le pipeline "interfaces", il y a un tableau qui permet de déclarer quel champ il faudra récupérer pour l'utiliser comme titre d'un objet.
$interface['table_titre']['trucmuches'] = 'titre';
Sauf que cette valeur, je ne la vois utilisée nulle part ! :
- Dans les URLs arbo par exemple, ça fait un test interne sur "titre", "nom", etc.
- J'ai trouvé une fonction "afficher_titre_objet", et elle fait pareil...
Ça fait plusieurs fois que je me retrouve à déclarer à SPIP des tables ayant des titres comme "title" ou "problem" ou n'importe quoi d'autre. Et du coup, les fonctions automatiques de SPIP (pour construire l'URL par exemple) sont inutilisables.
Existe-t-il une fonction qui utilise cette déclaration pourtant utile et qui sort alors le bon titre de l'objet ?
Sinon je dois pouvoir l'écrire, à mon avis ça tient en 10 lignes maxi. Mais c'est vraiment un truc du noyau normalement.
Hey je viens de m'apercevoir en plus que ce tableau est le seul à ne PAS passer dans le pipeline !!
Dans public/interfaces.php, toutes les tableaux où sont déclarer les objets de base de SPIP vont dans le pipeline, SAUF celui-là.
En fait cette fonction devrait logiquement être le corolaire de la fonction generer_url_entite().
generer_url_entite($id_objet, $type_objet)
=> Retourne l'URL SPIP d'un objet quelconque. Ça marche parfaitement pour les objets non prévus.
il faudrait donc aussi un truc du style
generer_titre_entite[$id_objet, $type_objet)
=> Retourne le titre en utilisant la déclaration de la globale $table_titre.
function generer_titre_entite[$id_objet, $type_objet){
include_spip('base/connect_sql');
global $table_titre;
$champ_titre = $table_titre[table_objet($type_objet)];
if (!$champ_titre) $champ_titre = 'titre';
$ligne = sql_fetsel(
$champ_titre,
table_objet_sql($type_objet),
id_table_objet($type_objet).'='.intval($id_objet)
);
return $ligne['titre'];
}
un truc comme ça...