einfaches Templatesystem
Peter
- php
Hallo!
Ich bin gerade dabei meine Webseite auf Templates umzustellen. Das Template sieht so aus:
<!-- ... -->
<body>
<div id="head">%headline%</div>
<div id="content">%content%</div>
<div id="footer">%footer%</div>
<!-- ... -->
Leider habe ich schon seit längerem nichts mit PHP zu tun gehabt, und stehe daher auf der Leitung, wie ich das File am besten einlesen, die Platzhalter ersetzen und ausgeben kann... (ausgeben sicher mit echo, print etc. *gg*)
Ich würde mich über eine Antwort freuen.
cu
Peter
Hallo Peter.
wie ich das File am besten einlesen,
die Platzhalter ersetzen
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo!
Danke. Eine kurze Frage noch: wie gehe ich dann am besten vor, wenn der Inhalt für den Platzhalter %content% in einem .txt File gespeichert ist?
Bisher sieht mein Script so aus:
$handle = file_get_contents("../html/template.html", "r");
if(!isset($_GET['id']))
{
$pageid = "0";
}
else
{
$pageid = $_GET['id'];
}
$_search = array(
'%title%',
'%subnav%',
'%blog%',
'%otherthings%',
'%content%'
);
if($pageid == "0")
{
$_replace = array(
'Lorem ipsum dolor',
'subnav test',
'blog test',
'anderer test',
'...'
);
}
//...etc. für id=01, id=02, id=03...
echo str_replace($_search, $_replace, $handle);
Was müsste ich anstelle der ... im $_replace array schreiben? 'include(...)' ja wohl nicht...
P.S. Wie findet ihr sonst meine "Lösung"?
cu
Peter
Hallo Peter.
Danke. Eine kurze Frage noch: wie gehe ich dann am besten vor, wenn der Inhalt für den Platzhalter %content% in einem .txt File gespeichert ist?
In welcher Form?
Bisher sieht mein Script so aus:
$handle = file_get_contents("../html/template.html", "r");
Verwechselst du nicht gerade file\_get\_contents() mit [fopen()](http://de2.php.net/manual/en/function.fopen.php)?
Anders kann ich mir den zweiten Parameter in deinem Script nicht erklären.
> ~~~php
if(!isset($_GET['id']))
> {
> $pageid = "0";
> }
> else
> {
> $pageid = $_GET['id'];
> }
Du solltest $_GET['id'] besser ausführlicher testen, um heraus zu finden, ob darin wirklich nur von dir erwünschte Werte enthalten sind.
$_search = array(
'%title%',
'%subnav%',
'%blog%',
'%otherthings%',
'%content%'
);if($pageid == "0")
{
$_replace = array(
'Lorem ipsum dolor',
'subnav test',
'blog test',
'anderer test',
'...'
);
}
>
> //...etc. für id=01, id=02, id=03...
Hier würde sich unter Umständen ein assoziatives Array anbieten.
Also:
~~~php
$_replace = array (
'0' => array ('Foo 0', 'subnav foo 0', 'blog foo 0', '…');
'01' => array ('Foo 1', 'subnav foo 1', 'blog foo 1', '…');
'02' => array ('Foo 2', 'subnav foo 2', 'blog foo 2', '…');
/* … */
);
Dieses wird dann eben entsprechend angesprochen. ($_replace[$_GET['id']]
)
Was müsste ich anstelle der ... im $_replace array schreiben? 'include(...)' ja wohl nicht...
Dazu solltest du erst das Datenformat für die TXT-Datei nennen.
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo!
Verwechselst du nicht gerade file_get_contents() mit fopen()?
Hoppala. Dort war zuerst ein fopen... hab den Parameter zu löschen vergessen.
Du solltest $_GET['id'] besser ausführlicher testen, um heraus zu finden, ob darin wirklich nur von dir erwünschte Werte enthalten sind.
Hmmm... du meinst, z.b. wenn ich z.b. id's von 1-10 habe, aber die id 11 eingegeben wird, dass es dann nicht zu Fehlern kommt. (Das müsste sich doch machen lassen *gg*)
Hier würde sich unter Umständen ein assoziatives Array anbieten.
Danke. Daran hatte ich noch gar nicht gedacht, weil ich sowas eigentlich noch nie verwendet habe.
Dazu solltest du erst das Datenformat für die TXT-Datei nennen.
Das ist normaler Plain-Text, allerdings mit HTML-Tags.
cu
Peter
Hallo Peter.
Hmmm... du meinst, z.b. wenn ich z.b. id's von 1-10 habe, aber die id 11 eingegeben wird, dass es dann nicht zu Fehlern kommt. (Das müsste sich doch machen lassen *gg*)
Zum Beispiel. Du solltest nur die Werte zulassen, die du erwartest.
Alles andere sollte zu einer Standardreaktion führen. (Entspräche dem else-Zweig einer Abfrage.)
Dazu solltest du erst das Datenformat für die TXT-Datei nennen.
Das ist normaler Plain-Text, allerdings mit HTML-Tags.
Recht ungewöhnlich. Üblich sind CSV ([Wikipedia: CSV-Datei]) oder auch XML.
Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.
Den Array für $_replace kannst du ggf. mittels explode() erschaffen.
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo!
Recht ungewöhnlich. Üblich sind CSV ([Wikipedia: CSV-Datei]) oder auch XML.
Hmm... mit CSV bzw. XML hatte ich noch nichts zu tun. (Bei CSV frage ich mich z.b. wie man dort z.b. Absätze kennzeichnen würde bzw. hervorgehobene Elemente...)
Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.
verstehe ich jetzt nicht ganz...
cu
Peter
Hallo!
Also musst du im Grunde auch diese Datei lediglich auf bekannte Art und Weise einlesen.
verstehe ich jetzt nicht ganz...
Hmm... ich hab mich vielleicht da etwas dumm ausgedrückt... - Aber ich weiß nicht, wie ich eine Datei in eine Variable "schreiben" kann, damit ich diese anschließend in das $_replace - Array reingeben kann, um dann die %content% - Platzhalter zu ersetzen
cu
Peter
Hallo!
Ich habs schon selbst gelöst...
Danke nochmals für eure (deine) hilfe!
cu
Peter