Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2007, 10h27   #1
Membre du Club
 
Inscription : juin 2004
Messages : 257
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 257
Points : 64
Points : 64
Par défaut régénération des fichiers compilés

Bonjour,


J'ai developper 2 jeux de templates smarty dans un site et le but est de permettre à 'internaute de choisir sa présentation. Par contre j'ai un problème avec les fichiers compilés de smarty.

En effet le code XHTML n'est pas le même entre les 2 jeux de templates et lorsque je passe du template1 au template2, dans la page s'affiche le code HTML
du template1. Si je supprime les fichiers compilé du répertoire templates_c, la page s'affiche alors normalement.

Comment faire pour réécrire les fichiers compiler lorsque je choisi un modèle?

voila les paramètres que j'ai définie dans le fichier de setup
Code :
1
2
3
4
 
$this->debugging = false;
$this->caching = false;
$this->compile_check = true;
merci de votre aide
epeichette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 12h39   #2
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Salut

essaie avec $force_compile = true

doc :

Citation:
Celà oblige Smarty a (re)compiler les templates a chaque invocation. Ce réglage supplante $compile_check. Par défaut, il est désactivé. Ceci est commode pour le développement et le débogage mais ne devrait jamais être utilisé dans un environnment de production. Si le système de cache est actif, les fichiers du cache seront regénérés a chaque appel.
Mais comme indiqué dans la doc, ce n'est pas recommandé
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 13h45   #3
Membre du Club
 
Inscription : juin 2004
Messages : 257
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 257
Points : 64
Points : 64
Merci pour la réponse, je suppose que ceci va impliquer des temps de réponse plus lente dans la mesure où la compilation se fera a chaque chargement de page....
Existe t'il une autre solution puisque celle ci n'est pas recommander?
est ce que je pourrais par exemple mettre en place plus répertoire de compilation que l'on irait chercher en fonction du template choisi?
epeichette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 23h09   #4
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Il y a quelque chose que je ne comprends pas : quand tu dis template1 et template2, il s'agit du même fichier .tpl ?
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 08h50   #5
Membre du Club
 
Inscription : juin 2004
Messages : 257
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 257
Points : 64
Points : 64
Bonjour,

Non Non ce ne sont pas les même fichiers
voila ce que j'ai par exemple :
/template/defaut/connexion.tpl : dans celui là, la page de log est un cadre arrondi, donc j'ai ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<table width="60%"  border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td><img src="{$smarty.const.PATH_TPL_IMG}ident_angleHG.gif" width="19" height="16"></td>
              <td background="{$smarty.const.PATH_TPL_IMG}ident_ligneH.gif"><img src="{$smarty.const.PATH_TPL_IMG}spacer.gif" width="3" height="14"></td>
              <td><img src="{$smarty.const.PATH_TPL_IMG}ident_angleHD.gif" width="17" height="16"></td>
            </tr>
            <tr class="cadre_ident">
              <td background="{$smarty.const.PATH_TPL_IMG}ident_ligneG.gif"><img src="{$smarty.const.PATH_TPL_IMG}spacer.gif" width="3" height="14"></td>
              <td width="100%" class="titre_ident"><br \>
                {#titre_ident#}<br \>
                <br \>
                <br \>
				{if $ERREUR_LOG}
                	<div class="erreur_over" id="log_erreur"> {$ERREUR_LOG}</div>
				{/if}
                <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="10">
                  <tr>
                    <td class="legendeB">{#identifiant#} :</td>
                    <td>
                      <input name="ident" type="text" class="input" size="30" maxlength="14" value="{$IDENT}" onBlur="this.className='input';" onFocus="this.className='input_focus';">
                    </td>
                  </tr>
                  <tr>
                    <td  class="legendeB">{#pw#} : </td>
                    <td>
                      <input name="pw" type="password" class="input" size="30" maxlength="10" onBlur="this.className='input';" onFocus="this.className='input_focus';"></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="center">
                      <input name="bt_valider"  id="bt_valider" type="image" src="{$smarty.const.PATH_TPL_IMG_LANG}bt_valider.gif" alt="{#bt_ident#}" onMouseOver="RollOverInputImg('bt_valider','bt_valider_over','{#bt_ident#|aslash}');return true;" onMouseOut="RollOverInputImg('bt_valider','bt_valider','');return true;">
                    </td>
                  </tr>
              </table></td>
              <td background="{$smarty.const.PATH_TPL_IMG}ident_ligneD.gif"><img src="{$smarty.const.PATH_TPL_IMG}spacer.gif" width="3" height="14"></td>
            </tr>
            <tr>
              <td><img src="{$smarty.const.PATH_TPL_IMG}ident_angleBG.gif" width="19" height="16"></td>
              <td background="{$smarty.const.PATH_TPL_IMG}ident_ligneB.gif"><img src="{$smarty.const.PATH_TPL_IMG}spacer.gif" width="3" height="14"></td>
              <td><img src="{$smarty.const.PATH_TPL_IMG}ident_angleBD.gif" width="17" height="16"></td>
            </tr>
          </table>
[INDENT]/template/matisse/connexion.tpl : dans celui là, la page de log a un tableau avec une une bordure en css et une image en top;
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<table cellspacing="0" cellpadding="0" align="center">
            <tr>
              <td><img src="{$smarty.const.PATH_TPL_IMG_LANG}ident_titre.jpg" width="428" height="82"></td>
            </tr>
 
            <tr>
              <td class="cadre_log">
              <br \>
                <br \>
                <br \>
				{if $ERREUR_LOG}
                	<div class="erreur_over" id="log_erreur" align="center"> {$ERREUR_LOG}</div>
				{/if}
                <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="10">
                  <tr>
                    <td class="legendeB">{#identifiant#} :</td>
                    <td>
                      <input name="ident" type="text" class="input" size="30" maxlength="14" value="{$IDENT}" onBlur="this.className='input';" onFocus="this.className='input_focus';">
                    </td>
                  </tr>
                  <tr>
                    <td  class="legendeB">{#pw#} : </td>
                    <td>
                      <input name="pw" type="password" class="input" size="30" maxlength="10" onBlur="this.className='input';" onFocus="this.className='input_focus';"></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="center">
                      <input name="bt_valider"  id="bt_valider" type="image" src="{$smarty.const.PATH_TPL_IMG_LANG}bt_valider.gif" alt="{#bt_ident#}" onMouseOver="RollOverInputImg('bt_valider','bt_valider_over','{#bt_ident#|aslash}');return true;" onMouseOut="RollOverInputImg('bt_valider','bt_valider','');return true;">
                    </td>
                  </tr>
              </table>
              </td>
            </tr>
          </table>
Donc quand je passe passe du template defaut au template matisse, c'est le premier code qui s'affiche et il y a donc un problème. L'affichage redevient normal si j'actualise la page après avoir supprimé les fichier compilé.
epeichette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 19h09   #6
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Apparemment, Smarty utilise, pour le nom des templates compilées, le nom du fichier .tpl sans tenir compte du répertoire. Il faudrait donc utiliser des fichier avec des noms différents.


Mais ce que je te suggérerais serait plutôt d'utiliser des feuilles de style (CSS) pour le design et d'avoir un fichier css pour chacun des styles de ton site.
Dans ta template tu aurais quelque chose du genre :

Code :
<link rel="stylesheet" type="text/css" href="{$fichier_css}.css" media="screen" title="Normal">
et la variable $fichier_css serait définie en fonction du choix de l'utilisateur.
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 20h00   #7
Membre du Club
 
Inscription : juin 2004
Messages : 257
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 257
Points : 64
Points : 64
J'utilise effectivement un fichier css différent par template, mais il y existe quand même des différence de code html que je ne peux pas empêcher...

Mettre des nom de fichier différent revient,pour moi, a mettre en place un répertoire de de compilation différent par template, ce qui me semble plus simple à mettre en plce que de revenir sur toute mes page où j'assigne les fichiers de template

Merci quand même pour cette suggestion...
epeichette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2007, 12h35   #8
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
D'après ce que je vois dans les bouts de code que tu as indiqué plus haut la différence est que dans l'un des deux tu as deux lignes de plus dans tes tableaux, apparemment pour afficher des images dans les angles.

Cela peut très bien se faire en CSS. Si tu veux tu peux t'inspirer d'un site que j'ai réalisé et qui utilise se principe. Je ne sais pas si ça peut convenir mais on ne sais jamais : http://www.cip-ne.ch
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h07.


 
 
 
 
Partenaires

Hébergement Web