developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 13 years ago

Closed 9 years ago

#61 closed bug (fixed)

metas non prise en compte dans les templates de zones

Reported by: laurentj Owned by: laurentj
Priority: highest Milestone: Jelix 1.3 beta 1
Component: jelix:core Version: 1.0alpha5
Severity: major Keywords: template meta zone
Cc: Blocked By:
Blocking: Documentation needed: yes
Hosting Provider: Php version:

Description

Quand il est affiché une zone dans le template principale, via le tag de template {zone}, les metas qui sont indiquées dans le template de la zone ne sont pas pris en compte.

La faute à jResponseHtml, qui génère le <head> avant d'afficher le template principal. Donc les metas des templates de zones appellées par {zone} sont traités trop tard pour être inclus dans le <head>.

Solution simple mais pas optimum : faire un fetch du template principal dans jResponseHtml, avant de générer le <head>. Mais niveau mémoire, ce n'est pas top..

Note : le problème n'apparait pas pour les zones appelées directement dans les actions via jTpl::assignZone ou jZone::processZone (car à ce moment là, la reponse html n'a pas encore été traitée).

Attachments (2)

buffer.diff (1.6 KB) - added by Lipki 11 years ago.
buffer.2.diff (1.6 KB) - added by Lipki 11 years ago.

Download all attachments as: .zip

Change History (13)

comment:1 Changed 13 years ago by laurentj

  • Milestone changed from Jelix 1.0beta2 to post jelix 1.0

comment:2 Changed 13 years ago by laurentj

  • Milestone changed from Later to Jelix 1.1

comment:3 Changed 13 years ago by laurentj

  • Milestone changed from Jelix 1.1 to Jelix 1.2

comment:4 Changed 11 years ago by laurentj

  • Documentation needed unset

Même problème avec les plugins qui ajoutent des feuilles CSS, liens js etc..

Changed 11 years ago by Lipki

comment:5 Changed 11 years ago by Lipki

laurentj: durant la génération de la page html, on pourrait générer le <body> en utilisant ob_start &co

mais ça veut dire qu'on stocke le contenu du body en mémoire avant envoi au lieu de l'envoyer directement sur des serveurs chargés, à mon avis ça doit pas être anodins

lipki: oui et puis c'est un gros changement de concept

laurentj: gros changement, je ne sais pas, parce que ça change rien du point de >vue de l'utilisation du framework

mis à part la fixation de ce bug faudrait voir si ça change de beaucoup au niveau utilisation mémoire parce que même avec des echo, il est possible que PHP bufferise quand même je crois qu'il y a des paramètres pour ça d'ailleurs dans le php.ini à la limite, on pourrait avoir un paramètre dans la classe jResponseHtml ou la config, pour dire si il faut bufferiser ou pas, ça permet de s'adapter au contexte serveur

(...)

laurentj: mais cette histoire de configuration, ça me plait pas super des masses non plus parce que si un type fait son module qui finalement ne fonctionne qu'en mode buffer, et qu'un autre le réutilise et qu'il est en mode non buffer, ça va être chiant

Finalement voilà un patch vite écrit vite testé. C'est surement pas optimal, mais c'est une réponse au problème en tous cas. Je ne l'ai fait que pour jResponseHtml mais je suppose qu'il serait aussi utile pour d'autres.

Pour ce qui est de la demande de loic_m,

loic_m: j'aimerais bien qu'on puisse faire un addJS(Link) avec un param pour dire qu'on veut le foutre en bas de page

et de ma suggestion,

lipki: plutôt que de perdre les js, les insérer dans la page la ou il sont appeler.

Ça peut faire l'objet d'un autres ticket.

comment:6 Changed 11 years ago by Lipki

  • review set to review?

Changed 11 years ago by Lipki

comment:7 Changed 11 years ago by laurentj

  • review changed from review? to review-
[reponseshtml] 

je préfère qu'on l'appelle responses_options

$GLOBALS['gJConfig']->reponseshtml['buffered'] 

tu l'utilises deux fois. vaut mieux le stocker dans une variable locale.

echo "\r".

Horreur ! :-) pas de \r svp. on bosse pas exclusivement sous windows ou mac. \n est la rêgle.

comment:8 Changed 11 years ago by Lipki

promis je ne le ferais plus :)

comment:9 Changed 10 years ago by laurentj

  • Milestone changed from Jelix 1.2 beta to Jelix 1.2

any news ?

comment:10 Changed 10 years ago by laurentj

  • Milestone changed from Jelix 1.2 to Jelix 1.3
  • Priority changed from normal to highest

Avec la nouvelle gestion d'erreur que j'ai en préparation, pour la 1.3, mon patch corrige déjà le problème. ce patch ne sera donc plus d'actualité.

comment:11 Changed 9 years ago by laurentj

  • Documentation needed set
  • Resolution set to fixed
  • review review- deleted
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.