PHP Template Engine News

Hallo liebe Community,

ich bastel gerade an einer Engine rum für meine News und komme einfach nicht weiter.

Ich habe eine Funktion geschrieben die so aussieht:
PHP:
    function assign($wort, $value = '') 
    { 
    if(is_array($wort))
        foreach($wort as $key => $val) 
            $this->assign($key, $val);
    else 
        //$this->tpl[$wort] = $value;
        $this->tpl = str_replace($wort, $value, $this->tpl);
damit kann ich dann über $tpl->assign('{PAGETITEL}', 'jetzt soll es mal gehen'); angesprechen.

Beispiel:
ich habe in der .tpl Datei {PAGETITEL} stehen und dort wird dann 'jetzt soll es mal gehen' für ersetzt. Also ok.
Klappt auch!

Nun mein Problem, ich würde gerne die statischen Texte in dynamischen umwandeln wie z.B. das es durch eine SQL Abfrage ersetzt wird und nicht nur durch einen einfachen Text.

Kennt jemand eine Lösung, das wäre super da ich gerne mein kleines süßes Script weiter führen will und nicht auf Smarty und co. umsteigen will da ich den ganzen müll garnicht brauche.

Mit besten Grüßen

Manî
 
wo genau ist dein Problem?
Was möchtest du per SQL-Abfrage rein kriegen, was du nicht rein bekommst?

da ich nur die eine Methode deiner Klasse kenne und nicht die gesamte Klasse, kann ich jetzt nur raten, wie sie insgesamt funktioniert, aber so in etwa könnte es aussehen:

PHP:
//Datenbank-Verbindung steht
//Query, welche die News in chronologisch absteigender Reihenfolge zurückgibt existiert auch schon

while ($line = mysql_fetch_object($newsQuery)) {
    $tpl = new MyTemplate('NewsEntry.tpl');
    $tpl->assign('{TITLE}',$line->newstitle);
    $tpl->assign('{TEXT}',$line->newstext);
    echo $tpl->getHTML();
}
 
das problem ist doch was
----------------------|----HIER------|
$tpl->assign('{TITLE}',$line->newstitle);

steht nur ausgetauscht wird aber NICHT ausgeführt da das ausgetauschte in einer
.tld datei ist wo nur html drinne stehen darf und kein php drinne ausgeführt wird.
 
Zuletzt bearbeitet:
das problem ist doch was
----------------------|----HIER------|
$tpl->assign('{TITLE}',$line->newstitle);

steht nur ausgetauscht wird aber NICHT ausgeführt da das ausgetauschte in einer
.tld datei ist wo nur html drinne stehen darf und kein php drinne ausgeführt wird.
also erstmal... weißer Text auf weißem Hintergrund ist ganz böse...

und für weitere Hilfe musst du uns schon genauer erläutern, wie dein ganzes News-Script aufgebaut ist.

mit deinen spärlichen Informationen kann man echt nichts anfangen, sorry.
 
so, wegen der schriftfarbe bin ich wohl ausversehen auf weiß gekommen und da ich das alte layout nutze ist mir dies nicht aufgefallen.

zu dem projekt:

ich habe eine .tdl datei eine config.php datei eine index.php datei und eine template.php datei.

in der .tdl datei ist das layout bzw die struktur drinne wo nur reiner html text drinne steht. dort zwischen stehen dann halt in geschweiften klammern meine blücke die ersetzt werden sollen.

die config.php ist eig unrelevant weil ich dort nur die ganzen datenbank verbindung in variablen geschrieben habe etc.

die index.php datei ist die datei die aufgerufen wird. dort wird die tld rein importiert und ausgeführt. dort stehen auch die aufgerunfden funktionen drinne wie z.b. $tpl->assign('{TITLE}',$line->newstitle);

und zu letzt in der template.php steht nur die funktion
PHP:
    function assign($wort, $value = '') 
    { 
    if(is_array($wort))
        foreach($wort as $key => $val) 
            $this->assign($key, $val);
    else 
        //$this->tpl[$wort] = $value;
        $this->tpl = str_replace($wort, $value, $this->tpl);
die halt dafür sorgt das mein block {} der darinne steht angesprochen werden und ersetzt werden kann.

nun möchte ich eine news machen, ich habe viele news in meiner datenbank drinne die ich auch ohne weiteres abrufen kann über ein sql befehl. nun will ich aber meine funktion aufrugen sagen das z.b. {NEWS} die so in der -tdl stehen umgewandelt werden solen und mit der funktion die ich geschrieben habe mit dem inhalt aus der datenbank gefüllt werden soll. das problem ist leider das meine funktion nur statischen text ausgibt und es 1 zu 1 übernimmt. sage ich das {NEWS} in echo "hallo Welt" umgewandelt wird gibt er mir nicht Hallo Welt aus sondern echo "hallo Welt" da es nicht ausgeführt wird. das liegt daran das in der .tgl datei kein php verwendet werden darf.

nun brauche ich halt bessere funktion die meine blöcke durch dynamischen text ersetzt wie z.b. eine sql abfrage.

hoffe ich konnte es erklären :)
 
das problem ist leider das meine funktion nur statischen text ausgibt und es 1 zu 1 übernimmt. sage ich das {NEWS} in echo "hallo Welt" umgewandelt wird gibt er mir nicht Hallo Welt aus sondern echo "hallo Welt" da es nicht ausgeführt wird. das liegt daran das in der .tgl datei kein php verwendet werden darf.

Was verstehst Du unter statischem Text? Wenn Du Deinen Text in der Variable meinst, dann ist dieser nur solange statisch solange Du die Variable nicht mit einem anderen Wert überschreibst, was Du ja z.B. mit $tpl->assign('{PAGETITEL}', $line->pageTitle); machst! Und wenn Du eine Table haben willst, dann musst diese einfach mit einem Layouter erzeugen und den Html-Output an die assign-Methode übergeben.

Unter folgendem Link kannste Dir ein einfaches Beispiel anschauen: http://www.hackerboard.de/thread.php?threadid=36782
 
ich habe irgendwie das Gefühl, dass du da gerade was ganz komisches baust und solange du nicht die kompletten Quellen postest, werde ich deinen wirren Gedanken wohl nicht komplett folgen können.

ich kann dir, wenn mein Laptop-Netzteil mir nachgereist ist, gerne mal ein Beispiel posten, wie ich mal ein Mini-Template-System aufgebaut habe, aber an deinen Beispielen kann ich immernoch nur rumraten, wie das alles funktionieren soll.

Also entweder du hängst hier mal komplette Dateien an, dann kann ich dir das in 10-20 Minuten zurecht basteln, oder wir raten weiter munter weiter, wie das System des anderen wohl funktioniert...

edit: ah, BasicAvid - stimmt, du hattest da ja mal ein wunderbares MVC-Tutorial gepostet, wieso bin ich da nicht ehr drauf gekommen?! :)
 
habe die dateien nun leider nicht hier,
vllt erkläre ich es auch zu schwer.

ich werde mir das mvc tut mal angucken und gucken ob es so nicht einfacher ist. wenn ich noch fragen habe werde ich mich mal per pm bei dir melden beavisbee bzw. BasicAvid. da ich leider nicht direkt dateien von der firma aus veröffentlich kann. "datenschutz"

trotzdem vielen dank.
manî
 
Zurück
Oben