Peter: einfaches Templatesystem

Hallo!

Ich bin gerade dabei meine Webseite auf Templates umzustellen. Das Template sieht so aus:

  
 <!-- ... -->  
 <body>  
  <div id="head">%headline%</div>  
  <div id="content">%content%</div>  
  <div id="footer">%footer%</div>  
 <!-- ... -->  

Leider habe ich schon seit längerem nichts mit PHP zu tun gehabt, und stehe daher auf der Leitung, wie ich das File am besten einlesen, die Platzhalter ersetzen und ausgeben kann... (ausgeben sicher mit echo, print etc. *gg*)

Ich würde mich über eine Antwort freuen.

cu
 Peter

  1. Hallo Peter.

    wie ich das File am besten einlesen,

    file_get_contents()

    die Platzhalter ersetzen

    str_replace()

    Einen schönen Mittwoch noch.

    Gruß, Ashura

    --
    Last Tears Keep Calling
    See Angels Falling
    Black Shadows In Your Head
    And One Eye For The Dead
    1. Hallo!

      Danke. Eine kurze Frage noch: wie gehe ich dann am besten vor, wenn der Inhalt für den Platzhalter %content% in einem .txt File gespeichert ist?

      Bisher sieht mein Script so aus:

        
      $handle = file_get_contents("../html/template.html", "r");  
        
      if(!isset($_GET['id']))  
      {  
       $pageid = "0";  
      }  
      else  
      {  
       $pageid = $_GET['id'];  
      }  
        
      $_search = array(  
       '%title%',  
       '%subnav%',  
       '%blog%',  
       '%otherthings%',  
       '%content%'  
      );  
        
      if($pageid == "0")  
      {  
        $_replace = array(  
         'Lorem ipsum dolor',  
         'subnav test',  
         'blog test',  
         'anderer test',  
         '...'  
        );  
      }  
        
      //...etc. für id=01, id=02, id=03...  
        
      echo str_replace($_search, $_replace, $handle);  
      
      

      Was müsste ich anstelle der ... im $_replace array schreiben? 'include(...)' ja wohl nicht...

      P.S. Wie findet ihr sonst meine "Lösung"?

      cu
       Peter

      1. Hallo Peter.

        Danke. Eine kurze Frage noch: wie gehe ich dann am besten vor, wenn der Inhalt für den Platzhalter %content% in einem .txt File gespeichert ist?

        In welcher Form?

        Bisher sieht mein Script so aus:

        $handle = file_get_contents("../html/template.html", "r");

          
        Verwechselst du nicht gerade file\_get\_contents() mit [fopen()](http://de2.php.net/manual/en/function.fopen.php)?  
        Anders kann ich mir den zweiten Parameter in deinem Script nicht erklären.  
          
        
        > ~~~php
        
        if(!isset($_GET['id']))  
        
        > {  
        >  $pageid = "0";  
        > }  
        > else  
        > {  
        >  $pageid = $_GET['id'];  
        > }
        
        

        Du solltest $_GET['id'] besser ausführlicher testen, um heraus zu finden, ob darin wirklich nur von dir erwünschte Werte enthalten sind.

        $_search = array(

        '%title%',
        '%subnav%',
        '%blog%',
        '%otherthings%',
        '%content%'
        );

        if($pageid == "0")
        {
          $_replace = array(
           'Lorem ipsum dolor',
           'subnav test',
           'blog test',
           'anderer test',
           '...'
          );
        }

        
        >   
        > //...etc. für id=01, id=02, id=03...  
          
        Hier würde sich unter Umständen ein assoziatives Array anbieten.  
        Also:  
          
        ~~~php
        $_replace = array (  
           '0' => array ('Foo 0', 'subnav foo 0', 'blog foo 0', '…');  
          '01' => array ('Foo 1', 'subnav foo 1', 'blog foo 1', '…');  
          '02' => array ('Foo 2', 'subnav foo 2', 'blog foo 2', '…');  
          /* … */  
        );
        

        Dieses wird dann eben entsprechend angesprochen. ($_replace[$_GET['id']])

        Was müsste ich anstelle der ... im $_replace array schreiben? 'include(...)' ja wohl nicht...

        Dazu solltest du erst das Datenformat für die TXT-Datei nennen.

        Einen schönen Mittwoch noch.

        Gruß, Ashura

        --
        Last Tears Keep Calling
        See Angels Falling
        Black Shadows In Your Head
        And One Eye For The Dead
        1. Hallo!

          Verwechselst du nicht gerade file_get_contents() mit fopen()?

          Hoppala. Dort war zuerst ein fopen... hab den Parameter zu löschen vergessen.

          Du solltest $_GET['id'] besser ausführlicher testen, um heraus zu finden, ob darin wirklich nur von dir erwünschte Werte enthalten sind.

          Hmmm... du meinst, z.b. wenn ich z.b. id's von 1-10 habe, aber die id 11 eingegeben wird, dass es dann nicht zu Fehlern kommt. (Das müsste sich doch machen lassen *gg*)

          Hier würde sich unter Umständen ein assoziatives Array anbieten.

          Danke. Daran hatte ich noch gar nicht gedacht, weil ich sowas eigentlich noch nie verwendet habe.

          Dazu solltest du erst das Datenformat für die TXT-Datei nennen.

          Das ist normaler Plain-Text, allerdings mit HTML-Tags.

          cu
           Peter

          1. Hallo Peter.

            Hmmm... du meinst, z.b. wenn ich z.b. id's von 1-10 habe, aber die id 11 eingegeben wird, dass es dann nicht zu Fehlern kommt. (Das müsste sich doch machen lassen *gg*)

            Zum Beispiel. Du solltest nur die Werte zulassen, die du erwartest.
            Alles andere sollte zu einer Standardreaktion führen. (Entspräche dem else-Zweig einer Abfrage.)

            Dazu solltest du erst das Datenformat für die TXT-Datei nennen.
            Das ist normaler Plain-Text, allerdings mit HTML-Tags.

            Recht ungewöhnlich. Üblich sind CSV ([Wikipedia: CSV-Datei]) oder auch XML.

            Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.
            Den Array für $_replace kannst du ggf. mittels explode() erschaffen.

            Einen schönen Mittwoch noch.

            Gruß, Ashura

            --
            Last Tears Keep Calling
            See Angels Falling
            Black Shadows In Your Head
            And One Eye For The Dead
            1. Hallo!

              Recht ungewöhnlich. Üblich sind CSV ([Wikipedia: CSV-Datei]) oder auch XML.

              Hmm... mit CSV bzw. XML hatte ich noch nichts zu tun. (Bei CSV frage ich mich z.b. wie man dort z.b. Absätze kennzeichnen würde bzw. hervorgehobene Elemente...)

              Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.

              verstehe ich jetzt nicht ganz...

              cu
               Peter

              1. Hallo!

                Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.

                verstehe ich jetzt nicht ganz...

                Hmm... ich hab mich vielleicht da etwas dumm ausgedrückt... - Aber ich weiß nicht, wie ich eine Datei in eine Variable "schreiben" kann, damit ich diese anschließend in das $_replace - Array reingeben kann, um dann die %content% - Platzhalter zu ersetzen

                cu
                 Peter

                1. Hallo!

                  Ich habs schon selbst gelöst...

                  Danke nochmals für eure (deine) hilfe!

                  cu
                   Peter