Platzhalter in Templates

ratmanthebat

Grünschnabel
Hi PHP-Pros!

Ich bin zwar ein PHP-Neuling, dennoch versuche ich auf meiner Seite ein Templatesystem zu integrieren. Ich habe dazu in dem Tutorialsabschnitt auch ein entsprechendes Tutorial gefunden und es auch zum laufen gebracht, zumindest in der einfachsten Form. Um mein aktuelles Problem besser zu verdeutlichen schaut euch mal den Code an.

Die Seite kann hier betrachtet werden.

index.php
PHP:
<?
/* Definition der wichtigsten Pfade */
define('DIRROOT',dirname(__FILE__).'/');	   //root-directory
define('DIRTEMP',DIRROOT.'templates/');		//Templates-directory
define('DIRIMG',DIRROOT.'images/');		   //Images-directory
//Includen der wichtigsten Dateien
include('function.php');
//Inhalt der Startseite wird geprüft und geladen
if (isset($content)) {
	$content = $content;
} else {
	$content = "home";
}
//Variablen werden festgelegt
$title = "Test";
//Das Inhaltstemplate wird geladen
$inhalt = gettemplate("$content");
$cont_bio = gettemplate("bio_text");
//jetzt der Aufruf, wo das Template geholt wird und die Platzhalter ersetzt werden.
eval("dooutput(\"".gettemplate("main")."\");");	
?>

function.php
PHP:
<?
function gettemplate($template,$endung="htm")
{
return str_replace("\"","\\\"",implode("",file(DIRTEMP."/".$template.".".$endung)));
}
function dooutput($template) {
echo $template;
}
?>

main.htm
HTML:
<table width="50%" border="1" height="365" align="center">
  <tr>
    <td valign="top"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="550" height="400">
        <param name="movie" value="testnavi.swf">
        <param name="quality" value="high">
        <embed src="testnavi.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed></object></td>
  </tr>
  <tr>
    <td valign="top">$inhalt</td>
  </tr>
  <tr>
    <td valign="top">hier kommt noch was rein</td>
  </tr>
</table>

biography.htm
HTML:
<table>
<tr>
<td bgcolor="#0033FF" width="10" height="10">$cont_bio</td>
</tr>
</table>

Die Navigation der Seite erfolgt aus einer .swf Datei.
Nun zum meinem Problem. Wie man sehen kann, werden die Platzhalter an den richtigen Stellen durch die entsprechenden Templates ersetzt. Das heisst beinahe. In der "biography.htm" befindet sich der Platzhalter "$cont_bio", welcher statt durch das Template "bio_text" ersetzt zu werden unverändert als "$cont_bio" ausgegeben wird. Es scheint so als ob er gar nicht interpretiert werden würde. Kann mir jemand von euch evtl. mit Rat zu Seite stehen, wie ich dieses Problem lösen könnte.
 
Vielleicht solltest du die PHP Variable $cont_bio auch als ein Teil von PHP behandeln. (<? ?>)
In einer html Datei werden keine PHP Variablen geparst.
 
Das ist schon klar, aber in der Datei "main.htm" hab ich ja auch den Platzhalter "$inhalt" und der wird ja auch richtig geparst. Mit "eval" wird ja die "main.htm" geladen und intepretiert den "$inhalt"-Platzhalter richtig und läd das entsprechende Template. Das Probleben ist ja, dass in diesen Templates sich wiederrum Platzhalter befinden, die eben nicht intepretiert werden. Genau dies ist mein Problem.
 
Zurück