Antworten auf deine Fragen:
Neues Thema erstellen

Gästebuch erweitern - Logik hinter Template bauen

AlphaGen

Nicht mehr ganz neu hier

Hallo liebe Community,

ich bin mich mal wieder am weiterbilden und am tüfteln und benötige eure Hilfe.
Es geht um Templatesysteme.

Momentan arbeite ich lokal an dem Gästebuch MGB. Ich habe hierzu ein altes Projekt, eine Webseite von früher, verwendet und das Template so umgebaut, dass es aussieht wie die Webseite.
Bis hier hin alles schön und gut. Jetzt mein Problem: Auf der Seite befindet sich eine Box. Diese ist mit einer PHP-Datei realisiert. Die PHP-Datei liest den Inhalt der Box aus einer TXT-Datei. Die PHP-Datei steht auch und funktioniert so weit auch. Jetzt hab ich das Problem, dass die TPL-Dateien in HTML geschrieben sind und so ein include unmöglich ist.

Hat jemand Informationen wie Templates allgemein aufgebaut sind?

Es gibt Platzhalter mit geschweiften Klammern {TEST_PLATZ}
Aber diese müssen doch irgendwo gefüllt und definiert werden. Und wenn die Platzhalter gefüllt werden, muss es ja auch möglich sein diese mit einer Ausgabe einer PHP-Datei zu füllen.

Ich bitte um Hilfe. Möchte das unbedingt hinbekommen.

Vielen Dank im Vorraus.

AlphaGen
 

netbandit

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Simples Beispiel:
PHP:
$daten='Testausgabe';

$templ=file_get_contents('mein_template.htm');
$daten=str_replace('{TEST_PLATZ}', $daten, $templ);
echo $daten;

Grüße :)
 

AlphaGen

Nicht mehr ganz neu hier

AW: Gästebuch erweitern - Logik hinter Template bauen

Du willst mich veräppeln oder? Das ist alles?! So funktionieren Templates?!

Das ist ja... Wie soll ich sagen... Einfach?! ^^

Ich probier das gleich mal aus und schreib dann ob es funktioniert oder nicht. :)

Danke schonmal.
 

netbandit

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Das kann auch komplizierter werden, je nach Projekt ist es dann evtl. sinnvoll Funktionen/Classen zu erstellen, in denen erst in der Templatedatei nach allen Platzhaltern, IF-ELSE Anweisungen usw. gesucht wird. :)
 

AlphaGen

Nicht mehr ganz neu hier

AW: Gästebuch erweitern - Logik hinter Template bauen

Alsooooo...

einbinden funktioniert mit folgendem Code:

Code:
$templ_news_box=file_get_contents('../libs/news.php');
    $page_header = preg_replace("/\{H_NEWSBOX_TEXT\}/", $templ_news_box,  $page_header);
Die Datei news.php wird eingebunden.

news.php:
PHP:
<br>
<?php
$dat_text = fopen("box.txt", "r");
while(!feof($dat_text))
{
    $text = fgets($dat_text);
    echo $text."<br />";
}
fclose($dat_text);
?><br>
Problem:
Ausgabe in meiner Box:

"; } fclose($dat_text); ?>
 

netbandit

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Hast mich falsch verstanden; wie heisst die Datei in der {H_NEWSBOX_TEXT} steht?
 

ChrisvA

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Hier musst du das ganze ein wenig anders gestalten, da du ja nicht den Inhalt einer Datei anzeigen möchtest, sondern das "Ergebnis" eines PHP-Skriptes.
Entweder du baust nun deine news.php so um, dass statt alles auszugeben alles in eine Variable geschrieben wird. Dann musst du jedoch die Datei ganz normal mit include() einbinden und dann dies bei ersetzen benutzen. Ich würde übrigens preg_replace durch str_replace ersetzen, da du ja nicht nach regulären Ausdrücken suchst, sondern nach Text den du ersetzen möchtest.

Alternativ baust du dein Template so um, dass es aus einem PHP-Skript besteht, bei dem du an den jeweiligen Stellen per include() die einzelnen Skripte einbindest. Das sähe dann inetwa so aus:
PHP:
<html><head>...</head>
<body>
...
<div id="news"><?php include('news.php');?></div>
...
</body>
</html>
 

AlphaGen

Nicht mehr ganz neu hier

AW: Gästebuch erweitern - Logik hinter Template bauen

Hast mich falsch verstanden; wie heisst die Datei in der {H_NEWSBOX_TEXT} steht?

Ich habe 4 Dateien:

1. index.php
2. header.tpl
3. news.php
4. box.txt

Nehmen wir der einfachheit halber an alle vier Dateien liegen in einem Verzeichniss.

header.tpl (vereinfacht):
Code:
<body>{H_NEWSBOX_TEXT}</body>
index.php (vereinfacht):
PHP:
$page_header = file_get_contents('header.tpl')
$templ_news_box=file_get_contents('news.php');
$page_header = preg_replace("/\{H_NEWSBOX_TEXT\}/", $templ_news_box,  $page_header);

echo $page_header;
news.php (original):
PHP:
<?php
  $dat_text = fopen("box.txt", "r");
    while(!feof($dat_text))
    {
        $text = fgets($dat_text);
        echo $text."<br />";
    }
    fclose($dat_text);
    ?>
box.txt:
Testversuch

Das ist der Ausgangszustand.


Änderungen:

index.php
PHP:
$page_header = file_get_contents('header.tpl')
include('news.php');
$page_header = preg_replace("/\{H_NEWSBOX_TEXT\}/", $templ_news_box,   $page_header);


news.php (original):

PHP:
<?php
  $dat_text = fopen("box.txt", "r");
    while(!feof($dat_text))
    {
        $templ_news_box .= fgets($dat_text);
        $templ_news_box .= "<br>";

        
    }
    fclose($dat_text);
    ?>
Dann sollte doch alles funktionieren. Oder? :)
 

netbandit

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Ja, so sollte es funktionieren, Semikolon nicht vergessen :)

Obwohl ich hier immer noch der Meinung bin, dass str_replace völlig ausreichend ist...

...€: und $templ_news_box solltest Du vor der while-Schleife schon mal anlegen/definieren ;)
 
Zuletzt bearbeitet:

AlphaGen

Nicht mehr ganz neu hier

AW: Gästebuch erweitern - Logik hinter Template bauen

Getestet, Funktioniert.

Es ist nicht so ganz einfach aber es ist auch nicht das schwerste der Welt.
Auf jedenfall ist es mir gelungen die Logik hinter das Template zu basteln und beides getrennt zu halten. :)

Edit:

$templ_news_box vorher definiert
PHP:
$templ_news_box = "";
  $dat_text = fopen("box.txt", "r");
    while(!feof($dat_text))
...

preg_replace bleibt drin, weils vom Gästebuch vorher für andere Platzhalter schon verwendet wird und so mein Code zu dem restlichen Code passt. *lacht*

Danke an ChrisvA, für den Satz
Entweder du baust nun deine news.php so um, dass statt alles auszugeben alles in eine Variable geschrieben wird.
Da hab ich voll auf dem Schlauch gestanden und du hast mich runter gestoßen.

Ganz dickes Danke an netbandit für einfache und doch anschauliche Erklärung, wie Templates funktionieren. Das hat mir echt sehr weitergeholfen und ich habe, selbst als ich danach gegoogelt habe, keine so knappe und doch einleuchtende Erklärung gefunden. :)
 
Zuletzt bearbeitet:

ChrisvA

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

Eventuell noch in der index.php direkt nach der Includeanweisung
global $templ_news_box
einfügen, falls $templ_news_box leer ist.
 

netbandit

Aktives Mitglied

AW: Gästebuch erweitern - Logik hinter Template bauen

...und wenn Du mehrere Platzhalter in einem Template hast, arbeitest Du einfach mit Arrays

PHP:
$suchmuster=array();
$suchmuster[0]="/\{PLATZHALTER_01\}/";
$suchmuster[1]="/\{PLATZHALTER_02\}/";
$suchmuster[2]="/\{PLATZHALTER_03\}/";

$ersatz=array();
$ersatz[0]="Ausgabe 1";
$ersatz[1]="Ausgabe 2";
$ersatz[2]="Ausgabe 3";

echo preg_replace($suchmuster, $ersatz, $templ);
Grüße :)
 

sokie

Mod | Web

AW: Gästebuch erweitern - Logik hinter Template bauen

trotzdem ist der Hinweis auf str_replace interessant. zum einen funktioniert das genauso, zum anderen sind methoden mit regulären ausdrücken (preg...) nicht so performant.
gibt es einen Grund, warum Du die Inhalte mit fopen(),fgets(),fclose() holst statt per file_get_contents()?
 

AlphaGen

Nicht mehr ganz neu hier

AW: Gästebuch erweitern - Logik hinter Template bauen

Nein. gibt keinen Grund. *lacht*

Ich hab das früher mal so gemacht. Wie gesagt es handelt sich hier um ein älteres Projekt das mit dem neuen Projekt "Gästebuch" verknüpft wurde.
Ich hab schon lange nichts mehr mit Dateiverarbeitung gemacht. ^^
Ich teste dann heute mittag mal mit file_get_contents().

Danke :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben