Announcement

Collapse
No announcement yet.

Möglichkeiten PHP in xHTML-Templates

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Möglichkeiten PHP in xHTML-Templates

    Hallo,

    ich wollte mal nachfragen, welche Möglichkeiten ich habe, PHP-Code in Templates zu parsen? Woltlab hatte dies beim wBB2 so gelöst, das man in den Templates direkt PHP parsen konnte, bspw. so ...

    <if($variable=="")><then></then><else></else></if>

    Kann mir Jemand hier einen Lösungsvorschlag präsentieren, bzw. einen gehörigen Denkanstoß geben?

  • #2
    Hallo Jascha,

    ich sehe dafür zwei Möglichkeiten:
    1. Du lädst das Template generell per include() (so wie das bei Mambo bzw. Joomla gelöst ist)
    2. Du generierst dein Template auf "normalem" Weg, statt es an den Client auszuliefern speicherst du es temporär ab und lädst es erst dann komplett als include in den PHP-Parser.

    Die zweite Variante halte ich persönlich für die flexiblere, da du deine bisher verwendete Templateklasse relativ einfach um diese Funktionalität erweitern kannst.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Falk,

      Danke Dir für Deine Antwort. In den Templates ist es mir bereits möglich, über $Variablen dynamische Inhalt mit einzubringen. Vielmehr möchte ich nun einen Schritt weiter gehen und bspw. IF-Abfragen direkt in den Templates unterbringen. Zum Beispiel so:

      &lt;html&gt;
      &lt;head&gt;
      &lt;title&gt;&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
      &lt;div&gt;
      <if(!$_SESSION['userid'])>
      <then>Du bist ein Gast</then>
      <else>Du bist ein User</else>
      </if>
      &lt;div&gt;
      Sonstiger Inhalt
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/body&gt;
      &lt;/html&gt

      Comment


      • #4
        Hallo,

        welche Template-Klasse verwendest du denn? Smarty besitzt z.B. die Möglichkeit per Scriptsprache Schleifen, Bedingungen etc. direkt in das Template zu packen.

        Gruß Fal
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Hallo,

          ich verwende keine in diesem Sinne ausgereifte Template-Klasse, sondern hatte selbst eine Art TPL-System programmiert, welches aber nicht diesen Umfang anderer TPL-Engines hat im herkömmlichen Sinne. Und gegen Smarty hege ich eine Abneigung :

          Comment


          • #6
            Hallo Jascha,

            wenn du die IF-Abfragen in der o.a. Form einauen willst, dann mußt du in dein TPL-System einen eigenen Script-Interpreter einbauen, der dir die if-Tags parst und dann über die php-Funktion eval() ausführt. Für einfacher halte ich da jedoch den Weg über das Temp-File.

            Ich gehe jetzt mal davon aus, deine fertig zusammengebautes Template befindet sich in der Variablen $tplVar und du würdest es normalerweise mit print $tplVar ausgeben. Stattdessen könntest du dann folgendes Coden:

            $tmpFName = tempnam(<i>my_tpl_temp_path</i>, "tpl");
            $tmpFile = fopen($tmpFName, "w");
            if ($tmpFile === false) {
            &nbsp;&nbsp;die("can't open temporary outfile $tmpFName");
            }
            if (fwrite($tmpFile, $tplVar) === false) {
            &nbsp;&nbsp;die("can't write to temporary outfile $tmpFName");
            }
            fwrite($tmpFile, "&lt;!-- pphp: $tmpFName --&gt;");
            fclose($tmpFile);
            include($tmpFName);
            unlink($tmpFName);

            Dein Template könnte dann z.B.: so aussehen:

            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;&lt;/title&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;div&gt;
            &lt;? if (!$_SESSION['userid']) { ?&gt;
            &nbsp;&nbsp;&lt;span&gt;Du bist ein Gast&lt;/span&gt;
            &lt;? }
            &nbsp;&nbsp;else { ?&gt;
            &nbsp;&nbsp;&lt;span&gt;Du bist ein User&lt;/span&gt;
            &lt;? } ?&gt;
            &lt;div&gt;
            Sonstiger Inhalt
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;/body&gt;
            &lt;/html&gt;

            Gruß Fal
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X