kostenloser Webspace werbefrei: lima-city


Hilfe bei Templatesystem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    n********r

    Hi,

    ich w?rde gerne f?r meine Forumsoftware ein Templatesystem programmieren.
    Doch habe ich leider nicht so wirklich eine Idee wie ich es aufbauen soll, bzw. wie es aussehen soll?
    Kann mir einer von euch vielleicht ein Tipp geben?
    Oder kennt einer von euch ein gutes Tutorial?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hmmm wie das Design ausehen soll???
    Du kannst jetzt da verschieden Richtungen machen
    wie zum Beispiel ein Forum im Schwarzen Stil, das hei?t Sternen Hintergrund usw. Da gibt es einnfach verschieden erichtungen.
  4. Autor dieses Themas

    n********r

    Ich gaube du hast mich nicht richtig verstanden.
    Ich brauche ein System, denn dem Admin des Forums soll die M?glichkeit geboten werden neue Styles hochzuladen.
    Daher ist ein System notwendig
  5. Im Prinzip funktioniert es so, dass du ein Grundger?st in einer Template-Datei hast und dann Schl?sselbegriffe durch Inhalt ersetzen l?sst.
    Hier ein ganz gutes Tut dazu.

    http://gfx-world.net/index.php?page=tutorials/view_tut&id=335&setpos=tutorials
  6. Ein Flat-Template-System in PHP k?nnte in etwa so gehen:

    $temp_vars = array(
    'var_name1' => $ersetzen_durch_das,
    ...
    );

    $in = file_get_contents($template_file);

    $out = preg_replace('/\{(\w+?)\}/e', '$temp_vars["$1"]', $in);

    print($out);

    Ein passendes Template ($template_file) k?nnte dazu so aussehen:

    <html>
    <head>
    <title>{ueberschrift}</title>
    </head>
    <body>
    <div>
    <h1>{ueberschrift}</h1>
    <p>{fliesstext}</p>
    </div>
    </body>
    </html>

    Und das passende Array dazu:

    $temp_vars = array(
    'ueberschrift' => 'Hallo, und guten Abend!',
    'fliesstext' => file_get_contents($fliesstext_1.txt)
    );

    Kompliziertere Template-Engines siehe mein Post in deinem anderen Thread zum Thema CMS (ich finde ihn gerade nicht ...).

  7. Meine Template-Klasse ist vor kurzem fertig geworden. Basiert auf das Tutorial, welche ich oben schon gepostet hatte. (TheDragonMatser macht auch einfach geniale Codes. Ich habe irgenwie schon ein bisschen seinen Stil angenommen.^^' )

    Bei dieser Klasse kann man halt ein Template Laden und ?berliefern, was durch welche Werte ersetzt werden soll. Dabei ist der Key des Arrays das Suchwort und der Wert, das, womit es ersetzt wird. Au?erdem sind halt If-Abfragen m?glich, mit denen man zum Beispiel ?berpr?fen kann, ob der User schon eingeloggt ist oder nicht. Je nachdem wird halt entschieden, ob z.B. ein Formular oder ein Privates Men? ausgegeben werden soll. Bitte kopiere die Klasse nicht einfach. Ich m?chte irgendwie auch nicht, dass meine Codes alle einfach so im Internet verstreut sind. -_-

    <?php
      class TPLParser{
          //Deklaration der Variablen
        var $template;  // Variable zum Speichern des Templates
        var $vars = array(); //Der Key wird spaeter mit Value ersetzt
          
          //Konstruktor
        function TPLParser($vars = array(), $file, $path = 'templates'){
            //Variablen abspeichern
          $this->vars = $vars;
            
            //Laden des Templates
          $this->load($path.'/'.$file.'.tpl');
    
           
            //Parsen des Templates
          $this->parse();       
        }
          
          //Funktion zum Laden des Template-Files
        function load($file){
            //Falls die Datei existiert, wird sie Zeilenweise in ein Array gelesen 
          if(file_exists($file)) {
            $this->template = @implode('', @file($file));
          } 
          else {
            //Andernfalls wird ein Fehler ausgegeben
            print "Die Datei $file.tpl existiert nicht!";
            exit;
          }                 
        }
          
          //Funktion zum Parsen des Templates
        function parse(){
            //Variablen fuer das Parsen initialisieren
          $search  = array(); 
          $replace = array(); 
            
            //Uebergebene Variablen in die Masken einlesen
          foreach($this->vars as $key => $value) { 
            $search[]  = '{'.$key.'}'; 
            $replace[] = $value; 
          }
            //Ersetzen der Schluesselwoerter und gleichzeitiges abspeichern der Templates
          $this->template = str_replace($search, $replace, $this->template); 
            
            //Loeschen der alten Suchmuster
          unset($search);
          unset($replace);
            
            //Suchmuster fuer If-Bedingungen und Kommentare
          $search  = array(
                       //Muster fuer If-Bedingungen wie z.B.:
                       //<if condition="{condition}"><then>dies</then><else>das</else></if> 
                     '`<if\s*condition=(["\'])(.*?)\\1>\s*<then>(.*?)</then>\s*<else>(.*?)</else>\s*</if>`ies',
                       //Muster fuer Kommentare wie
                       // <!-- Kommentar --> 
                     '`<\!\-\-(.*?)\-\->`s'
          );      
          $replace = array( 
                       //Macht aus der Bedingung folgendes
                       //$condition ? $true : $false;
                     '$this->doIf(\\2, "\\3", "\\4")',
                       //Loescht die Kommentare 
                     ''
          ); 
    
          $this->template = preg_replace($search, $replace, $this->template);   
        }
        
        function doIf($condition, $true, $false) { 
          return $condition ? $true : $false; 
        }     
      }
    ?>
  8. Autor dieses Themas

    n********r

    Danke Aloplex, mit deinem Code werde ich es wohl hin bekommen.
    Aber was bedeute beim pre_replace dieser COde: '/\{(\w+?)\}/e'

    danke
  9. http://www.php.net/manual/de/reference.pcre.pattern.syntax.php
    Das Teil sucht grob gesagt W?rter zwischen geschweiften Klammern... -_-

    Edit:
    @Unter mir
    Ja! -.-

    Beitrag ge?ndert am 11.05.2006 07:05 von i-spacke
  10. Autor dieses Themas

    n********r

    Und er setzt dann $temp_vars["$1"] ein, wenn er eine geschweife klammer gefunden hat?
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!