romy: ITX + SIGMA + Templates richtig benutzen

Hi,

ich suche nun schon geraume Zeit, werde aber nicht wirklich fündig.
Ich hätte gern ein Template-System, welches mir ermöglicht, wieder ein Template zu includieren.

Habe erst bei ITX, addBlockFile ausprobiert und dann <!-- include --> mit Sigma, aber beide lassen mich nur html-Dateien einfügen, ich möchte aber wieder eine php-Datei einfügen, welche nun ihrerseits bestimmte Variablen setzt und html_files läd.

Habe ich nur einen Denkfehler oder können das die beiden nicht und ich muss doch etwas anderes probieren. Bei Letzterem wären ein paar Tipps über das wie und wo nicht schlecht.

ich danke Euch

ciao
romy

  1. Hallo romy!

    Habe ich nur einen Denkfehler oder können das die beiden nicht und ich muss doch etwas anderes probieren. Bei Letzterem wären ein paar Tipps über das wie und wo nicht schlecht.

    Ich würde dir mal vorschlagen, daß du dir Smarty mal anschaust (http://smarty.php.net).
    Das sollte eigentlich auch entsprechend anpaßbar sein.

    Oder du schreibst Dir ein eigenes Template-System ;)

    MfG
    Götz

    --
    Losung und Lehrtext für Donnerstag, 18. September 2003
    Weh dem, der mit seinem Schöpfer hadert, eine Scherbe unter irdenen Scherben! Spricht denn der Ton zu seinem Töpfer: Was machst du? (Jesaja 45,9)
    Gott lässt sich nicht von Menschenhänden dienen wie einer, der etwas nötig hätte, da er doch selber jedermann Leben und Odem und alles gibt. (Apostelgeschichte 17,25)
    (http://www.losungen.de/heute.php3)
  2. Hi!

    ich suche nun schon geraume Zeit, werde aber nicht wirklich fündig.
    Ich hätte gern ein Template-System, welches mir ermöglicht, wieder ein Template zu includieren.

    Du suchst Smarty (http://smarty.php.net/) ;-)
    Ist ganz nett weil es wirklich mächtig ist, und dabei noch die Templates in PHP "kompiliert", es erstellt also aus den PHP-Scripten und Templates entsprechend PHP-Dateien die dann nach einmaligem erstellen ganz normal ausgeführt werden(ohne den Template-Overhead...), man kann sogar fertige HTML-Files generieren lassen...

    Habe erst bei ITX, addBlockFile ausprobiert und dann <!-- include --> mit Sigma, aber beide lassen mich nur html-Dateien einfügen, ich möchte aber wieder eine php-Datei einfügen, welche nun ihrerseits bestimmte Variablen setzt und html_files läd.

    Ich bin jetzt nicht so 100%ig sicher was genau Du vorhast, aber in Smarty kannst Du in die Templates weitere Templates einbinden, denen Variablen übergeben, Du kannst PHP-Dateien einbinden... ich verwende das nur noch für HTML und mails.

    Habe ich nur einen Denkfehler oder können das die beiden nicht und ich muss doch etwas anderes probieren. Bei Letzterem wären ein paar Tipps über das wie und wo nicht schlecht.

    Damit kann ich leider nicht dienen, aber mit Links zu Smarty :)

    Speziell zu Deinem Problem:
    Templates in Templates einbinden: http://smarty.php.net/manual/de/language.function.include.php
    PHP in Templates einbinden: http://smarty.php.net/manual/de/language.function.include.php.php
    KOnfiguration laden: http://smarty.php.net/manual/de/language.function.config.load.php

    Naja, smarty bietet wirklich viele Möglichkeiten.
    Manual: http://smarty.php.net/manual/de/

    Noch ein paar interessante Links:
    http://smarty.php.net/crashcourse.php
    http://smarty.php.net/whyuse.php
    http://smarty.incutio.com/
    http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions
    http://smarty.php.net/resources.php?category=0

    So allgemein hört sich Dein Problem aber so an, als könnte man das vielleicht eleganter lösen, aber dazu kenne ich es nicht genug. Wieso willst Du in einem Template ein PHP-Script mit einem weiteren Template laden?

    Viele Grüße
    Andreas

    1. Hallo Andreas Korthaus!

      Da kann ich nur sagen:
      Zwei Dumme, ein Gedanke ;)

      (auch wenn Dein Posting viel ausführlicher ist, ich habe halt nicht jede Smarty-Unterseite extra verlinkt ;)

      MfG
      Götz

      --
      Losung und Lehrtext für Donnerstag, 18. September 2003
      Weh dem, der mit seinem Schöpfer hadert, eine Scherbe unter irdenen Scherben! Spricht denn der Ton zu seinem Töpfer: Was machst du? (Jesaja 45,9)
      Gott lässt sich nicht von Menschenhänden dienen wie einer, der etwas nötig hätte, da er doch selber jedermann Leben und Odem und alles gibt. (Apostelgeschichte 17,25)
      (http://www.losungen.de/heute.php3)
      1. Hi Götz!

        Da kann ich nur sagen:
        Zwei Dumme, ein Gedanke ;)

        Ja, und auch diese wichtige Feststellung wollte ich eigentlich posten ;-)

        (auch wenn Dein Posting viel ausführlicher ist, ich habe halt nicht jede Smarty-Unterseite extra verlinkt ;)

        nobody is perfect :)

        Grüße
        Andreas

    2. Hi Andreas,

      So allgemein hört sich Dein Problem aber so an, als könnte man das vielleicht eleganter lösen, aber dazu kenne ich es nicht genug. Wieso willst Du in einem Template ein PHP-Script mit einem weiteren Template laden?

      danke erstmal für den Tip mit Smarty, ich schau gleich mal rein.
      Aber zur Erklärung:

      nehmen wir mal an, ich habe eine main.pph, welche eine Tabelle enthält und jede Zelle eigentlich eine content-Datei läd (bzw. Navi usw. )
      diese content-Dateien sind wieder php-Dateien, welche verschiedenen Code ausführen und eine HTML-Ausgabe gestalten.

      Setze ich jetzt das Template-System um habe ich eine main.htm und eine main.php
      in der main.htm sind jetzt die Bereiche für die Includes mit einem Variablennamen gekennzeichnet und in der main.php bekommen sie einen Wert zugewiesen. Jetzt müssten diese Bereiche aber wieder php-Dateien laden, welche eine Ausgabe in HTML erzeugen, also ihrerseits wieder ein Template aufrufen.

      Verstehst Du was ich meine?

      ciao
      romy

      1. Hi Romy!

        danke erstmal für den Tip mit Smarty, ich schau gleich mal rein.

        Ich bitte darum ;-)
        Es lohnt sich!

        nehmen wir mal an, ich habe eine main.pph, welche eine Tabelle enthält und jede Zelle eigentlich eine content-Datei läd (bzw. Navi usw. )
        diese content-Dateien sind wieder php-Dateien, welche verschiedenen Code ausführen und eine HTML-Ausgabe gestalten.

        Also ich habe ein ähnliches Problem gehabt, aber ich wollte gerade nicht immer verschiedenen PHP-Code, da Navigation, Header, Footer zumindest bei mir immer genau denselben HTML-Code haben(sollen).
        Ich habe eigtnlcih pro Seite immer 1 Template, welches dann selber header.tpl, footer.tpl. und navi.tpl läd:

        meinscript.php:
        include 'smarty.class.php';
        $tpl = new Smarty;
        $tpl->assign('test', 'hallo!');
        tpl->display('meinscript.tpl');

        meinescript.tpl:
        {include file="header.tpl"}
        <!-- mein HTML-Code -->
        <table>
        <tr>
        <td>
        Dem Template wurde folgender Wert übergeben: {$test}
        </td>
        ...
        {include file="navi.tpl"}
        ...
        </td>
        </tr>
        </table>
        {include file="footer.tpl"}

        header.tpl:
        <html>
        <head>
        ...
        <body>
        ...

        footer.tpl
        </body>
        </html>

        navi.tpl:
        <p>link1</p>
        <p>link2</p>

        Nur mal so rein prinzipiell. Eine weitere Variante wäre noch, dass man eine Template-Datei erstellt, die nur alle Dateien einbindet, zumindest header, footer und body, und dann übergibt man diesem Template den Dateinamen des Body-Templates und die normalen Variablen, dann braucht man nicht in jedem Template {include header.tpl}...

        Also so:

        meinscript.php:
        include 'smarty.class.php';
        $tpl = new Smarty;
        $tpl->assign('test', 'hallo!');
        $tpl->assign('body', 'meinscript.tpl');
        tpl->display('basic.tpl');

        basic.tpl:
        {include file="header.tpl"}
        {include file=$body}
        {include file="footer.tpl"}

        meinescript.tpl:
        <!-- mein HTML-Code -->
        <table>
        <tr>
        <td>
        Dem Template wurde folgender Wert übergeben: {$test}
        </td>
        ...
        {include file="navi.tpl"}
        ...
        </td>
        </tr>
        </table>

        header.tpl:
        <html>
        <head>
        ...
        <body>
        ...

        footer.tpl
        </body>
        </html>

        Bedenke dass Variablen die Du mit $tpl->assign an das Template übergibst allen eingebundenen Dateioen ebenfalls zur Verfügung stehen. Natürlich kannst Du so auch mehrere Dateien "dynamisch" einbinden, wenn gleich ich mich immer fragen würde ob das sein muss.

        Das kannst Du auch auf Dein Problem anpassen, Indem Du z.B. sowas machst:

        basic.tpl:
        {include file="header.tpl"}
        <table>
        <tr><td>{include file=$oben}</td></tr>
        <tr><td>{include file=$unten}</td></tr>
        </table>
        {include file="footer.tpl"}

        usw...

        Setze ich jetzt das Template-System um habe ich eine main.htm und eine main.php
        in der main.htm sind jetzt die Bereiche für die Includes mit einem Variablennamen gekennzeichnet und in der main.php bekommen sie einen Wert zugewiesen. Jetzt müssten diese Bereiche aber wieder php-Dateien laden, welche eine Ausgabe in HTML erzeugen, also ihrerseits wieder ein Template aufrufen.

        Wenn das denn unbedingt so sein muss, würde ich evtl. mal drüber nachdenken ob es nicht besser mit includes() in PHP funktioniert, die php-scripte einbinden die dann wiederum Templates laden. Wobei ich das nicht so sauber fände. Smarty bieten unglaublich viele Möglichkeiten, bis hin zu eigenen Plugins, ich würd emdal damit ein wenig testen, vielleicht kommst Du ja damit zu einer guten Lösung.

        Verstehst Du was ich meine?

        Ich hoffe schon :)

        Viele Grüße
        Andreas

        1. Hi Andreas,

          auf den ersten Blick beim Doku durchlesen, bin ich ehrlich gesagt etwas enttäuscht. Man schreibt ja doch recht viel wieder in den HTML-Code, wahrscheinlich liegt es an einem selbst, ide Sache so strukturiert wie möglich zu machen.

          Ich habe allerdings Probleme mit der Installation, da ich es privat nur mit Wampp testen kann. Bei der Installation habe ich nicht gefunden, wo es in einem Windowssystem hingehört. Ich habe es zwar per absoluten Pfad ohne Fehlermeldung laden können, aber beim Einbinden eines Templates kommt ein Fehler in der smarty.class

          <code>
          <?php

          define("SMARTY_DIR","C:\wampp2\php\Smarty\libs\");
          require(SMARTY_DIR."Smarty.class.php");

          $tpl = new Smarty;
          $tpl->display("template/main.tpl");

          ?>
          </code>

          ausserdem müsste ich auch den Ganzen Pfad zur main.tpl angeben.
          Ich kenne mich mit dem Includepfad in der php.ini nicht so gut aus, aber der verweist meiner meinung nach schon auf PEAR, was macht man da?

          ciao
          romy

          1. Hi Andreas,

            äh, das gibt es ja schon im PEAR-Paket, habe ich gerade bemerkt.
            Also einbinden klappt, aber wo legt man die tpl-Dateien ab und wie sagt man dem Script, wo es suchen soll.

            $tpl->display("template/main.tpl"); klappt nicht, obwohl die Datei sich dort befindet.

            Muss ich die eigentlich so nennen, oder darf die Datei auch ne andere Endung haben?

            Könnte dieser Fehler
            Warning: Smarty error: unable to read template resource: "template/main.tpl" in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042

            auch bedeuten, dass in der main.tpl ein Fehler ist?

            danke ...

            ciao
            romy

            1. Hi ,

              $tpl->display("template/main.tpl"); klappt nicht, obwohl die Datei sich dort befindet.

              das habe ich jetzt gefunden, templates muss der Ordner heissen, bzw. es gibt eine Variable mit der ich einen alternativen namen bestimmen kann.

              Muss ich die eigentlich so nennen, oder darf die Datei auch ne andere Endung haben?

              die main.tpl wird jetzt auch aufgerufen, aber die Includes scheitern
              <td>{include_php file="content/navi2.php"}</td>
              <td>{include_php file=$default}</td>
              <td>{include_php file="content/subcontent.php"}</td>

              $default war ein versuch und setzt sich aus der php_self und dem contentpfad zusammen.

              Der Fehler lautet:
              Warning: Smarty error: 'file: /smarty_temp/main.php/content/default.php' is not readable in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042

              Warning: _smarty_include_php() [function.include]: Failed opening '' for inclusion (include_path='\wampp2\php\pear') in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1820

              kannst Du mir helfen?

              ciao
              romy

              1. Hi ,

                Der Fehler lautet:
                Warning: Smarty error: 'file: /smarty_temp/main.php/content/default.php' is not readable in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042

                ist ja logisch, es soll ja auch  /smarty_temp/content/default.php' heissen, aber der Fehler bleibt der Gleiche.

                ciao
                romy

                1. Hi!

                  Der Fehler lautet:
                  Warning: Smarty error: 'file: /smarty_temp/main.php/content/default.php' is not readable in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042
                  ist ja logisch, es soll ja auch  /smarty_temp/content/default.php' heissen, aber der Fehler bleibt der Gleiche.

                  PHP sucht im Dateisystem nach dem Pfad: "/smarty_temp/main.php/content/default.php", und den gibt es in einem Windows-System mit Sicherheit nicht. Das muss ein Pfad mit C:... sein.   Es geht hier nicht um HTTP-Pfade. Die Templates werden aus dem lokalen Dateisystem geladen, daher sollten sie auch nicht innerhalb des per HTTP erreichbaren Bereich liegen.

                  Grüße
                  Andreas

              2. Hallo!

                Muss ich die eigentlich so nennen, oder darf die Datei auch ne andere Endung haben?

                die main.tpl wird jetzt auch aufgerufen, aber die Includes scheitern
                <td>{include_php file="content/navi2.php"}</td>
                <td>{include_php file=$default}</td>
                <td>{include_php file="content/subcontent.php"}</td>

                $default war ein versuch und setzt sich aus der php_self und dem contentpfad zusammen.

                was genau gibt "echo $default;" aus?

                Der Fehler lautet:
                Warning: Smarty error: 'file: /smarty_temp/main.php/content/default.php' is not readable in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042

                Warning: _smarty_include_php() [function.include]: Failed opening '' for inclusion (include_path='\wampp2\php\pear') in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1820

                Also da stimmt was mit Deinen Pfaden nicht. Gucke Dir mal in phpinfo() den include-path an, und verwende mal manuell die absoluten Pfade, also "C:/wampp2...."

                Grüße
                Andreas

            2. Hi Romy!

              äh, das gibt es ja schon im PEAR-Paket, habe ich gerade bemerkt.

              Ja? AFAIK hat das nichts mit PEAR zu tun?!

              Also einbinden klappt, aber wo legt man die tpl-Dateien ab und wie sagt man dem Script, wo es suchen soll.

              Das ist Deine Sache. Ich würde hier keinen Pfad angeben, sondern nur den Dateinamen, udn den Pfad vorher allgemein konfigurieren, da gibt es 2 Möglichkeiten:

              $tpl->display("template/main.tpl"); klappt nicht, obwohl die Datei sich dort befindet.

              Im Manual stehen dazu ja Beispiele:

              // Smarty laden
              require('Smarty.class.php');

              $smarty = new Smarty;

              $smarty->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
              $smarty->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
              $smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
              $smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';

              $smarty->assign('name','Ned');

              $smarty->display('index.tpl');

              So würde ich das auch machen. config_dir und cache_dir brauchst Du nicht wirklich, es sei denn Du arbeitest viel mit samrty Konfiguratiuonsdateien oder lässt die PHP Scripte als HTML cachen.

              Das template_dir ist das Verzeichnsi wo die Templates liegen, compile_dir ist das Verzeichnis wo Smarty die "kompilierten" Scritpe speichert, das geht aber voll automatisch, musst nur sagen wo das gespeichert werden soll.

              Das ganze kannst Du auch vereinfachen indem Du Dir eien eigene Klasse erstelst die die Smarty-Klasse erweitert, dann kannst Du immer Deien eigene Klasse einbinden, die die Konfiguration automatisch durchführt, siehe: http://smarty.php.net/manual/de/installing.smarty.extended.php

              Die Einstellungen die Du so vornehmen kannst sind folgende: http://smarty.php.net/manual/de/api.variables.php

              Muss ich die eigentlich so nennen, oder darf die Datei auch ne andere Endung haben?

              Klar, nenn die so wie Du willst.

              Könnte dieser Fehler
              Warning: Smarty error: unable to read template resource: "template/main.tpl" in C:\wampp2\php\pear\Smarty\libs\Smarty.class.php on line 1042

              auch bedeuten, dass in der main.tpl ein Fehler ist?

              Das bedeutet dass er das Template nicht lessen kann. Bei Windows wird das heißen dass da was am Pfad nicht stimmt. Zur Not gib mal testweise den kompletten Pfad an.

              Und versuche es mal mit

              require_once ("C:\wampp2\php\pear\Smarty\libs\Smarty.class.php");
              $tpl = new Smarty;
              $tpl->debugging = TRUE;
              $tpl->template_dir = "C:\wampp2\htdocs\templates";
              $tpl->display("main.tpl");

              $tpl->template_dir musst Du ggfs. anpassen, bedenke dass man templates nicht öffentlich über den Webserver zugänglich aufbewahren sollte, sondern außerhalb des doc-root.

              Evtl. musst Du noch das compile_dir definieren, also lege z.B. ein Verzeichnis

              C:\wampp2\includes\templates_c

              an, dann musst Du obiges Script noch wie folgt anpassen:

              require_once ("C:\wampp2\php\pear\Smarty\libs\Smarty.class.php");
              $tpl = new Smarty;
              $tpl->debugging = TRUE;
              $tpl->template_dir = "C:\wampp2\htdocs\templates";
              $tpl->compile_dir = "C:\wampp2\includes\templates_c";
              $tpl->display("main.tpl");

              Wenn Du das dann mit dr 2. Variante machst, siehe link, dann sieht das etwas so aus:

              setup.php
              // Smarty Library Dateien laden
              require('Smarty.class.php');

              class Smarty_GuestBook extends Smarty {
                  function Smarty_GuestBook() {

              // Konstruktor. Diese Werte werden für jede Instanz automatisch gesetzt
                      $this->Smarty();
                      $this->debugging = TRUE;
                      $this->template_dir = "C:\wampp2\htdocs\templates";
                      $this->compile_dir = "C:\wampp2\includes\templates_c";
                  }
              }

              main.php:
              require('setup.php');
              $tpl = new Smarty_GuestBook;
              $tpl->assign('name','Ned');
              $tpl->display('main.tpl');

              So in etwa. Ist am Anfang alles etwas verwirrend, aber wie gesagt, wenn man sich dran gewöhnt hat ist es wirklich hilfreich.

              Viele Grüße
              Andreas

          2. Hallo Romy!

            auf den ersten Blick beim Doku durchlesen, bin ich ehrlich gesagt etwas enttäuscht. Man schreibt ja doch recht viel wieder in den HTML-Code, wahrscheinlich liegt es an einem selbst, ide Sache so strukturiert wie möglich zu machen.

            Die Verwendung von Templates ist nur ein Mittel Design und Code zu trennen, wie effektiv man dieses Mittel einsetzt ist Sache des Programmieres.
            Seh es mal anders herum, smaty ist derart mächtig das unter normalern Umständen keien Workarounds mit PHP-Code notwendig sind. Nur wiurd dei Syntax von Smarty dadurch nicht einfacher. Aber wenn man sich mal dran gewöhnt hat funktioniert das gut. Woran genau störst Du Dich?

            Ich habe allerdings Probleme mit der Installation, da ich es privat nur mit Wampp testen kann. Bei der Installation habe ich nicht gefunden, wo es in einem Windowssystem hingehört.

            Am einfachsten in den Include-Path der php.ini.

            ausserdem müsste ich auch den Ganzen Pfad zur main.tpl angeben.

            nicht unbedingt.

            Ich kenne mich mit dem Includepfad in der php.ini nicht so gut aus, aber der verweist meiner meinung nach schon auf PEAR, was macht man da?

            Kannst Du ja ändern, Auszug aus der php.ini-dist:

            ;;;;;;;;;;;;;;;;;;;;;;;;;
            ; Paths and Directories ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;
            ;
            ; Windows: "\path1;\path2"
            ;include_path = ".;c:\php\includes"

            Das heißt Du trennst die Einträge mit ";", Du könntest entweder Smarty in c:\php\includes ablegen, oder folgendes in die php.ini schreiben:

            include_path = ".;c:\wampp2\php\includes;c:\wampp2\php\Smarty\libs"

            (ich hoffe das dann PEAR noch funktioniert ;-)) Der Pfad muss halt entsprechend stimmen. Vielleicht würde ich Smarty auch in c:\wampp2\php\includes legen, dann brauchst Du den letzten Eintrag nicht, vielleicht sogar gar keinen, wenn PEAR auch so läuft und Du Smarty ins selbe Verzeichnis legst.

            Grüße
            Andreas

            1. Hi Andreas,

              Woran genau störst Du Dich?

              zB. das man die Schleifen wieder im HTML-Code macht, oder geht dies auch anders. Soweit ich gesehen habe, arbeitet man im HTML-Code die Schleife für generierte Tabellen zB. ab.
              Bei ITX bzw. Sigma schreibt man den Datensatz nur einmal und inm PHP-Code ist dann die Schleife.

              Eigentlich ist, dass jetzt das einzige was mir auffällt, wahrscheinlich war der erste Eindruck nur so negativ, weil die Erklärungen immer viel Code im HTML-Code hatten.

              Nur laufen müsste es noch ;)

              vielen vielen Dank, ich wüsste gerade nicht, was ich ohne Dich machen sollte.

              ciao
              romy

              1. Hi!

                Woran genau störst Du Dich?
                zB. das man die Schleifen wieder im HTML-Code macht, oder geht dies auch anders. Soweit ich gesehen habe, arbeitet man im HTML-Code die Schleife für generierte Tabellen zB. ab.

                Ja, das ist etwas blöd, aber auch sehr einfach da es so mehr Kontrolle bietet. Für bestimmte Dinge gibt es auch nette Automatismen, z.B. zum Generieren von Formularen gibt es ne Menge netter Funktionen die das ganze sehr schön automatisieren.

                Bei ITX bzw. Sigma schreibt man den Datensatz nur einmal und inm PHP-Code ist dann die Schleife.

                wie sieht das denn dann da im Template aus?

                vielen vielen Dank, ich wüsste gerade nicht, was ich ohne Dich machen sollte.

                Ach was, ich stand am Anfang selber ziemlich dumm da, hat auch etwas gedauert bis dan denn mal lief, aber heute will ich nicht mehr ohne ;-)

                Aber bevor Du das groß irgendwo einbaust empfehle ich Dir mal die ganzen Links die ich da oben irgendwo gepostet habe anzugucken, da sind unter anderem einige Artikel wie man Smarty vernünftig einsetzt, so mit Praxisbeispielen, z.B., in Zusammenhang mit PEAR_DB.

                Grüße
                Andreas

                PS: das include_php gefällt mir nicht ;-)

                1. Hi Andreas,

                  Bei ITX bzw. Sigma schreibt man den Datensatz nur einmal und inm PHP-Code ist dann die Schleife.
                  wie sieht das denn dann da im Template aus?

                  zB.
                  <!-- BEGIN block1 -->
                  <tr>
                  <td>{var1}</td>
                  <td>{var2}</td>
                  <td>{var3}</td>
                  </tr>
                  <!-- END block1 -->

                  jetzt kann ich in einer Schleife durch datensätze gehen und die <tr> generieren. Ich muss dazu nur den Block angeben
                  Zugegeben ist das ja auch Zusatzcode

                  Aber bevor Du das groß irgendwo einbaust empfehle ich Dir mal die ganzen Links die ich da oben irgendwo gepostet habe anzugucken, da sind unter anderem einige Artikel wie man Smarty vernünftig einsetzt, so mit Praxisbeispielen, z.B., in Zusammenhang mit PEAR_DB.

                  Auf jeden Fall, ich versuche mir gerade ein Beispiel aufzubauen, damit ich dann anpassen kann.

                  Aber ich scheitere.
                  Nehme ich absolute Pfade, sei es der Webpfad oder der Systempfad, steigt smarty aus und gibt mir einen Fehler in der smarty.class.php.
                  Lasse ich die Pfade relativ findet er sie nicht?
                  Das mit dem default, war auch nur ein Versuch:

                  file="content/navi2.php" >> kann er nicht includieren, weil die Datei angeblich nicht da ist >> no such File or directory

                  file="smarty_temp/content/navi2.php" >> kann nicht gelesen werden >> not readable

                  file="http://localhost/smarty_temp/content/navi2.php"
                  file="C:\wampp2\htdocs\sparty_temp\content\navi2.php"
                  Smarty steigt aus.

                  ciao
                  romy

                  1. Hi ,

                    das kleine Wörtchen file: hatte gefehlt bei den absoluten Pfaden

                    danke erstmal, jetzt geht es weiter

                    ciao
                    romy

                  2. Hi!

                    <!-- BEGIN block1 -->
                    <tr>
                    <td>{var1}</td>
                    <td>{var2}</td>
                    <td>{var3}</td>
                    </tr>
                    <!-- END block1 -->

                    jetzt kann ich in einer Schleife durch datensätze gehen und die <tr> generieren. Ich muss dazu nur den Block angeben
                    Zugegeben ist das ja auch Zusatzcode

                    gut, das ist schon einfacher, wobei, kannst Du da auch Inhalte definieren für den Fall das der Array leer ist, also keine Daten vorhanden sind ("keine Daten vorhanden...")? Smarty kann das und noch viel mehr.

                    Auf jeden Fall, ich versuche mir gerade ein Beispiel aufzubauen, damit ich dann anpassen kann.

                    Aber ich scheitere.

                    hm :-(

                    Nehme ich absolute Pfade, sei es der Webpfad oder der Systempfad, steigt smarty aus und gibt mir einen Fehler in der smarty.class.php.

                    webpfad ist eigentlich grundsätzlich falsch, kann sein dass es über http-funktioniert, nur über HTTP bekommst Du nicht den PHP-Quelltext, sondern dieselbe Ausgabe wie Dein Browser.

                    Lasse ich die Pfade relativ findet er sie nicht?
                    Das mit dem default, war auch nur ein Versuch:

                    file="content/navi2.php" >> kann er nicht includieren, weil die Datei angeblich nicht da ist >> no such File or directory

                    file="smarty_temp/content/navi2.php" >> kann nicht gelesen werden >> not readable

                    wo liegt denn das PHP-Script welches Du hier ausführst?

                    file="http://localhost/smarty_temp/content/navi2.php"

                    das verges mal schnell wieder :-)

                    file="C:\wampp2\htdocs\sparty_temp\content\navi2.php"
                    Smarty steigt aus.

                    Ich muss gestehen, mit include_php habe ich noch nie gearbeitet, vor allem da ich es unsauber finde. Poste mal bitte den Quellcode aller beteiligten Dateien. Vielleicht funktioniert es ja mit

                    file="C:/wampp2/htdocs/sparty_temp/content/navi2.php"

                    Versuche doch mal ein Template per {include file=...} einzubinden. funkitoniert das? Hast Du mal $tpl->debugging=TRUE; versucht?

                    Was genau heißt "Steigt aus"? Versuche es mit möglichst einfachen Dateien, navi2.php erstmal nur sowas:

                    <?php
                    echo "[NAVIGATION]";
                    ?>

                    Hast Du was in der error_log des Apachen? Evtl. stelle das error-reporting auf

                    <?php
                    error_reporting (E_ALL);
                    ...

                    Und probiere genau festzustellen wo das Problem liegt, also teste genau die Stelle wo es in Deinem Script hängt(nach jeder Funktion irgendwas ausgeben).

                    Vielleicht liegt es am compile_dir, hast Du das korrekt definiert? Kannst Du auch auslesen, mach mal

                    echo $tpl->compile_dir;
                    echo "<br>";
                    echo $tpl->template_dir;

                    usw...

                    Grüße
                    Andreas