Tout d'abord bravo pour ce site, c'est un gros boulot, et le résultat est impressionnant !

Thierry Florac a écrit :
  Bonjour,

Une remarque (de Harobed, je crois) sur IRC m'a amené à réfléchir
quelque peu à un petit problème d'URL que j'ai sur le site que je viens
d'ouvrir sous Zope 3 (http://www.onf.fr).
C'est vrai quoi ! Quelque chose comme
"http://www.onf.fr/activites_nature/@@display_event.html?oid=IN000000098f&conf_id:int=1219820993";,
 on ne peut pas dire que ce soit très "zopien" !J'en conviens aisément, c'est tellement moche 
qu'on dirait du PHP !

Une URL plus logique (et meilleure pour l'indexation) pour cette page aurait 
été:
http://www.onf.fr/activites_nature/evenements/animations-ecoute-du-brame

"evenements" étant un conteneur, "animations-ecoute-du-brame" un objet événement, et la vue étant implicitement "@@index.html".

Mais tout dépend la façon dont sont stockés les choses.
Par ex, je ne comprends pas bien pourquoi tu récupères l'article par une recherche d'oid dans le catalogue, s'il suffit de le récupérer par sa clé dans un conteneur, la clé étant le truc visible dans l'url, débarassé des accents (ça porte un nom, j'arrive plus à me souvenir).

Sinon, à quoi sert l'id de conf ?
?conf_id:int=1219820993
Est-ce que ça a un intéret de le transmettre par l'URL ? Est-il susceptible de changer pour la même URL ?


J'ai donc tenté de réfléchir à une façon plus élégante de générer des
URLs un peu plus jolies, mais pas très efficacement jusque là puisque je
n'ai pas encore trouvé de solution... Aussi je vais tenter de vous
exposer mon problème, étant preneur de toute proposition.

Le contexte dans lequel je dois travailler est donc celui d'un "site",
qui s'appelle ici "activites_nature" ; ce contexte fournit une vue,
"display_event.html", qui permet d'afficher une actualité identifiée par
un UID (ici IN00...98f) et dont l'accès nécessite une recherche dans le
catalogue ; cette vue nécessite par ailleurs des paramètres de
configuration que l'on doit récupérer grâce à un autre paramètre
"conf_id" (car ils ne sont pas nécessairement définis dans le contexte
du "site" ou de l'actualité, et donc un simple adaptateur ne suffit
pas).

Pourquoi pas un utility qui fournit cette conf ?

Le site au sein duquel est affichée cette vue est important puisqu'il
détermine, notamment, le skin qui va être appliqué ; il ne me paraît
donc pas possible de simplement travailler avec une vue dans le contexte
de l'actualité sans tenir compte de ce paramètre.

À mon avis si, l'objet que tu est en train de publier n'est pas le "site" activites_nature, mais bien l'article « écoute du brame ». C'est donc l'article qui devrait être le contexte.

Pour changer l'apparence juste dans le site activites_nature, tu peux utiliser un beforeTraverseEvent sur le site, qui va rajouter la bonne layer dans ta request, et donc modifier la skin uniquement pour ce site.

Mais sinon, puisque c'est un "site", ça veut dire qu'il a un registre local, et donc que tu peux faire des inscriptions locales et donc potentiellement tout changer.

Sinon avec z3c.template/z3c.pagelet, y a moyen de faire un lookup du template de layout (z3c:layout en zcml), donc on peut le changer précisément ou on veut. Moi je n'utilise plus que ça, c'est ce que j'ai trouvé de plus souple.

Mais bon, faudrait que je connaisse un peu mieux les détails.

Christophe


J'ai donc déjà effectué quelques tests (rapides, j'en conviens !),
notamment via le paquet "z3c.traverser" que j'utilise par ailleurs ;
mais rien de concluant jusqu'à présent, donc les bonnes idées sont les
bienvenues...

Merci par avance de votre aide,

  Thierry Florac

_______________________________________________
zope3-french-user mailing list
zope3-french-user@lists.afpy.org
http://lists.afpy.org/mailman/listinfo/zope3-french-user

Répondre à