php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.08.2006, 10:38  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard Erstellen eines Template Systems

Moin,

ich möchte mir ein kleines Template System basteln.

Nachdem ich mir eine kleine Klasse gebastelt habe, sehe ich, dass ich wohl einen Denkfehler habe.

1) output = file_get_contents('template.htm')

In der Template.htm stehen Platzhalter wie: {content}

Nun habe ich mir gedacht, dass ich über
Code:
str_replace folgendes ersetze
{ wird durch  <?php include ' ersetzt
} wird durch .php'; ?> ersetzt
Wenn ich nun die Variable output über echo ausgebe, steht im Quelltext richtigerweise <html>....<include 'content.php';>... aber er included die Dateien halt nicht.

Das Problem wird sein, dass output ein String ist. Wenn ich nun Echo ausgebe, dann interpretiert er die includes nur als text.

Wisst ihr wie ich das sonst machen könnte?

Vielen Dank

Gruss
Unknown
Unknown ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.08.2006, 10:51  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

CSS und JavaScript kannst du dann aber vergessen, zumindest direkt in der Template Datei.

Benutz doch lieber Smarty - ich hab keine Lust alle Nas lang jemandem bei seinen Bemühungen zu helfen, ein 08/15 Template System zu erstellen, grad noch wenn die kniffligen Sachen dann vom Forum gelöst werden sollen..

Außerdem ist es Quatsch, Template Variablen durch include's zu ersetzen. Du brauchst dann pro Variable eine Datei, noch dazu im selben Ordner - viel Spass.

Vielleicht hilft dir dieser Mini-Ansatz ja:
PHP-Code:
<?php
require_once sprintf('%s/../functions/file_get_contents.php'dirname(__FILE__)); 


class 
Template
{
    var 
$variables = array();
    
    
/**
     * constructor PHP 4.x, insert program logic into __construct()
     */
    
function Template()
    {
        
$this->__construct();
    }
    
    
/**
     * constructor PHP 5.x
     */
    
function __construct()
    {
    }
    
    function 
assign($key$value)
    {
        
$this->variables[$key] = $value;
    }
    
    function 
display($content)
    {
        
// etwas unsauber, aber statt einem Pfad kann man auch einen Template-String übergeben
        
if (file_exists($content))
            
$content file_get_contents($content);
        
        
$content str_replace(
            
array_map(create_function('$string''return ("{\$".$string."}");'), array_keys($this->variables)),
            
array_values($this->variables),
            
$content);
        
        if (
preg_match_all('#\{\$([a-z0-9]+)\}#Uis'$content$match)) {
            echo 
'Template error, missing assignment for ';
            echo 
'<pre>'print_r($matchtrue), '</pre>';
            exit();
        }
        
        echo 
$content;
    }
}
?>
Anwendung:
PHP-Code:
<?php
$tpl 
= new Template();
$tpl->assign('foo''bar');
$tpl->display('tpl/index.tpl');
?>
Ersetzt {$foo} in der tpl/index.tpl durch 'bar' und gibt das Template aus.
Benutze ich für 1-bis-5-Seiten-Mini-Projekte, wenn Smarty einfach überdimensioniert ist.

Geb dir auch mal diesen Fred:
http://www.phpfriend.de/forum/ftopic59235.html
Zergling-new ist offline  
Alt 03.08.2006, 16:58  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Auch wenn man nicht Smarty verwenden will, gibt es Template-Systeme wie Sand am Meer, die mehr oder weniger umfangreich den mehr oder weniger umfangreichen Bedürfnissen Genüge tun sollten.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eckige Klammern in Template nutshell PHP Tipps 2006 9 05.06.2006 19:12
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
darf keine Datenbank erstellen in phpMyAdmin Datenbanken 2 20.10.2005 19:32
Template verständniss problem; referenz PHP Tipps 2005 17 19.05.2005 06:06
Stammbaum erstellen Riot PHP Tipps 2005 17 13.05.2005 16:32
Template: Verschachteln von foreach PHP Tipps 2005 2 12.05.2005 15:37
Ordner erstellen und Datei uploaden Juuro PHP Tipps 2005 6 20.01.2005 21:18
Probleme beim neuen Template erstellen PHP Tipps 2005 4 07.01.2005 19:56
Php Code als Variable definieren und in Template darstellen PHP Tipps 2004-2 4 31.12.2004 16:22
Template erstellen? PHP Tipps 2004-2 10 08.12.2004 09:41
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
elektr. Fragebögen erstellen Beitragsarchiv 4 27.10.2004 12:57
[Erledigt] Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19
[Erledigt] Template Scripting PHP-Fortgeschrittene 2 04.06.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
template system erstellen mit php

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.