Partage
  • Partager sur Facebook
  • Partager sur Twitter

Templates : les bloks

je suis bloqué...

    27 décembre 2005 à 11:07:59

    bonojur...
    j'ai des petits soucis avec mes templates...
    voila je suis en train de réecrire e code de mon site en le separant d'une part les .php et de l'autre les .tpl

    mais forcement dans mes .tpl j'ais des données qui ne doivent apparaitre que sous certaines conditions...j'ai donc utilisé les blocks ( peut qu'il faut pas )

    apres séparation j'ai donc ça :

    <?php
    require_once("include/fonctions.php");
    dbconn();

    stdhead("Login");

    $template = new Template('templates/');
    $template->set_file("page","login.tpl");

    $template->set_block("page","warm","");
    unset($returnto);
    if (!empty($_GET["returnto"]))
    {
            $returnto = htmlspecialchars($_GET["returnto"]);
            if (!$_GET["nowarn"])
            {
                    $template->set_var(array(
                    "INFO" => "<h1>Not logged in!</h1>\n",
                    "ERROR" => "<p><b>Error:</b> The page you tried to view can only be used when you're logged in.</p>\n"
                    ));
            }
    }

    if (isset($returnto))
            $template->set_var("HIDDEN",$returnto);
    $template->parse("","warm",true);
                   
    $template->set_var("SIGNUP",$GLOBALS['DEFAULTBASEURL'].'/signup.php');
    $template->pparse("MyOutput","page");

    stdfoot();

    ?>



    <form method="post" action="takelogin.php">

    <!-- BEGIN warm -->
    {INFO}
    {ERROR}
    <input type="hidden" name="returnto" value="{HIDDEN}" />
    <!-- END warm -->

    <p>Note: You need cookies enabled to log in.</p>

            <table border="0" cellpadding="5">
                    <tr>
                            <td class="rowhead">Username:</td>
                            <td align="left"><input type="text" size="40" name="username" /></td>
                    </tr>
                    <tr>
                            <td class="rowhead">Password:</td>
                            <td align="left"><input type="password" size="40" name="password" /></td>
                    </tr>
                    <tr>
                            <td class="rowhead">Duration:</td>
                            <td align="left"><label><input type="checkbox" name="logout" value="yes" checked="checked" />Log me out after 15 minutes inactivity</label></td>
                    </tr>
                    <tr>
                            <td colspan="2" align="center"><input type="submit" value="Log in!" class="btn" /></td>
                    </tr>
            </table>
           
    </form>

    <p>Don't have an account? <a href="{SIGNUP}">Sign up</a> right now!</p>


    si un membre veut ce connecter directement sur "login.php" tout va bien...
    si en revanche s'il veux acceder à une page necessitant un login...
    la meme page "login.php" va s'afficher mais cette fois avec le message :

    Citation : error

    Not logged in!
    Error: The page you tried to view can only be used when you're logged in.



    mais voici ou ca bloque.... je suis onbliger de mettre ce message en (X)HTLM dans une variable de mon template MAIS dans mon fichier .php
    moi je le voudrai dans mon fichier .tpl de la sorte :

    <form method="post" action="takelogin.php">

    <!-- BEGIN warm -->
    <h1>Not logged in!</h1>
    <p><b>Error:</b> The page you tried to view can only be used when you're logged in.</p>
    <input type="hidden" name="returnto" value="{HIDDEN}" />
    <!-- END warm -->

    <p>Note: You need cookies enabled to log in.</p>

            <table border="0" cellpadding="5">
                    <tr>
                            <td class="rowhead">Username:</td>
                            <td align="left"><input type="text" size="40" name="username" /></td>
                    </tr>
                    <tr>
                            <td class="rowhead">Password:</td>
                            <td align="left"><input type="password" size="40" name="password" /></td>
                    </tr>
                    <tr>
                            <td class="rowhead">Duration:</td>
                            <td align="left"><label><input type="checkbox" name="logout" value="yes" checked="checked" />Log me out after 15 minutes inactivity</label></td>
                    </tr>
                    <tr>
                            <td colspan="2" align="center"><input type="submit" value="Log in!" class="btn" /></td>
                    </tr>
            </table>
           
    </form>

    <p>Don't have an account? <a href="{SIGNUP}">Sign up</a> right now!</p>


    mais voila mon block "warm" n'a pas trop lair de vouloir fonctionner correctement...
    car le message s'affiche tout le temps...meme si le membre veut se loger en allant directement sur "login.php"...

    je sais pas si j'ai fait les bonnes manipulations avec les variables templates... j'ai pas arreter de fouiner dans la toile, teste d'autres templates ( phpBB )
    mais sans succés..si parmi vous il existe de fortes tétes en templates... j'aurai bien besoin de son aide.... :(

    merci d'avance :euh:
    • Partager sur Facebook
    • Partager sur Twitter
      27 décembre 2005 à 23:10:44

      Personne ???? :euh:
      sil vous plais...... :'(
      personne ne sy connai en templates???
      ai'je utiliser les mauvaises fonctions?? ou sont elles mal placées ????

      HELPPPP :'(
      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2005 à 22:49:48

        snif snif snif ..... :(:'(
        vraime personne pour moi ???? :euh:
        comment je me sens seul moi...
        comme un zero tout seul .. snif snif :(
        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2005 à 11:19:47

          euh avec le système de template que j'utilise je comprend pas très bien. et comme je suis pas fort j'aurai besoin que tu me fasse comprendre ton code parce php je suis moyen voir nul mais template je maitrise un peut. alors si je comprend bien quandquelque va sur par exemple proteger.php et qu'il n'est pas connecté il est rediriger vers login.php et sa affiche une erreur se serai pas mieu de faire le code comme sa :

          <?php
          require_once("include/fonctions.php");
          dbconn();

          stdhead("Login");

          $template = new Template('templates/');
          $template->set_file("page","login.tpl");

          $template->set_block("page","warm","");

          if ($_GET["returnto"] AND $_GET["returnto"] == "notlogin"))
          {
                  $returnto = htmlspecialchars($_GET["returnto"]);

                          $template->set_var(array(
                          "INFO" => "<h1>Not logged in!</h1>\n",
                          "ERROR" => "<p><b>Error:</b> The page you tried to view can only be used when you're logged in.</p>\n"
                          ));
          }

          if (isset($returnto))
                  $template->set_var("HIDDEN",$returnto);
          $template->parse("","warm",true);
                         
          $template->set_var("SIGNUP",$GLOBALS['DEFAULTBASEURL'].'/signup.php');
          $template->pparse("MyOutput","page");

          stdfoot();

          ?>



          <form method="post" action="takelogin.php">

          <!-- BEGIN warm -->
          {INFO}
          {ERROR}
          <input type="hidden" name="returnto" value="{HIDDEN}" />
          <!-- END warm -->

          <p>Note: You need cookies enabled to log in.</p>

                  <table border="0" cellpadding="5">
                          <tr>
                                  <td class="rowhead">Username:</td>
                                  <td align="left"><input type="text" size="40" name="username" /></td>
                          </tr>
                          <tr>
                                  <td class="rowhead">Password:</td>
                                  <td align="left"><input type="password" size="40" name="password" /></td>
                          </tr>
                          <tr>
                                  <td class="rowhead">Duration:</td>
                                  <td align="left"><label><input type="checkbox" name="logout" value="yes" checked="checked" />Log me out after 15 minutes inactivity</label></td>
                          </tr>
                          <tr>
                                  <td colspan="2" align="center"><input type="submit" value="Log in!" class="btn" /></td>
                          </tr>
                  </table>
                 
          </form>

          <p>Don't have an account? <a href="{SIGNUP}">Sign up</a> right now!</p>
          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2005 à 22:34:45

            Enfin quelqu'un me repond....

            MERCI MERCI...

            bah justement c'est ce que j'ai fait...
            mais j'aimerai separer le php du xhtlm... TOUT separer

            car dans d'autres pages....notament une...où si j'applique la meme methode...bah il se trouve ke mon template ne contiendre que
            {var1}
            {var2}
            etc....


            et je sais que l'on peut utiliser des <!-- BEGIN machin --> <!-- END machin -->
            avec du xhtlm dedans et qui n'apparai uniquement si la variable dans le fichier php est vrai

            genre
            if $valeur == admin
            $template->set_var()
            ....

            $template->parse("","machin",true);


            <!-- BEGIN machin -->
                    <table border="0" cellpadding="5">
                            <tr>
                                    <td class="rowhead">Username:</td>
                                    <td align="left"><input type="text" size="40" name="username" /></td>
                            </tr>
                            <tr>
                                    <td class="rowhead">Password:</td>
                                    <td align="left"><input type="password" size="40" name="password" /></td>
                            </tr>
                            <tr>
                                    <td class="rowhead">Duration:</td>
                                    <td align="left"><label><input type="checkbox" name="logout" value="yes" checked="checked" />Log me out after 15 minutes inactivity</label></td>
                            </tr>
                            <tr>
                                    <td colspan="2" align="center"><input type="submit" value="Log in!" class="btn" /></td>
                            </tr>
                    </table>
            <!-- END machin -->


            tout ce qui est contenu entre le BEGIN et END n'apparait uniquement que si la valeur est vrais...

            or avec cette methode, le code xhtlm apparait tout le temps..
            pour qu'il n'apparaisse pas je doit le mettre en print() dans mon code php...et donc le tpl inutile... :(
            • Partager sur Facebook
            • Partager sur Twitter
              30 décembre 2005 à 16:25:59

              'est assé vrai adieu tpl mais avec smarty tu mais un code php et pour le xhtml eh bien tu met directement du php comme sa( <? = {php} ?>= {/php} ) :

              {php}if(bleble = blabla
              {
              {/php}
              <!-- BEGIN machin -->
                      <table border="0" cellpadding="5">
                              <tr>
                                      <td class="rowhead">Username:</td>
                                      <td align="left"><input type="text" size="40" name="username" /></td>
                              </tr>
                              <tr>
                                      <td class="rowhead">Password:</td>
                                      <td align="left"><input type="password" size="40" name="password" /></td>
                              </tr>
                              <tr>
                                      <td class="rowhead">Duration:</td>
                                      <td align="left"><label><input type="checkbox" name="logout" value="yes" checked="checked" />Log me out after 15 minutes inactivity</label></td>
                              </tr>
                              <tr>
                                      <td colspan="2" align="center"><input type="submit" value="Log in!" class="btn" /></td>
                              </tr>
                      </table>
              <!-- END machin -->

              {php}
              }
              {/php}


              si ton begin et ton end ne maarche pas je vois pas de solution sois le tpl sert a rien soit tu fait comme smarty mais a ce moment la le hp ne sert juste qu'a afficher la page et c'est un peut bete.
              • Partager sur Facebook
              • Partager sur Twitter
                30 décembre 2005 à 21:52:28

                Tu utilise le moteur Smarty si j'ai bien suivi...
                tu sait bien les utilisé ???
                a ca moment la je vais suivre ton conceil..mais il me faudrait un peut d'aide afin de comprendre le Smarty ... surtout avec les blocks... car avec les variables ca devrais aller... :-)
                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2005 à 22:20:22

                  bas enfaite j'ai du mal moi meme a comprendre smarty mais quand j'ai découvert que 'lon peut metre du php dans le template eh bien au lieu de faire des bloc j'ai fait un peut plus simple avec {php}mon code php {/php} j'utilise que pour les while et pour remplacé les block que j'utilise {php}{/php}sinon pour comprendre smarty prend quelque cachet d'aspirine et prend le temps de lire la doc.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Templates : les bloks

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown