IF-Bedingung mittels Template

groovebird

Grünschnabel
Hi...

ich habe mir ne kleine Templateklasse geschrieben, aber hab noch keinen guten Ansatz, wie ich es in der klasse löse, das mir je nach bedingung bereiche eines templates angezeigt oder nicht angezeigt werden. im html-template müsste stehen

<--! BEGIN IF --> bla bla bla <!-- END IF -->
 
Hallo,
wenn du einen If-Tag in dieser Art hast :
<!-- BEGIN IF $test == 2 -->
<font color=blue>Hallo</font>
<!-- END IF -->

würde ich es so machen, dass man <!-- BEGIN IF $test == 2 --> so ersetzt, dass dieser String entsteht <?php if ( $test == 2 ) { ?>
<!-- END IF --> wird folglich durch <?php } ?> ersetzt.
Deinen Templatestring kannst du nun durch aufrufen der funktion eval() ausgeben. So wird auch der enstandene PHP-Code verarbeitet.

mfg Jens
 
hi jens...

hättest du mal ein beispiel noch dazu? ich habe jetzt solche blöcke
<!-- BEGIN IF $name -->
<!-- END IF $name -->

was hat denn der vergleich noch zu bedeuten?

ich habe zwar schon ne möglichkeit, doch mein problem ist jetzt, das ich die kommentare aus dem quelltext wieder rauslöschen will, da sie immer mit drinstehen, falls die bedingung nicht zutrifft
 
Zuletzt bearbeitet:
drvj hat das Beispiel eigentlich schon genannt.
Dennoch vertrete ich die Ansicht, dass man Layout und Programmlogik voneinander trennen sollte.

snuu
 
ja ich bin ja auch der meinung programmierung und layout zu trennen. aber das is ja in dem obigen beispeil nicht so der fall.

gibts denn da nich noch ne bessere lösung?

meine funktion sieht zur zeit so aus:

function parse_if_template($name, $status=true){
if ($status)
$this -> content = preg_replace("/<!-- BEGIN IF $name -->(.*?)<!-- END IF $name -->/s","",$this -> content);
else $this -> content = preg_replace("/<!-- BEGIN IF $name -->(.*?)<!-- END IF $name -->/s", "$1", $this -> content);
return $this -> content;
}

aber das is zu umständlich auch beim einbinden in mein script, und wohl auch nicht die eleganteste lösung
 
Zurück