Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Template et fetch recursif

Posted by Mike on 03/26/2008 11:52

Bonjour, Nous utilisons un editeur WYSIWYG pour certaines des pages de contenus sur notre site web. Cependant nous aimerions appeller à partir de cette page une ou plusieurs zone jelix créées précédemment.

Exemple: Au milieu d'un fichier d'aide, appel d'une zone affichant un tableau récapitulant les frais de transport..

Le template est le suivant:

 <div id="aide">
 {$aide->contenu_html}
 </div>

à l'interieur de $aide->contenu_html il y a

 <p>le code html, blabla bla les frais
 {zone 'frais_transport'}
 la suite du blabla
 </p>

et l'affichage est donc tout ce qu'il y a de plus normal c'est à dire:

 <div id="aide">
 <p>le code html genéré, blabla bla les frais
 {zone 'frais_transport'}
 la suite du blabla
 </p>
 </div>

alors que j'aimerais avoir:

 <div id="aide">
 <p>le code html genéré, blabla bla les frais
 <table><tr><td>cout 1</td><td>cout 2</td></tr></table>
 la suite du blabla
 </p>
 </div>

La question est comment faire pour que la zone 'frais_transport' soit aussi fetchée??

Je pensais à utiliser une fonction de template qui permet de fetcher un contenu html, mais je ne vois pas comment appelé la classe jtpl sans passer par un sélécteur...

Un peu d'aide ne serait pas de refus ! Merci.

  [Opened] Re: Template et fetch recursif

Reply #1 Posted by laurentj on 03/26/2008 12:40

Salut,

Ce n'est pas possible de faire ce genre de chose en l'état.

Surtout qu'au niveau sécurité, c'est pas tip top, car là, si j'ai bien compris le fonctionnement de ton appli, ça voudrait dire que l'utilisateur peut mettre n'importe quel instruction de template, donc faire appeler n'importe quelle zone.

Une manière de contourner le problème, serait de stocker $aide->contenu_html dans un template dans var/themes/default/yyy/aide_xxx.tpl où yyy est le nom d'un de tes modules et xxx l'id de l'enregistrement de l'aide (par exemple...). Ce stockage se ferait bien sûr après l'édition de ton enregistrement "aide". Note: on stocke non pas dans le module directement, mais dans var/ car var/ veut dire "variables", donc contient tout les fichiers crées et modifiés dynamiquement par l'application ;-)

Et au moment de l'affichage, tu fais un truc dans le genre

  $contenutpl = new jTpl();
  $contenutpl->assign(...); // éventuellement
  $contenuhtml = $contenutpl->fetch('yyy~aide_'.$aide->id);
 
  $tplaide->assign('aide',$aide);
  $tplaide->assign('contenuhtml',$contenuhtml);

Ainsi donc, dans le template tplaide, tu aurais ça

  <div id="aide">
  {$contenuhtml}
  </div>

C'est un peu lourd dans la mesure où il faut gérer ces fichiers de template aide_* en plus de tes enregistrements en base. Mais c'est la seule solution pour le moment.

  [Opened] Re: Template et fetch recursif

Reply #2 Posted by laurentj on 03/27/2008 10:30

c'est de pouvoir, dans le menu de l'editeur wysiwyg, avoir accès à une liste de zone (celle définies dans la conf), comme ça on pourrait integrer certains éléments de façon totalement dynamique.

Ça ne résoud pas le problème : avec des outils comme firebug ou autre, je peux t'injecter dans le code html produit n'importe quoi comme chaine ou éléments, donc des appels de zone non autorisées. (c'est la même technique utilisée pour les injections de code javascript, donc problème de sécurité type XSS)

Il faut donc AUSSI faire une vérification coté serveur.

Est-ce que cela mérite un ticket pour les prochaines évolutions?!

Je ne sais plus si il n'y en a pas déjà hein. Faut vérifier. Mais personnellement je n'aurai pas le temps de m'en occuper.

 
Page
  1. Template et fetch recursif