phplib Template - nur der letzte Wert wird ausgegeben

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

  • phplib Template - nur der letzte Wert wird ausgegeben

    Hallo zusammen,
    alsoooo, ich hab da ein Problem:

    also mein Ziel ist es eine Seite zu erstellen, z.B.: blockBeispiel.php
    und die Variable $content der Seite template.inc.php zu übergeben damit er diese auf der Seite template.tpl.php zusammensetzt.

    Wenn ich dann neue Seiten erstelle (wie z.B.: blockBeispiel.php), brauche ich dann "nur" die Variablen, die in template.tpl.php vorkommen zu übergeben. Ich habe übersichtlicherweise die anderen ($head,$menue...etc..) weggelassen und nur $content übergeben.

    Im Moment wird mir nur der letzte Wert aus der for-Schleife ausgegeben (also die 10).



    Das ist mein HauptTemplate:

    template.tpl.php
    Code:
    <html>
     <head><title>{TITEL}</title></head>
     <body >
        <table border="1" width="100%" bgcolor="e6e6e6" cellpadding="5">
          <tr>
          	<td colspan="3" align="center">{HEAD}</td>
          </tr>
          <tr>
          	<td align="center" valign="top" width="10%">{MENUE}</td>
          	<td align="center" bgcolor="#ffffff" width="80%" valign="top"><br>{CONTENT}<br><br></td>
          	<td align="center" valign="top" width="10%">{LINKS}</td>
          </tr>
          <tr>
          	<td colspan="3" align="right">heute ist der: {DATUM}</td>
          </tr>
        </table>
      </body>
    </html>
    Nun möchte ich an der Stelle wo {CONTENT} steht diese Seite einbinden:

    blockBeispiel.tpl.php
    Code:
      <!-- BEGIN block -->
        <table>
          <tr><td>{BLOCKINHALT}</tr></td>
        </table>
      <!-- END block -->
    Das erreiche ich durch diese Zeile:
    $content="blockBeispiel.tpl.php";

    in blockBeispiel.php
    PHP-Code:
    <?php
    $content
    ="blockBeispiel.tpl.php";

    //Ausgabe erfolgt in template.inc.php
    include("inc/template.inc.php");
    ?>
    und dann hab ich noch
    template.inc.php
    PHP-Code:
    <?php
    //Einfügen der Template Klasse von Kristian Köhntopp
    require("template_class.inc.php");

    $tpl = new template("./tpl/","keep");

    $tpl->set_file("CONTENT"$content);//<-- hier soll der CONTENT von blockBeispiel.tpl.php ersetzt werden
    $tpl->parse("temp""CONTENT");


    /*************Block-Beispiel************/
    $tpl->set_file("seite""$content");
    $tpl->set_block("seite""block""blockbereich");

    $tpl->set_var(array("TITLE" => "Das ist mein Seitentitel"));

    for (
    $i 1$i <= 10; ++$i) {
      
    $tpl->set_var(array("BLOCKINHALT" => $i));
      
    $tpl->parse("blockbereich""block"true);
    }
    $tpl->parse("out""blockbereich");

    /*************Block-Beispiel************/


    $tpl->set_file("template""template.tpl.php");
    $tpl->parse("out""template");
    $tpl->p("out");

    ?>
    Kann mir bitte jemand sagen, wie ich es hinbekomme das alle Werte korrekt im Bereich {CONTENT} aufgelistet werden?!
    Wie gesagt, das Template-System scheint zu funktionieren, aber es erscheint immer nur ein Wert (der letzte).

    Auch wenn ich ein anderes Array ausgeben möchte, z.B. gefüllt aus der DB und eine ganz andere Schleife, erscheint
    immer wieder nur der letzte Wert. Es liegt also nicht an der for-Schleife.

    Kann mir bitte jemand weiterhelfen?

    Gruß tr0n

  • #2
    Kenn mich mit deiner Engine nicht aus. Aber sieht danach aus, dass du den wert immer wieder überschreibst, anstatt ihn dran zuhängen (?).

    Was sagt die Doku dir in dieser Richtung?

    Kommentar


    • #3
      Danke für Deinen Hinweis TobiaZ...
      Du meinst sicherlich diese Stelle mit dem Überschreiben...

      PHP-Code:
      for ($i 1$i <= 10; ++$i) {
        
      $tpl->set_var(array("BLOCKINHALT" => $i)); //<----- hier wird $i überschrieben
        
      $tpl->parse("blockbereich""block"true);

      Was sagt die Doku dir in dieser Richtung?
      Wenn ich nur wüsste wo ich in der Doku nachschauen muss, würde
      ich es liebend gerne machen.

      Ich bin leider ein Template-Anfänger, wie müsste ich es denn
      machen das er es mir nicht mehr überschreibt?
      Kannst Du mir bitte helfen?

      Kommentar


      • #4
        Wie gesagt kenne ich die Engine nicht. Kann also nur mit logischem Verständnis an die Sache gehen. Darum musst du mich schon unterstützen.

        $tpl->set_var(array("BLOCKINHALT" => $i)); //<----- hier wird $i überschrieben
        Das hier ist allerdings totaler Quatsch. Wieso meinst du, dass dort $i überschrieben wird???

        Was genau macht set_var()? Was sagt die Doku dazu, dass du da n array (in dieser Form) übergibst?

        Kommentar


        • #5
          Hi TobiaZ,
          vielen Dank das Du mir helfen wolltest, aber hab es lösen können.
          Die Hilfe kam aus einem anderen Forum:

          PHP-Code:
          <?php
          //Einfügen der Template Klasse von Kristian Köhntopp
          require("template_class.inc.php");

          $tpl = new template("./tpl/","keep");

          $tpl->set_file("CONTENT"$content);//<-- hier soll der CONTENT von blockBeispiel.tpl.php ersetzt werden
          $tpl->parse("temp""CONTENT");
          //- 1. kannst Du das erst machen, wenn Du content verarbeitet hast (incl. Block
          //- 2. macht es keinen Sinn, $content zweimal einzulesen.
          //- 3. benutzt Du temp nie wieder
          //- dafür hast Du jetzt Unsinn in CONTENT drinstehen, den Du nie
          //- mit was sinnvollem überschreibst

          /*************Block-Beispiel************/
          $tpl->set_file("seite""$content");
          $tpl->set_block("seite""block""blockbereich");

          $tpl->set_var(array("TITLE" => "Das ist mein Seitentitel"));

          for (
          $i 1$i <= 10; ++$i) {
            
          $tpl->set_var(array("BLOCKINHALT" => $i));
            
          $tpl->parse("blockbereich""block"true);
          }
          $tpl->parse("out""blockbereich");

          //- $tpl->parse("CONTENT", "blockbereich");
          //- wäre wohl sinnvoller, denn was hat das in "out" zu suchen,
          //- ausser vom nächsten parse() gleich wieder überschrieben zu werden?

          /*************Block-Beispiel************/


          $tpl->set_file("template""template.tpl.php");
          $tpl->parse("out""template");
          $tpl->p("out");
          ?>
          nachdem ich diese Schritte befolgt habe, hat alles wunderbar geklappt....

          Gruß tr0n

          Kommentar

          Lädt...
          X