Template's Include

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Template's Include

    ...

    Ich beschäfftige mich zur Zeit mit Templates. Logischerweise kann man bei Templates ( sofern programmiert; standart bei http://smarty.php.net/ ) dateien includen. Ich habe weder dort im Manual(http://smarty.php.net/manual/en/lang...on.include.php) noch sonst wo, eine Lösung gefunden.

    Mein Ziel:
    Ich möchte meinem Designer ermöglichen, ein Schlüsselwort festzulegen, dass dynamische Pfade möglich sind (z.B.) falls mal ein Umzug stattfinden sollte, so dass sie aber komplett sind, und er sich darum nicht mehr zu kümmern brauch.

    im End-Effekt geht es ja so:

    Code:
    {include file="file:C:/apachefriends/xampp/htdocs/community/
    max/max/templates/standart/header.tpl" title=Max-3D}
    [COLOR=RED]

    Falls sich jemand wundert:
    (* absoluter Dateipfad unter Windows ("file:"-Prefix MUSS übergeben werden) )
    [/COLOR]

    Ok. Jetzt hab ich gedacht, ich ermögliche ihm eine {$variable} und damit würde es klappen. So ich es teste, kam ein Fehler, dass das nicht geht.

    Sollte etwa so aussehen:
    Code:
    {include file="{$absolute_phat}/header.tpl" title=Max-3D}
    Falls es jemanden intressiert:
    Warning: Smarty error: unable to read resource: "file:C:/apachefriends/xampp/htdocs/community/max/max/templates/standart/header.tpl" in C:\apachefriends\xampp\htdocs\community\max\max\smarty\libs\Smarty.class.php on line 1088

    Weiß jemand kurzer Hand, wie dass anders geht, oder müsste ich ein Plugin erweitern? ( Was ich lieber ungern tun würde, falls es mal Smarty-Updates o.ä. gibt )
    Oder benutzte ich das {} für den Include-Befehl falsch?

    EDIT:

    Falls es doch nicht vorgesehen ist, dass man das so ähnlich kann ohne Plugins, werde ich wohl in der php datei dafür sorgen...
    PHP-Code:
    $smarty->display('blahblah'); // header
    $smarty->display('blahblah'); // someone
    $smarty->display('blahblah'); // footer 



    ...
    Zuletzt geändert von xManUx; 15.12.2004, 02:28.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

  • #2
    Wäre die Frage nicht da besser aufgehoben?
    -> http://www.phpinsider.com/smarty-forum/

    Kommentar


    • #3
      Original geschrieben von S.Oliver
      Wäre die Frage nicht da besser aufgehoben?
      -> http://www.phpinsider.com/smarty-forum/
      OffTopic:

      Nö warum denn?

      Ich kauf Blumenerde ja auch im ProMarkt


      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        Re: Template's Include

        Original geschrieben von xManUx
        Oder benutzte ich das {} für den Include-Befehl falsch?
        ja
        alles was zwischen { und } wird von smarty interpretiert, wenn du dazwischen nochmal {} verwendest, wäre das vergleichbar mit
        PHP-Code:
        <?php
        include <?php echo $what?>.'.tpl';
        ?>
        schreibe einfach
        Code:
        {include file="$what.tpl"}
        http://smarty.php.net/manual/en/lang...tax.quotes.php
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von Payne_of_Death
          OffTopic:

          Nö warum denn?

          Ich kauf Blumenerde ja auch im ProMarkt


          OffTopic:

          Oder nen PC beim Aldi...!


          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
          sondern mit den Augen das Manual zu lesen.

          Kommentar


          • #6
            Re: Re: Template's Include

            Original geschrieben von mrhappiness
            ja
            alles was zwischen { und } wird von smarty interpretiert, wenn du dazwischen nochmal {} verwendest, wäre das vergleichbar mit
            PHP-Code:
            <?php
            include <?php echo $what?>.'.tpl';
            ?>
            schreibe einfach
            Code:
            {include file="$what.tpl"}
            http://smarty.php.net/manual/en/lang...tax.quotes.php
            Thx. Hm. Aber ich denke, da es ja um die Einfachkeit gehen soll, wäre es noch angenehmer für ihn, wenn er nicht einmal in der TPL Datei dafür sorgen muss. Somit wäre IMHO das Includen der TPL von ( Header, Footer ) in der PHP-Datei bequemer.

            BTW: Bin ehrlich gesagt froh, dass ich mich nicht mehr ausgiebig ums HTML kümmern muss, da kommts auf 2 Dateien Inlcuden via. ->display() auch nicht mehr drauf an

            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
            sondern mit den Augen das Manual zu lesen.

            Kommentar


            • #7
              angenehmer im sinne von "trenne logik von präsentation" oder "trenne php/entwicklung von html"

              ich binde teilweise templates ein, die so heißen wie der url-parameter der übergeben wurde und wenn ich das einbinden im template mache, dann kan ich dieses "subtemplate" da hinschieben wo es gebraucht wird und wenn ich es in php mache, dann geht das nicht
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                dann kan ich dieses "subtemplate" da hinschieben wo es gebraucht wird und wenn ich es in php mache, dann geht das nicht
                Hm? Ich denke, ich liege da falsch, oder verstehe Dich falsch, oder ich habe keine Ahnung. Aber wieso nicht? Das kann man ja mixen und variieren, oder nicht?

                BTW:

                Ich hatte jetzt noch keine Zeit dies zu testen. Ich werden demnächst tun. Was ist, wenn ich zum Beispiel eine showthread.php habe? Ich kann unmöglich verlangen, dass mein Designer jetzt großartig mit Schleifen etc. beschäfftigt. Das führt einfach zu nix

                Ich hatte bis jetzt im phpbbforum gesehen, dass die Templatedatei in etwa so aussieht:

                Code:
                <!-- BEGIN postrow -->
                	<tr> 
                  	<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}">
                <span class="name">
                <a name="{postrow.U_POST_ID}"></a>
                <b>{postrow.POSTER_NAME}</b></span>
                <br /><span class="postdetails">{postrow.POSTER_RANK}<br />
                {postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />
                {postrow.POSTER_POSTS}<br />
                {postrow.POSTER_FROM}</span>
                <br /></td>
                <td class="{postrow.ROW_CLASS}" width="100%" height="28"
                valign="top"><table width="100%" border="0" cellspacing="0" 
                cellpadding="0">
                <-- END postrow -->
                Also wenn ich es richtig verstanden habe, soll <!-- xx --> das {* Kommentar *} erstezen. Wenn ich richtig der Annahme bin, dass postrow.XXvar für ein Array in Array eine Schleife ersetzt, dürfte das in der meiner PHP-Datei wie folgt aussehen.

                PHP-Code:
                while($dumdidum) {

                $template->assign('postrow', array('POSTER_NAME' => $row_nickname,
                                                                    
                'POSTER_FROM' => $row_from )

                );


                richtig, oder eine Grundlage verwirkt?
                Zuletzt geändert von xManUx; 15.12.2004, 18:06.

                Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                sondern mit den Augen das Manual zu lesen.

                Kommentar


                • #9
                  ich behaupte mal ganz frech, dass du mit assign den eintrag immer überschreibst oder?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Was meinst Du mit überschreiben? 1. Oder 2. Einen Schlüsselwort-Wert zuweisen? Falls Du 1. meinst, dass müsste ich mal ganz frech testen, ob das klappt. Ich wills hoffen... Damit wäre das Schleifen Problem gelöst, was maybe für Deine Template interessant sein könnte, sofern es nicht überschrieben werden würde, sondern sinnvoll eine Schleife ersetzt.

                    1. In der Art von:

                    ($while) {
                    $v = 1;
                    }

                    oder 2.:

                    $smarty->assign("login", $header_output->check_uname());

                    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                    sondern mit den Augen das Manual zu lesen.

                    Kommentar


                    • #11
                      bei smarty überschreibst du, wenn du assign für eine templatevariable mehrmals verwendest und mit append fügst du und hast dann ein array mit werten (kannst natürlich auch ein array "assignen")

                      so isses bei smarty und bei meiner auch

                      du musst jetzt eine möglichkeit finden im template dieses array auszugeben, also im template irgendwie zu sagen, dass ein bestimmter bereich nicht nur einmal, sondern mehrfach, genauer gesagt: so oft wie einträge im array sind, durchlaufen werden soll
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Ah. Ich dachte, dass wäre mit ROW.blah möglich?
                        Wenn man es wie oben angegeben, anwenden würde? Argh.. zu früh gefreut? Wie wäre es denn möglich, soetwas zu "sagen", --> anfang schleife <-- end schleife

                        vars.. vars2.. etc..

                        --> end schleife <--



                        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                        sondern mit den Augen das Manual zu lesen.

                        Kommentar


                        • #13
                          so wie ich es mache, so wie smarty es macht, die templatesyntax oben setzt <!-- BEGIN postrow --> und <!-- END postrow --> wahrscheinlich auch in eine schleife um
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            ich werd's die Tage mal probieren, sonst drehen wir uns nur in der Theorie herum, ohne Praxis.

                            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                            sondern mit den Augen das Manual zu lesen.

                            Kommentar


                            • #15
                              ich habs so gemacht !

                              im Php-file
                              vorher php Variable erzeugt und dann
                              PHP-Code:
                              $smarty->assign('inhalt'$inhalt); 
                              im Template
                              PHP-Code:
                              {include file="$inhalt/index.tpl"

                              Kommentar

                              Lädt...
                              X