php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.04.2005, 08:47  
Gast
 
Beiträge: n/a
Standard Template System mit IF

Habe mal selber ein TemplateSystem gecodet (Smarty, etc. viel zu umfangreich...) und ich hänge zur Zeit an einem Problem.

Wie kann ich sowas realisieren?


TemplateDatei:
Code:
<if name='display'>
    You typed {tmpl_var name='input'}.	
<else> 
    <form action="index.php" method="post">
        <input name="input">
        <input type="submit">
    </form>
</if>
(Ihr dürft auch nen anderen Vorschlag machen, wenn es anders einfacher gehen sollte)

Es soll nun also überprüft werden ob 'display' übergeben wurde - wenn ja, dann ersten Template Teil ausgeben, wenn nein, dann den zweiten.

Könnt ihr mir erklären wie sowas geht?
Vielleicht habt ihr ja auch schon mal sowas programmiert und könntet mir den Teil zur VErfügung stellen?
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.04.2005, 19:21  
Gast
 
Beiträge: n/a
Standard

hey...
ich würde einen algorithmus mit folgender vorgehensweise verwenden, ausgehend davon, dass du das Template als String in einer Variablen zur Verfügung hast.

- in dem String nach einem eintrag <if %> suchen
- wenn vorhanden, ermitteln was zwischen <if %> und </if> steht
- ermitteln ob ein else bereich im if-bereich existiert, wenn ja diesen auch noch abspeichern
- die if-bedingung ermitteln - also zweischen <if und > - und prüfen
- abghängig von der bedingung, den entsprechenden block mit dem gesamtkonstrukt im template esetzen
- das ganze in einer while schleife, um sicherzustellen dass auch mehrere if's in einem template bearbeitet werden

ggf. könnte man das ganze noch mit einem elseif erweitern .... wenn du fragen dazu hast, kannste dich ja gern nochmal melden. bzw. wenn du den code fertig hast, kannst ihn hier ja mal posten - würde mich zumindest mal interessieren...

sei gegrüßt

andy
 
Alt 14.04.2005, 19:24  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Meiner Meinung nach haben if-Anweisungen im Template nichts zu suchen!
Corvin ist offline  
Alt 14.04.2005, 19:53  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

da würde ich Corvin zustimmen. sowas würde ich im Code lösen, nicht im Template.

mfg
robo47
robo47 ist offline  
Alt 14.04.2005, 20:23  
Gast
 
Beiträge: n/a
Standard ...

Zitat:
Zitat von Corvin Gröning
Meiner Meinung nach haben if-Anweisungen im Template nichts zu suchen!
klar stimm ich dir absolut zu ... es ist auch sinnnvoll sich an die logische trennung von programm und layout zu halten - jedoch sparen solche lösungen einem in der praxis manchmal einiges an zeit

gruß
andy
 
Alt 15.04.2005, 13:47  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
jedoch sparen solche lösungen einem in der praxis manchmal einiges an zeit
... tragen aber zur Unübersichtlichkeit des Codes und zu Performanceverlust bei.
Corvin ist offline  
Alt 15.04.2005, 18:20  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Das ist ja ein krasser Ansatz. Ich bin gerade dabei, eine Agentur in die Verwendung von Smarty einzuführen bzw. eben in die "Gestaltung" von Templates. Das Problem ist, dass einfach eine Umgebung fehlt, die in den Templates vorkommenden Variablen entsprechend so zu setzen, dass die unterschiedlichen Möglichkeiten auch getestet werden können.

Eine Lösung wäre natürlich, wirklich jeden Block in eine eigene Datei zu setzen und so vielleicht mit Dateinamen-Konventionen dem Template-Designer eine begrenzte Auswahl der einzubindenen Dateien anzubieten.

Allerdings frag ich mich, erstens, wie den Designern eine noch größere Zerschnipselung der Templates schmackhaft gemacht wrden kann und zweitens, wie ihr so Schleifen abarbeitet.

Und zum Thema selbst:
Die schnellsten Template-Engines übersetzen die Templates in PHP-Code und binden den dann einfach ein. Dein Job wäre bei der Strategie, den Template-Code zu prüfen und in PHP zu übersetzen. Must halt vor allem mit den Namensräumen aufpassen.

Basti
Basti ist offline  
Alt 15.04.2005, 18:42  
Gast
 
Beiträge: n/a
Standard

Ich nutze das:
http://sourceforge.net/projects/php-templates/

http://test.php-help.info/php-template-2/ (Quelltext wird angezeigt)
 
Alt 16.04.2005, 00:27  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

ich hab ne eigene klasse in der du auch if benutzen kannst... auch schleifen funktionieren mehr hab ich bis jetzt noch nicht gebraucht! wenn du die klasse haben willst kannst du dich ja melden per pn
Flor1an ist offline  
Alt 16.04.2005, 14:49  
Gast
 
Beiträge: n/a
Standard

Hi

Kannst du mir mal zeigen wie du die Schleife gemacht hast?

Ich habe das if zeug per replacen hinbekommen.

Hier mal wie es im Template aussieht.

Code:
<if($userdata['userid']!=0)>
<then>Hallo $userdata[username]</then>
<else>Hallo Gast</else>
</if>
Und hier mal der php Code dazu.

PHP-Code:
<?php
    
private function parse($code) {
        global 
$imagefolder,$css,$pagetitle,$sitetitle;

// addslashes        
        
$code addcslashes($code'"\\');

// replace single if -> if/else
        
$code preg_replace('!</then>(\s*)</if>!i''</then><else></else>\\1</if>'$code);

// replace if tag
        
$code preg_replace('!<if\((.*)\)>!sieU''"\".((".$this->convertSlashes(\'\\1\').") "'$code);

// replace end if tag
        
$code preg_replace('!</if>!i'')."'$code);

// replace then tag
        
$code preg_replace('!<then>!i''? ("'$code);

// replace end then tag
        
$code preg_replace('!</then>!i''") '$code);

// replace else tag
        
$code preg_replace('!<else>!i'': ("'$code);

// replace end else tag
        
$code preg_replace('!</else>!i''")'$code);

//replace imagefolder variable
        
$code str_replace("{imagefolder}","$imagefolder",$code);

//replace title variable
        
$code str_replace("{title}","$pagetitle".' | '."$sitetitle",$code);

        return 
$code;
    }
?>
Nun will ich noch Schleifen drin haben was ich leider nicht hinbekommen habe.

Und ebenso hätt ich gerne das ich nur z.b. es so machen muss im Template.

Code:
<if($userdata['userid']!=0)>
Hallo $userdata[username]
<else>
Hallo Gast
</if>
Also das ganze ohne <then></then> und ohne </else>.

Ich weiß ich könnte Smarty nehmen das hat aber viele Funktionen die unnötig sind und ich nicht benötige.

Danke für die Hilfe.[/code]
 
 


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
Ausgabe im Template System nicht an vorgsehener Stelle Kein Genie PHP-Fortgeschrittene 7 21.04.2008 23:06
template system cycap PHP Tipps 2007 7 27.02.2007 08:59
template system jens76 PHP Tipps 2007 2 17.12.2005 21:58
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
Eigenes Template System PHP Tipps 2005-2 31 07.08.2005 01:24
Template System oder Lösung gesucht PHP Tipps 2005 14 21.05.2005 22:07
Vorschläge für eigenes template system! PHP Tipps 2005 2 14.03.2005 13:44
Template System tutorial PHP Tipps 2005 3 09.02.2005 19:49
Php Code als Variable definieren und in Template darstellen PHP Tipps 2004-2 4 31.12.2004 16:22
Welches Template System? zwelch PHP Tipps 2004-2 1 18.11.2004 09:04
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
[Erledigt] Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
Smarty als Template System?! PHP Tipps 2004 16 22.07.2004 11:22
Smarty Template System: If Anweisung? PHP Tipps 2004 2 18.07.2004 19:31
[Erledigt] Template Scripting PHP-Fortgeschrittene 2 04.06.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace if then else, eigenes template system if anweisung, eigenes templatesystem schleifen, template engine schleifen, php eigenes template system schleife, php if anweisung template parsen, php if anweisung parsen template, eigenes template system mit schleifen, php preg replace template system tutorial, template system mit if, template if bedingung, eigenes template system if else, php if template, eigenes template system mit if anweisungen, template system php tutorial, template eigene {if}{/if}, template system php if, php template system if, php if else im template verwenden, zend framework template system

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:47 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.