Categories > TinyButStrong general (FR) >

MergeBlock sur template variable

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: glachant
Date: 2008-04-24
Time: 12:59

MergeBlock sur template variable

Bonjour,
voilà mon pb : mon site utilise un "gabarit" dans lequel il y a 4 zones (header, coté gauche, coté droit, pied de page et contenu)
Dans mon header je veux fusionner un block (la chemin de l'utilisateur sur le site ex : accueil > Rubrique > Sous-rubrique avec le lien correspondant)
j'utilise donc :
PHP:
$headerRoot = array(0=>array("link"=>"/index.php", "text"=>"Accueil > "), 1=>array("link"=>"/accueil/myEtblsmt.php", "text"=>"Mon établissement"));
$tbs->MergeBlock('root', $headerRoot);

HTML :
<a href='[root.link;block=a;htmlconv=no]'>[root.text;block=a]</a>

Seulement voilà, au cours de mes scripts, je peux chager à plusieurs reprises d'autres modèles "contenu" (cf ma structure plus haut) et dans ce cas je suis obligé de refaire un LoadTemplate+MergeBlock à chaque fois, alors que normalement je le fais en fin de script...si encore j'ai juste un bloc ...pourquoi pas...mais ça va vite devenir fastidieux surtout au niveau évolution. il y a bien en substitution les [var.] mais dans cas je commence à mettre du html dans mon code et ça je veux pas...

Y-a-t-il donc un moyen pour que le MergeBlock se fasse automatiquement sans l'appeler ? ou sinon avez-vous une autre méthode ?

Merci de votre aide !
By: Skrol29
Date: 2008-04-24
Time: 14:09

Re: MergeBlock sur template variable

Salut,

Bien moi en fait je fais plutôt l'inverse : je fais d'un côté un code qui va fusionner tout ce qui est commun, et d'un autre côté de qui est spécifique au contenu. Quand je dis "d'un côté", ça peut vouloir dire dans un bloc if/then, ou dans un fonction ou même dans un script PHP à part.

By: Jerry
Date: 2008-04-25
Time: 12:07

Re: MergeBlock sur template variable

"mon site utilise un "gabarit" dans lequel il y a 4 zones (header, coté gauche, coté droit, pied de page et contenu)"
zarb moi j'en compte 5^^

d'après ce que j'ai compris tu veux créer un gabarit dynamique qui évoluera en fct du contenu. Tu pourrais essayer une chose, chaque fois que le contenu change, dans ton gabarit au milieu tu aura ça :
[onload;file=[var.tableau.plugins.template].tpl] ce que tu fais deja j'imagine. Ensuite j'imagine que pour chaque contenu/pages differents, tu charges aussi un fichiers spécifiques php
Une solution serait que tous les fichiers pour toutes les pages possedes des variables communes, par exemple le fichiers accueil.php et rubriques.php posséderont tous les deux des variables $contenu, $title, $root etc... et si jamais ce n'est pas necessaire et bien il suffit de laisser ces variables vides

ainsi a la fin de ton gabarit (qui doit etre index.php je pense) tu mergeblock toutes ces variables à chaque fois, meme si elles sont vides

je pense que c'est un moyen d'avoir une sorte de gabarit le plus dynamique possible

Voila, cela correspond t il a ce que tu as demandé ou pas du tout ?
By: glachant
Date: 2008-04-26
Time: 14:12

Re: MergeBlock sur template variable

Hello,

désolé pour le 4, c'est bien 5 "Blocs" dans mon gabarit...(je l'appel mainPage.tpl) et non pas index mais c'est pareil (l'index étant lui même un template qui se fusionne à la zone contenu.

Effectivement je pense que la solution à retenir est d'initialiser toutes les variables templates dans un fichier appelé dans toutes mes pages et de faire des merge block dans un fichier appelé en include à chaque "show".
...de cette façon il n'y a que 2 fichiers à mettre à jour si l'envie me prend de rajouter des variables sur des blocs commun (dans les header, pieg gauche et droite)

pour ceux que ça pourrait aider on aurait ainsi :
require_once("fichier des variables tpl communes");
require_once("fichier traitement des blocks commun")
scipts php spécifique
mergeblock des variables spécifiques
LoadTemplate("mon template gabarit")
include("fichier contenant les merge blocks communs et tbs->show")

Encore merci de votre aide précieuse...et VIVE TBS !