Geeignete Template Engine

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

  • Geeignete Template Engine

    Ich bin im Moment auf der Suche nach einer kleinen Template Engine (recht viel mehr als Variablen parsen und Schleifen muss sie im Prinzip nicht können).

    Es wurden ja einige schon hier im Forum gepostet - auch die vielgelobte Smarty hab ich mir mal angeschaut, die is für meine Zwecke aber ein bisschen zu umfangreich.

    Könnt ihr mir was empfehlen?

  • #2
    Könnt ihr mir was empfehlen?
    selber schreiben?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Wollte schon anfangen, da hab ich doch noch eine gefunden.

      Da ich in objektorientierter Programmierung nicht fit bin (werd ich mir in nächster Zeit mal aneignen) hab ich auf php-resource in den Tutorials gestöbert und gleich eine simple für meine Zwecke genügende Template gefunden :-)

      Wenn ich des mit den Klassen mal durchschaut hab werd ich vielleicht noch ne if - Funktion einbauen. Mal schaun.

      Kommentar


      • #4
        Ich versteh immer nicht, wieso man mit solch komplizierten Template Engines arbeitet...
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          Wenn ich des mit den Klassen mal durchschaut hab werd ich vielleicht noch ne if - Funktion einbauen. Mal schaun.
          OffTopic:
          if u.a. gehören meiner meinung nach nicht in die template-engine ...just my 2 cents
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Ob der if-Befehl jetzt dazugehört oder nicht, seis drum. Da ich mich jetzt auch einigermaßen mit Klassen auskenn hab ich mir eindlich mein eigenes Template-System geschrieben (mit if ).

            Findet ihr auf Anhieb grobe Kritikpunkte?

            PHP-Code:
            class template

            {

                var 
            $starttag '<!-- ';

                var 
            $endtag   ' -->';

                var 
            $text;

                var 
            $block;

                var 
            $block_vorlage;

                var 
            $block_ersetzt;


                function 
            einlesen($template)

                {

                    
            $this->text file_get_contents($template);

                }


                function 
            zuweisen($var$wert)

                {

                    
            $var $this->starttag.$var.$this->endtag;

                    
            $this->text str_replace($var$wert$this->text);

                }


                function 
            block_einlesen($name)

                {

                    
            preg_match("/(<!--BEGIN $name -->)(.*)(<!--END $name -->)/s"$this->text$match);

                    
            $match[0] = preg_replace("/(<!--BEGIN $name -->)|(<!--END $name -->)/s"""$match[0]);

                    
            $this->block_vorlage[$name] = trim($match[0])."\n";

                 }


                function 
            block_var_zuweisen($name$var$wert)

                {

                    
            $var $this->starttag.$var.$this->endtag;

                    if(isset(
            $this->block_ersetzt[$name])) {

                        
            $this->block_ersetzt[$name] = str_replace($var$wert$this->block_ersetzt[$name]);

                    } else { 

                        
            $this->block_ersetzt[$name] = str_replace($var$wert$this->block_vorlage[$name]);

                    }

                }


                function 
            block_vars_sichern($name)

                {

                    
            $this->block[$name] .= $this->block_ersetzt[$name];

                    unset(
            $this->block_ersetzt[$name]);

                }


                function 
            block_einfuegen($name)

                {

                    
            $this->text preg_replace("/(<!--BEGIN $name -->)(.*)(<!--END $name -->)/s"$this->block[$name], $this->text);

                }


                function 
            if_zuweisen($name$wert)

                {

                    if(
            $wert == true) {

                        
            $this->text str_replace("<!--if= $name -->"''$this->text);

                        
            $this->text str_replace("<!--/if= $name -->"''$this->text);

                    } else {

                        
            $this->text preg_replace("/(<!--if= $name -->)(.*)(<!--\/if= $name -->)/s"''$this->text);

                    }

                }


                function 
            ausgeben()

                {
                    echo 
            $this->text;

                }




            PHP-Code:
            include('class_template.php');

            $t = new template;

            $t->einlesen('template.tpl');



            $t->zuweisen('ein''eine');

            $t->zuweisen('Text''Seite');



            $t->block_einlesen('bla');

            while(
            $i<5) {

                
            $t->block_var_zuweisen('bla''gruss''Hallo');

                
            $t->block_var_zuweisen('bla''name''Donald!');

                
            $t->block_vars_sichern('bla');

                
            $i++;

            }

            $t->block_einfuegen('bla');


            $t->if_zuweisen('blubb'true);


            $t->ausgeben(); 

            Code:
            <html><body>
            <h1>Überschrift</h1><hr />
            
            <p>Dies ist <b><!-- ein --></b><b><!-- Text --></b>.</p>
            
            <!--BEGIN bla -->
            <!-- gruss --> <!-- name --><br />
            <!--END bla -->
            
            <!--if= blubb --><p>So, dass wars.</p><!--/if= blubb -->
            
            </body></html>

            Kommentar


            • #7
              habs nur mal überflogen ..
              bringts denn was wenn ich starttag / endtag verändere ?
              was ich gesehn hab hast du die hardgecoded :P
              mfg,
              [color=#0080c0]Coragon[/color]

              Kommentar


              • #8
                Ich weiß zwar net was hardgecoded bedeutet, aber man soll selbst bestimmen können, wie seine Templates aussehen sollen.

                Kommentar


                • #9
                  ich rede von diesen ..

                  var $starttag = '<!-- ';
                  var $endtag = ' -->';

                  und dem hier:

                  preg_match("/(<!--BEGIN $name --> )(.*)(<!--END $name --> )/s", $this->text, $match);

                  warum machst du das variabel wenn du dann doch wieder nur <!-- und --> akzeptierst .. ?

                  ps: hab grad gesehen dass das für die variablen gilt ..
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar

                  Lädt...
                  X