Fehler beim Templatesystem mit eval();

indylein

Grünschnabel
Hallo ihr :)

Also ich code gerade ein Newsscript und möchte dafür ein Templatesystem verwenden.
Da ist mir das Tutorial http://www.tutorials.de/forum/showthread.php?threadid=12907 ganz recht
gekommen :]

Ich habe also die erste Variante nachgebaut und versucht, anstatt in der Variable
$inhalt einen Text zu übergeben, etwas zu includen, sodass zum Schluss die
var. $inhalt bei mir so aussieht:

$inhalt = include("code.php");

Das hat auch funktioniert allerdings habe ich nun folgendes Problem:
Den Code, den ich mit der Variable $inhalt includet habe, erscheint nicht da,
wo ich im Template $inhalt hingesetzt habe, sondern direkt am Anfang von der Seite.
Danach kommt der ganze andere Kram, der direkt im Template drin ist.
Und dort, wo normalerweise die var. $inhalt ist, ist einfach eine 1.

Danach habe ich es mit Variante zwei im Tutorial probiert, dies hat allerdings auch nicht geklappt und der includete Befehl war wieder am Anfang der Seite.

Also entschloss ich mich bei Variante eins zu bleiben, weil der Code einfacher ist ;)

Kann mir irgendjemand sagen wie man den Inhalt der Variable (das include) an die richtige Position bringen kann?

Ich bin total am verzweifeln und ich hoffe, mir kann jemand helfen!


Link zum Problem: Klick mich

Der Code ist zum Verständnis der Frage denke ich wichtig, also hab ich diesen auch mal angehängt....:

layout.html
Code:
  <html>
  <head>
  <title>$title</title>
  </head>
  
  <body bgcolor="#FFFFFF" text="#000000">
  <b>Dieser Text ist direkt im Template drinne</b><br><br>
  $inhalt
  </body>
  </html>

code.php
Code:
  <?php
  
  echo "dies hier ist ein text aus der Datei code.php der per echo ausgegeben wird";
  
  ?>

index.php
Code:
  <?php
  
  function gettemplate($template,$endung="html")
  {
  return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
  }
  function dooutput($template) {
  echo $template;
  }
  
  $inhalt = include("code.php");
  
  eval("dooutput(\"".gettemplate("layout")."\");");
  
  ?>
 
$inhalt = include(...) ? Wusste gar nicht das Include was zurückliefert.... Include bindet eigentlich nur die Datei bzw, deren Inhalt / Code in die akutelle ein.

Und die Ausgabe sollte ja dieses eval machen...

Aber wenn du zukünftig mit Templates (unabhängig von diesem Projekt) mit Templatesystemen arbeiten willst, würde ich ein richtiges Templatesyetem nehmen, da dieses Tut meines Erachtens mehr dazu dient einen groben Einblick in eine Funtkion eines Templatesystems zu geben.
Ich persönlich verwende Smarty aber es existiert hier irgendwo auch ne Liste mit anderen Templatesystemen, als auch teilweise Threads zu den einzlenen Templatesystemen...
 
Das ganze hat nur das Problem, dass ich mein Script irgendwann zum Download
anbieten will. Da bräucht ich doch sicher noch ne extra Lizenz für Smarty, wenn
ich das machen will... oder?
 
Nö nicht das ich wüsste, zur Not einfach mal nachlesen ;)
Dann solltest du der Sauberkeit halber aber nur die Dateien von Smarty nehmen die dein Script auch wirklich bruacht, da es sonst etwas hässlich aussieht ;)
 
Zurück