php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2006, 18:07  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard if abfragen in Templates

Hi,

ich suche nach einer Metode if-Abfragen in Templates zu realisieren. Ich weiss das das bei Smarty möchlich ist, aber da es zu viel Aufwand währe alles auf Smarty umzustellen, möchte ich etwas selber schreiben.

Also meine Templates sind .html Datein. Um die Templates auszugeben nutze ich:

PHP-Code:
function gettemplate($template) {

    return 
str_replace("\"","\\\"",implode("",file(TEMPLATEDIR."/".$template.".html")));
 

und mit

PHP-Code:
eval ("\$index = \"".gettemplate("index")."\";"); 
gebe ich die templates aus. Jetzt würde ich gerne in den Templates (html) eine ifabfrage machen können. Also etwas wie:

<if $comments == "1">Ein kommentar<else>Kein kommentar</if>

Wie könnte ich das machen? hat da jemand eine idee?
rob1011 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.08.2006, 18:09  
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

Stells lieber auf Smarty um, ma ganz ehrlich. Das ist jetzt erstmal umständlich noch ne if-Abfrage einbauen, dann willste noch Schleifen, dann willste hier und da usw. Einfacher wäre es, wenn du jetzt früh genug erkennst, dass es bereits ein System gibt
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 02.08.2006, 18:10  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard

danke für deinen tipp, aber das werde ich leider nicht machen, ich werde mir natürlich angewöhnen Smarty in zukunft benutzen, aber jetzt ist das nicht drin, und ich brauche nur diese IF -Abfrage!
rob1011 ist offline  
Alt 02.08.2006, 20:06  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard

PHP-Code:
function gettemplate($template) {

    return 
preg_replace_callback('/<if (.*?) (.+?) (.*?)>(.*?)<else>(.*?)<\/if>/s'create_function('$match''return $match[1] $match[2] $match[3] $match[4] : $match[5];'), str_replace("\"","\\\"",implode("",file(TEMPLATEDIR."/".$template.".html"))));
 

so funktioniert es leider auch nicht, ist ja auch klar aber ich weiss nicht mehr weiter!
rob1011 ist offline  
Alt 02.08.2006, 20:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Machs wie Smarty: suchen&ersetzen.

Ersetz ein {if $bla} {endif} durch <?php if ($bla) { ?> <? } ?>.
Zergling-new ist offline  
Alt 02.08.2006, 21:35  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard

kannst du mir vielleicht sagen in welcher datei das in smarty drinnen steht, denn einfach ersetzen, ist zwar eine gute idee, aber dürfte nicht ohne Probleme funktionieren. Die IF-Abfrage steht ja in einer HTML-Datei drinnen....
rob1011 ist offline  
Alt 02.08.2006, 22:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
denn einfach ersetzen, ist zwar eine gute idee, aber dürfte nicht ohne Probleme funktionieren
Wird das jetzt wieder so eine zaghafte "ich bin mir nicht ganz sicher" Diskussion? Probier es aus oder argumentier mit logischen Argumenten warum das nicht funktionieren sollte.

Smarty ersetzt seine Syntax ganz einfach durch geeigneten PHP Code.
Aus tpl/error/404.tpl
PHP-Code:
{include file="head.tpl"}

<
h1>Fehler 404</h1>
Die 
angeforderte Seite {include file="highlight.tpl" text=$smarty.server.REQUEST_URIkonnte nicht gefunden werden.




Möglicherweise war die Eingabe nicht korrekt oder die Seite hat ihre Adresse geändert.

{include 
file="foot.tpl"
wird dann die Datei tplc/%%D8^D8A^D8A1CB6C%%404.tpl.php
PHP-Code:
<?php /* Smarty version 2.6.13, created on 2006-07-29 14:47:53
         compiled from error/404.tpl */ 
?>
<?php $_smarty_tpl_vars 
$this->_tpl_vars;
$this->_smarty_include(array('smarty_include_tpl_file' => "head.tpl"'smarty_include_vars' => array()));
$this->_tpl_vars $_smarty_tpl_vars;
unset(
$_smarty_tpl_vars);
 
?>

<h1>Fehler 404</h1>
Die angeforderte Seite <?php $_smarty_tpl_vars $this->_tpl_vars;
$this->_smarty_include(array('smarty_include_tpl_file' => "highlight.tpl"'smarty_include_vars' => array('text' => $_SERVER['REQUEST_URI'])));
$this->_tpl_vars $_smarty_tpl_vars;
unset(
$_smarty_tpl_vars);
 
?> konnte nicht gefunden werden.




Möglicherweise war die Eingabe nicht korrekt oder die Seite hat ihre Adresse geändert.

<?php $_smarty_tpl_vars $this->_tpl_vars;
$this->_smarty_include(array('smarty_include_tpl_file' => "foot.tpl"'smarty_include_vars' => array()));
$this->_tpl_vars $_smarty_tpl_vars;
unset(
$_smarty_tpl_vars);
 
?>
Hier ist jetzt kein Beispiel mit if, aber du siehst, dass PHP-Code verwendet wird.

Smarty hat also das Template nicht im Cache behalten und ausgegeben, sondern in eine Datei geschrieben. Somit spricht nichts gegen ein Suchen&Einsetzen von PHP-Code.

Ohne dir zu nahe treten zu wollen - ich glaube dein Kenntnis-Stand reicht nicht aus um eine halbwegs leistungsfähige Template-Engine zu schreiben.
Deshalb fang es garnicht erst an - lern lieber die Smarty Syntax und zieh dein Projekt gleich damit hoch.
Du stehst sonst irgendwann vor der (wirklichen) Qual der Wahl:
- ein unausgereiftes Template-System durch Smarty ersetzen zu müssen
- dein Template-System weiterzuentwickeln, zu Kosten (Zeit, Blut) die es nicht wert sind
- dein Projekt weiterhin mit einem unbefriedigenden Template-System laufen zu lassen und dich früher oder später auf faule Kompromisse einzulassen (bestimmte Teile dann doch nicht über Templates abzuwickeln)
Zergling-new ist offline  
Alt 02.08.2006, 22:12  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard

also mit einem str_replace ist es nicht möglich, ganz klares dingen. Du siehst ja wie ich es mache, steht ja in meinem ersten post. Ich wollte eigendlich nur wissen in welcher php datei smarty die Ersetzung durchführt.

Ich möchte aber bei diesem Projekt noch auf smarty verzichten, da es zu viel aufwand ist alles umzustellen.

Daher jetzt meine Frage kann man mir hier helfen? oder nicht, wenn nicht ist auch nicht schlimm....

Also danke schonmal für die Antwort!
rob1011 ist offline  
Alt 03.08.2006, 00:19  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von rob1011
also mit einem str_replace ist es nicht möglich, ganz klares dingen.
Normalerweise ist das klar.

Zitat:
Du siehst ja wie ich es mache, steht ja in meinem ersten post.
Stimmt, das sieht man. Es ist zwar falsch, aber man sieht es.

Mal unter uns:
wenn Du mir der Scriptsprache PHP nicht klarkommst, wieso versuchst Du dann eine neue "Templatesprache" zu erfinden? Ja klar, smarty macht den Unfug auch, aber muß man deshalb alles, besonders jeden Scheiß, nachmachen?
 
Alt 03.08.2006, 01:57  
Neuer Benutzer
 
Registriert seit: 16.07.2006
Beiträge: 21
rob1011
Standard

hä? wer sagt denn das? ich kann php, aber ich habe mich nicht nie wirklich mit smarty beschäftigt und das will ich erst machen wenn ich wieder einen klaren kopf habe! Und zu deinem post das es falsch ist.... naja kann man nur zu sagen schnapp dir lieber mal dein php buch, denn es funktioniert ohne probleme. Nur das mit der ifabfrage will einfach nicht funktionieren! Aber das Template system ansich funktioniert einwandfrei!
rob1011 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
templates und Co Elta PHP Tipps 2008 6 14.07.2008 15:13
PDO und parallele Abfragen Normalo PHP Tipps 2008 1 09.06.2008 12:39
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02
mehrere Abfragen (Selects) verbinden???? CIMM Datenbanken 15 03.05.2006 18:59
Vererbung bei Templates Pain-maker PHP-Fortgeschrittene 9 28.03.2006 10:05
[Erledigt] 204 077 15-4 in DB mit WHERE als 204077154 abfragen Datenbanken 6 24.01.2006 11:47
E-Mail Templates Mano PHP Tipps 2005-2 4 09.10.2005 14:52
[Erledigt] Templates PHP Tipps 2005 4 06.04.2005 16:24
Templates GrU3nL!nG PHP Tipps 2005 6 26.03.2005 14:47
Mit Templates Navigation erstellen? (welches Templatesyste?) zwelch PHP Tipps 2004-2 5 18.11.2004 15:14
[Erledigt] Wieder mal Templates! PHP-Fortgeschrittene 1 10.09.2004 11:42
Problem bei HP basierend auf Templates PHP Tipps 2004 3 17.07.2004 12:37
Templates PHP Tipps 2004 5 29.06.2004 16:30
Problem mit Templates suter PHP Tipps 2004 3 23.06.2004 14:40
Wie benutze ich Templates? PHP Tipps 2004 5 11.06.2004 13:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php template if, php if template, html if abfrage einbauen, http://www.php.de/php-tipps-2006/41493-if-abfragen-templates.html, php templates if, template if php, template system if abfrage, php template if abfrage, html in if abfrage einbauen, if template php, phpbb3 if abfrage im template, smarty url abfragen, template php if, php if in template, php template engine if, phpbb if abfragen im template, if bedingungen php template, smarty php str_replace, php template einlesen if, templating php if

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