frage zu caminus templates tutorial

Bomber

Erfahrenes Mitglied
Hi
also ich möchte meine seite gemäss dem tutorial von caminus gerne mit templates gestalten.

so sieht meine templates page aus:
(in html)

muster.gif


Durch diesen quellcode soll jetzt die htm ausgelesen und zB der text getimage() in der html durch die ausgabe der function ersetzt werden.
leider kommt nur der text der auch schon in der html ist als ausgabe bei der php.

PHP:
<?php

if(isset($go)){ $go = "main"; }

// get the template
function gettemplate($template,$endung="htm")
         {
         return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
         }

function dooutput($template)
         {
         echo $template;
         }

// get the guestbook data

function getcontent()
         {
         echo 'Inhalt';
         }
function getimage($go)
         {
         echo '<img src=images/'.$go.'.gif>';
         }
function getrightbar()
         {
         echo 'menu';
         }

eval("dooutput(\"".gettemplate("template")."\");");

?>

was mache ich da falsch? kann man funtionen nciht einfach durch "hinschreiben" ausführen?

ich hoffe ihr koennt mir helfen.

mfg.bomber
 
Ganz am Anfang vom Tutorial von caminus steht, dass man mit Templates PHP- von HTML-Code trennt. Wenn du jetzt Funktionen in das HTML-Template schreibst, wäre das doch genau das Gegenteil von dem, was du willst, oder? ;)

Ich würde es so machen: Im Template statt getimage() $image, statt getrightbar() $rightbar und statt getcontent() $content schreiben.
In der PHP siehts dann so aus:
PHP:
[...]

$image = getimage();
$rightbar = getrightbar();
$content = getcontent();

eval("dooutput(\"".gettemplate("template")."\");");
So ist es nach caminus' Tutorial eigentlich auch gedacht :)


reima
 
Zuletzt bearbeitet:
erm wenn ich das so mache wie reima das geschreiben hat ($var = function(); ) dann stellt der den text den die function die ich in die variable gesteckt habe VOR den html aus dem template ausgegeben werden.

ist allerdings n normaler string in der varibale wirds schön im <div container ausgegeben.


warum das denn ? o_O
 
-

Schreib die Funktion so, dass sie einen Rückgabewert hat und der dann in die Variable kommt. Dann müsste das gehen. Ist zwar ein komischer Gebrauch, aber was solls.
PHP:
function getcontent()
         {
         $text = "bla";
         return $text;
         }
 
word!

funktioniert .. nen string in ne variable um ihn zu returnen und das returnte dann wieder in ne varibale zu paggen :D ich finds subba :D
 
Exakt. Das hab ich übersehen. Ich bin's halt irgendwie schon gewohnt, dass eine Funktion, die mit get anfängt, ein Ergebnis zurückgibt. Sorry, falls das für Verwirrung gesorgt hat ;)


reima
 
Zurück