IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] régénération des fichiers compilés


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Points : 94
    Points
    94
    Par défaut [Smarty] 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->debugging = false;
    $this->caching = false;
    $this->compile_check = true;
    merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Salut

    essaie avec $force_compile = true

    doc :

    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é

  3. #3
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    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?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Il y a quelque chose que je ne comprends pas : quand tu dis template1 et template2, il s'agit du même fichier .tpl ?

  5. #5
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    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...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    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

Discussions similaires

  1. Classement des fichiers compilés
    Par noftal dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/01/2014, 12h32
  2. Comment ajouter des fichiers à compiler ?
    Par LordMacharius dans le forum Débuter
    Réponses: 2
    Dernier message: 01/12/2010, 16h14
  3. Compiler pour créer des fichiers ROM Z80
    Par malem09 dans le forum Pascal
    Réponses: 7
    Dernier message: 18/02/2007, 10h22
  4. Les logiciels pour compiler des fichiers HTML en fichiers d’
    Par Edoxituz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 23/02/2006, 18h02
  5. Réponses: 2
    Dernier message: 17/10/2005, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo