[spip-dev] forum.spip.org planté par 12429 (pas 12528 on a dit)

Ah tiens, c'est quand je trouve la bonne réponse que je clique sur "repondre" et pas "répondre à tous". Donc:

Début du message réexpédié :

Les generer_url_article etc sont quand meme définies dans vieilles_def, lequel est lu dans mes_options (du moins celui figurant sur la zone). Autrement dit ce fichier urls/trad.php n'est jamais lu véritablement. Qu'est ce qui se passe si on l'inclut AVANT d'inclure vieilles_def ?

Committo,Ergo:Sum

Donc attention tout le monde: si vous avez des URL perso, ou bien vous n'utiilisez pas vieilles_def et ça devrait passer, ou bien vous l'utilisez et il faut charger vos URLs perso avant vieilles_def dans mes_options, sinon couic.

Cela dit Fil, un petit lifting à ce mes_options ça ferait pas de mal...

Committo,Ergo:Sum

Bonjour,

Apparemment cela ne suffit pas.

En SPIP 2.0.0 dev SVN [12752], avec mes propres URL propres arborescentes adaptées des propres classiques (celles maintenant fournies ne me satisfont pas encore complètement), j'obtiens la classique erreur « Aucun squelette 'type_urls' n'est disponible... ».

Je n'utilise pas "vieilles_def", et j'ai désactivé tous les plugins.

Si tu ne donnes pas ton code, on ne peut rien pour toi.

Committo,Ergo:Sum

Avant de vous faire perdre votre temps avec mon code, je voulais déjà savoir si les récentes modifications pouvaient en être la cause, ou s'il était plus probable que je faisais des erreurs.

Quoi qu'il en soit, je pense que je vais plutôt essayer de patcher arbo.php pour obtenir (de manière configurable) ce que je souhaite, ça profitera à tout le monde et je pourrais enfin me passer d'un code spécifique.

Si mon code intéresse tout de même, je peux le mettre dans un ticket.

-Nicolas

Nicolas Hoizey a écrit :

Si mon code intéresse tout de même, je peux le mettre dans un ticket.

Moi aussi j'avais dû faire quelques modifs pour coller à un besoin précis sur les urls arbos. J'ai pas eu besoin de surcharger quoi que ce soit : j'ai utiliser le pipeline "creer_chaine_url". On peut déja y modifier un paquet de choses, vu qu'on a les paramètres (type de l'objet, id de l'objet, etc).

Mais si une modif personnelle peut intéresser d'autres personnes, autant la proposer en patch, non ?

Voilà le mien :
http://trac.rezo.net/trac/spip/ticket/1537

Et la description dans le ticket :
« Il est d'usage de faire terminer les URL par .html, d'une part (historiquement) pour gérer la reconnaissance par Apache, et d'autre part pour simplifier l'enregistrement d'une page par un utilisateur.
Par contre le microformat rel-tag indique (malheureusement, mais ne polémiquons pas) que l'URL du tag DOIT se terminer par son intitulé (éventuellement suivi d'un '/' qui sera ignoré). Une URL example.com/tags/toto.html donnera donc un tag toto.html. Il faut avoir l'URL example.com/tags/toto pour que le tag soit bien toto.
Pour concilier ces deux contraintes tout en permettant d'utiliser les URL propres arbo maintenant fournies par SPIP, ce patch ajoute une constante de configuration _terminaison_urls_arbo_mot différenciant les URL des pages de mots clefs des autres URL configurées avec _terminaison_urls_arbo. »

-Nicolas

Voilà le mien :
http://trac.rezo.net/trac/spip/ticket/1537

En attendant que mon patch soit éventuellement accepté, j'essaie d'utiliser le pipeline "creer_chaine_url", mais je n'y arrive pas.

J'ai suivi ce qu'indiquait Fil il y a déjà quelque temps :
http://article.gmane.org/gmane.comp.web.spip.devel/43836

J'ai même mis un spip_log() dans la fonction, mais aucune trace...

C'est la première fois que j'essaie d'utiliser un pipeline en dehors d'un plugin.

Est-ce que la méthode à changé par rapport au message de Fil ?

-Nicolas

Nicolas Hoizey a écrit :

Est-ce que la méthode à changé par rapport au message de Fil ?

// Insertion dans le pipeline des URLs
  $nom = "creer_chaine_url";
  $prefix = "ldd_";
  $action = $nom;
  if (!isset($GLOBALS['spip_pipeline'][$nom])) // creer le pipeline eventuel
    $GLOBALS['spip_pipeline'][$nom]="";
  if (strpos($GLOBALS['spip_pipeline'][$nom],"|$prefix$action")===FALSE)
    $GLOBALS['spip_pipeline'][$nom] = preg_replace(",(\|\||$),","|$prefix$action\\1",$GLOBALS['spip_pipeline'][$nom],1);
  
  // La fonction appelée dans le pipeline
  function ldd_creer_chaine_url($x){

Ouh la, oui, ça a changé, visiblement... :wink:

Mais pas mieux, la fonction n'est jamais appelée.

Tu as ce code dans "mes_options.php" ?
Tu utilises les URL arbo ?

-Nicolas

Nicolas Hoizey a écrit :

Ouh la, oui, ça a changé, visiblement... :wink:

Non, en fait si tu regarde bien c'est à peu près exactement le même code. Il y a juste un test avant pour voir si la fonction n'existe pas déjà dans le pipeline.

Mais pas mieux, la fonction n'est jamais appelée.

Tu as ce code dans "mes_options.php" ?

Oui, tout ça dans mes_options.php. Donc ça vérifie à chaque hit. Une fois que t'as chargé une quelconque page, ça a dû le rajouter.
Pour tester tu vas dans /tmp/charger_pipelines.php, et tu cherches la fonction correspondante.

Tu utilises les URL arbo ?

Oui, là c'est pour les urls_arbo, mais ça ne change rien, ce pipeline est dans tous les types d'URLs personnalisées.