Seite 1 von 1

Zufällige Inhalte im Forum anzeigen

Verfasst: 07.11.2007 16:39
von chris3007
Hallo zusammen,

in meiner page_header habe ich folgenden Code, um externe Inhalte anzuzeigen:

Code: Alles auswählen

// mgross-edv
$mag_loc='/kunden/160914_70736/rp-hosting/1/1/petsnature.de/';
$mag_server = $_SERVER["SERVER_NAME"];
$mag_server = 'www.petsnature.de';

$template->assign_vars(array(
	'HAUPTNAVIGATION' => implode('',file('http://'.$mag_server.'/data/navigation/hauptnavigation/hauptnavigation_community.php')),
	'BOX1' => implode('',file($mag_loc.'data/boxes/box_part1_left.php')),
	'BOXFORUM' => implode('',file($mag_loc.'data/boxes/box_part1_forum.php')),
	'BOX2' => implode('',file($mag_loc.'data/boxes/box_part2_left.php')),
	'BOX3' => implode('',file($mag_loc.'data/boxes/box_part3_left.php')),
In templates kann ich diese nun z.B. mit {BOX3} anzeigen lassen.


So. Nun zu meiner Frage.
Ich habe folgenden Code, mit dem ich externe Inhalte in einer anderen php-Datei zufällig anzeigen lasse:

Code: Alles auswählen

include sprintf('./data/navigation/hauptnavigation/zufall%02d.html',rand(1,4));
In dem Zielordner liegen dann jetzt 4 Dateien, die zufällig includiert werden.
Mein Problem ist, dass ich nicht den richtigen Syntax zusammen bekomme, dass dies in der page_header richtig ist. Ich bekomme immer Fehlermeldungen.

Hat jemand eine Ahnung?

Danke und Gruß
Chris

Verfasst: 07.11.2007 17:58
von djchrisnet
mal ganz stümperhaft kannst du das hier probieren:

Code: Alles auswählen

$zahl = rand(1,4);
if($zahl == 1){
include(DATEINAME1);
}
elseif($zahl == 2){
include(DATEINAME2);
}
elseif($zahl == 3){
include(DATEINAME3);
}
else{
include(DATEI4);
}
oder auch

Code: Alles auswählen

$nr = rand(1,4);
include sprintf("DATEPFAD/box_part"' . $nr . '"_forum.php");
sind beides ungetestet. keine GARANTIE

Verfasst: 08.11.2007 11:04
von chris3007
Hallo,

erst mal vielen Dank für die Antwort.



Mit folgendem Syntax in der page_header kommt mal zumindest keine Fehlermeldung mehr:

Code: Alles auswählen

'ANZEIGE' => include sprintf($mag_loc.'data/navigation/hauptnavigation/zufall%02d.html',rand(1,4)),
In den Templates sollte man den Inhalt ja dann mit {ANZEIGE} darstellen können.

Jetzt ist es aber gerade so, dass der Code in der include bewirkt, dass die zufälligen Anzeigen überall und als erstes in der Webseite gezeigt werden. Warum das?

Verfasst: 08.11.2007 13:29
von CorniI
weil include laut http://www.php.net/manual/de/function.include.php den Rückgabewert 1 bei Erfolg hat, und der Inhalt wird un mit parsen des Statements gleich eingebunden, und nicht, wie erwünscht, in dem Array abgelegt. Probier mal readfile() ;)
MfG
Corni

Verfasst: 08.11.2007 14:27
von chris3007
Hallo,

wie könnte der Code mit der Funktion reafile() dann aussehen? Ich probiere hin und her und bekomme immer Fehlermeldungen. ich bekomme den Syntax nicht hin...

Kann mir jemand helfen?

Verfasst: 08.11.2007 14:40
von chris3007
Ok. Ich habe es nun geschafft. Es ging einfach mit der implode(). Der Code sieht so aus:

Code: Alles auswählen

'ANZEIGE' => implode('',file(sprintf('PFAD/zufall%02d.html',rand(1,4)))),
Ich brauchte einfach eine Weile, bis ich die Klammern alle richtig gesetzt hatte :-)

Dieser Code kommt in die page_header.php. Mit {ANZEIGE} kann der Inhalt dann an einer beliebiegen Stelle dargestellt werden. Hier liegen jetzt vier Dateien dahinter.

Wir betreiben einen Shop und ich möchte eben im forum auch Shopinhalte, welche ich gesondert herausstellen möchte immer wieder in der viewtopic.body.tpl einblenden.

Beispiel dafür:
http://www.petsnature.de/phpBB2/ich-und ... t7873.html

Direkt unter der Navi kommt ein zufällig eingeblendeter Inhalt.

Danke für die Anregungen.
Gruß
Chris