Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Mehrere Inhalte in ein Template includen
Frage
Hallo,
ich habe ein template, den Original Quellcode wo nur ein Inhalt included wird ist folgender:
<?
session_start();
session_register("username");
session_register("kennwort");
$Titel = "sponsorenbereich";
include ("config.inc.php");
$fp = fopen ($template2, "r");
$data = fread($fp, 1000000);
$data = str_replace("{Titel}" , $Titel, $data);
$array = explode ("{Inhalt2}",$data);
echo $array[0];
##Inhalt der Seite ...
include("test.inc.php");
##Ende des Inhaltes der Seite ...
echo $array[1];
?>
nun, will ich aber in template2.html in den {Inhalt3} noch eine datei includen die mit angezeigt werden soll. Nur leider habe ich keine ahnung wie ich das bewerkstelligen soll !
Brauche dringend hilfe, ich habe erst angefangen mit php und kenne mich noch nicht wirklich aus.
Danke !
Antwort 1 von Helferlein
du hast grade erst angefangen mit php und arbeitest schon mit templates???
lass die sache mal ruhig angehen bub.
lass die sache mal ruhig angehen bub.
Antwort 2 von Skhoney
naja, was heißt langsam, das ding ist das ich das brauche das hat mit langsam nix zu tun !
ICh möchte ja nur ein script erweitern ! Und die beste Methode ist nun mal Learning by doing ! Was nützt es mir wenn ich 50 Tutorials durcharbeite mit denne ich dann zu schluss das wissen habe wie ich ne mail versende ! Also rein ins getümmle heist die devise !
Zurück zum Thema: kann nun jemand helfen ?
ICh möchte ja nur ein script erweitern ! Und die beste Methode ist nun mal Learning by doing ! Was nützt es mir wenn ich 50 Tutorials durcharbeite mit denne ich dann zu schluss das wissen habe wie ich ne mail versende ! Also rein ins getümmle heist die devise !
Zurück zum Thema: kann nun jemand helfen ?
Antwort 3 von semi
Das lässt sich super mit regulären Ausdrücken lösen.
z.B.
Variante 1
{X} bleibt, wie es ist, da nicht definiert.
Du kannst auch Inhalte aus Dateien einfügen, z.B.
statt
'{A}' => "'Inhalt von A'"
'{A}' => implode('',file('inhalt_a.dat'))
Gruß,
Michael
z.B.
Variante 1
function getData($matches)
{
if($matches[0]=='{A}')
return "'Inhalt von A'";
else if($matches[0]=='{B}')
return "'Inhalt von B'";
else if($matches[0]=='{C}')
return "'Inhalt von C'";
else
return $matches[0];
}
echo preg_replace_callback(
"/({[^}]+})+/i",
"getData",
"Dies ist {A} ein {B} Test {C} {X}"
);
Variante 2 (mit HashMap)
$data = array(
'{A}' => "'Inhalt von A'",
'{B}' => "'Inhalt von B'",
'{C}' => "'Inhalt von C'"
);
function getData($matches)
{
global $data;
if(array_key_exists($matches[0], $data))
return $data[$matches[0]];
return $matches[0];
}
echo preg_replace_callback(
"/({[^}]+})+/i",
"getData",
"Dies ist {A} ein {B} Test {A} {C} {X}"
);
{X} bleibt, wie es ist, da nicht definiert.
Du kannst auch Inhalte aus Dateien einfügen, z.B.
statt
'{A}' => "'Inhalt von A'"
'{A}' => implode('',file('inhalt_a.dat'))
Gruß,
Michael
Antwort 4 von Skhoney
dank dir das ist doch mal ne hilfe wer es gleich mal durchgehen !
Antwort 5 von semi
Ehhmm.... *klatchandiestirn* ... das Pattern kann noch vereinfacht werden.
"/({[^}]+})/"
Jetzt aber. :)
"/({[^}]+})/"
Jetzt aber. :)
Antwort 6 von Skhoney
ok, ich hab das jetzt mal so gebaut, nur leider komm ich auch nicht weiter, weil die 2 datein werden leider nicht angezeigt. habe es mit der Hashmap probiert:
die 2 datein werden nicht angezeigt, komischerweiße stand aber der text da. Kannst du mir bitte noch mal helfen ?
$data = array(
'{Inhalt3}' => implode('',file('menu.php')),
'{Inhalt2}' => implode('',file('main.php')),
);
function getData($matches)
{
die 2 datein werden nicht angezeigt, komischerweiße stand aber der text da. Kannst du mir bitte noch mal helfen ?
Antwort 7 von semi
Hi,
ich habe keine Ahnung, was da in menu.php und main.php steht, aber mit file('...') liest Du den SOURCECODE aus und gibst ihn an den Browser weiter. So war's sicherlich nicht gemeint :-)
In Deiner Frage ging es doch um das Ersetzen von Vaiablen/Inhalten im Text, nicht um das Zusammensetzen mehrerer Seiten. Dazu reicht include('...') aus.
Gruß,
Michael
ich habe keine Ahnung, was da in menu.php und main.php steht, aber mit file('...') liest Du den SOURCECODE aus und gibst ihn an den Browser weiter. So war's sicherlich nicht gemeint :-)
In Deiner Frage ging es doch um das Ersetzen von Vaiablen/Inhalten im Text, nicht um das Zusammensetzen mehrerer Seiten. Dazu reicht include('...') aus.
Gruß,
Michael
Antwort 8 von Skhoney
also ich habe mein template ($template2) die html datei, in der sind die 2 vorgaben {inhalt2} und {inhalt3} die möchte ich quasi ersetzten durch die 2 datein von oben, also in der menu.php ist das menü drinne und in der main.php ist der content drinne, braktisch soll das alles zusammengesetzt werden, mit include funktioniert das zwar auch aber nciht so wie ich das möchte. So wäre der conten und unter dem Content das Menü ich möchte aber das das menü links neben dem Content erscheint.
Ich habe schon viel ausprobiert aber ich bekomme das echt nicht hin, bin wahrscheinlich noch viel zu "frisch" in der Thematik, es wäre also toll wenn du mir dennoch helfen könntest.
Gruß,
Steffen
Ich habe schon viel ausprobiert aber ich bekomme das echt nicht hin, bin wahrscheinlich noch viel zu "frisch" in der Thematik, es wäre also toll wenn du mir dennoch helfen könntest.
Gruß,
Steffen
Antwort 9 von semi
Wie wär's mit sowas?
<table>
<tr>
<td width="180px"><? include('menu.php'); ?></td>
<td><? include('main.php'); ?></td>
</tr>
</table>Antwort 10 von Skhoney
mein Gott bin ich plö* - jetzt war ich der maßen auf as eine versteift, naja mann kann es sich eben auch schwermachen =) wenns leicht geht !
Danke !
Danke !
Antwort 11 von semi
Passiert mir auch manchmal.
Da überlegt man sich irgendwelche super ausgeklügelte Vorlagen und vergisst das wichtigste aus dem Auge. Es soll ja einfach und schnell gehen. :)
Da überlegt man sich irgendwelche super ausgeklügelte Vorlagen und vergisst das wichtigste aus dem Auge. Es soll ja einfach und schnell gehen. :)

