HTML/PHP Dynamischen Header einrichten

Active member
Ich sitze schon die ganze Nacht an einem Problem, was ich aufgrund meiner eher bescheidenen PHP Kenntnisse nicht so richtig gelöst bekomme.

Und zwar habe ich einen Wordpress Blog, auf dem ich jetzt ein neues, fertiges Template installiert habe:


Die Header-Grafik ist mir allerdings zu standardmäßig und so möchte ich gerne ein eigenes Bild dort einsetzen. Das geht auch an und für sich im Admin Panel, allerdings habe ich mir vorgenommen, das Bild aus einer Auswahl von 22 Bildern mit Hilfe eines PHP Skripts zufällig anzeigen zu lassen. Das funktionierte auch schonmal beim vorherigen Template, dort konnte ich das ganz gut ins CSS einarbeiten, hier funktioniert das alles jedoch komplett anders.

Zunächst mal das Skript, was das Bild zufällig wählt und zurückliefert (headerbg.php):
PHP:
<?php
header ("Content-type: image/jpg");
$bilder=array("header/01.jpg","header/02.jpg","header/03.jpg","header/04.jpg","header/05.jpg","header/06.jpg","header/07.jpg","header/08.jpg","header/09.jpg","header/10.jpg","header/11.jpg","header/12.jpg","header/13.jpg","header/14.jpg","header/15.jpg","header/16.jpg","header/17.jpg","header/18.jpg","header/19.jpg","header/20jpg","header/21.jpg","header/22.jpg");
mt_srand ((double)microtime()*1000000);
$zahl = mt_rand(0,(count($bilder) - 1));
readfile("$bilder[$zahl]");
?>
Wie man sieht befinden sich alle Bilder in einem Ordner "header", fein säuberlich durchnummeriert.

Weiterhin heißt es dann in der entsprechenden .php Datei des Wordpress Templates:
PHP:
...
<div id="banner"><img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>"/></div>
...

Leider habe ich wie gesagt nicht viel Ahnung von PHP, deshalb meine Frage: Wie bekomme ich das zurückgelieferte Bild aus meiner headerbg.php dort an die Stelle des standardmäßig eingesetzten Bildes? Sprich, wie kann ich überhaupt auf die andere PHP Datei zugreifen und den Bildnamen herausbekommen? Ich hab's bereits mit <?php include(headerbg.php); ?> versucht, da wird dann aber entweder eine Fehlermeldung angezeigt oder es wird einfach garnichts angezeigt, jenachdem wo ich es platziert habe.

Ich bin mir sicher, das Problem lässt sich total simpel lösen, ich hab nur im Moment keine Ahnung wie. :)

Wäre schön, wenn jemand ne Idee hat und mir helfen könnte. :)

//edit:
Achja, so wurde beim vorherigen Template das Bild im CSS eingebunden:
PHP:
backround: url ("images/header.php");
 
Zuletzt bearbeitet:
Beim Image-Src einfach die Datei angeben:
PHP:
<div id="banner"><img src="headerbg.php" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>"/></div>

Ob du die Höhe/Breite so stehen lassen kannst musst du schauen. Wenn alle Bilder die selbe Größe wie der originale Header hat, macht das keinen Unterschied.
 
Ja das hatte ich als erstes probiert, allerdings bleibt die Fläche dann leer... hab auch die Breite und Höhe schon versucht statisch einzutragen, ändert allerdings auch nichts...
Die Header die ich selbst gemacht habe haben auch alle die Größe des originalen Headers, von der Seite her sollte alles klappen.
Ich bezweifle eben, dass im <img> Tag im src-Attribut eine PHP Datei stehen darf, offenbar wird das nicht so recht akzeptiert.
 
Doch, das geht einwandfrei (habs gerade nochmal getestet). Schau mal ob beim Aufruf von headerbg.php auch wirklich ein Bild angezeigt wird (Pfade korrekt?). Bevor du den Header setzt darf auf keinen Fall irgendetwas ausgegeben werden, auch keine Leerzeichen vor "<?php".
 
Offenbar funktioniert das Skript isoliert einwandfrei, hier die URL:


Wenn ich jetzt als src headerbg.php einsetze, sieht das so aus:


Eine Vermutung von mir ist, dass womöglich die header.php, aus der die Codezeile mit dem <div> Container stammt, eventuell von woanders ausgeführt wird und vielleicht der Verweis auf die headerbg.php nicht mehr stimmt - warum auch immer. ;)
 
PHP:
<img width="920" height="360" src="wp-content/themes/adventure-journal/headerbg.php">

Schau dir mal mit Firebug (oder ähnlichem) die Requests an. "http://chrisfotospace.ch.funpic.de/headerbg.php" existiert nicht (404). :)

Edit: Das einfachste wäre vorerst einen absoluten Pfad anzugeben. Oder eleganter in der CSS-Datei #banner bearbeiten:
Code:
#banner {
    background: url("http://chrisfotospace.ch.funpic.de/wp-content/themes/adventure-journal/headerbg.php") no-repeat scroll 0 0 transparent;
[B]    height: 200px;[/B]
    left: 25px;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    z-index: 5;
}

Wichtig ist die Höhen-Angabe. Gibst du gar keine Größe für das DIV an wird nichts angezeigt. Da die CSS-Datei ja immer an der gleichen Stelle ist kannst du da dann für den Hintergrund einen relativen Pfad setzen (relativ zur CSS-Datei).
 
Zuletzt bearbeitet:
Okay, das scheint es gewesen zu sein...
Erst hatte ich es mit einem absoluten Pfad im <img> Tag versucht, das ging auch, mit dem relativen Pfad wp-content/themes/adventure-journal/headerbg.php wollte es dann aber auch nicht gehen...

Also <img> Tag jetzt ganz rausgenommen und ins CSS geguckt....
Dass der Div Container jetzt mit dem Namen #Banner angesprochen wird, hab ich im Eifer des Gefechts natürlich überhaupt nicht gesehen - eigentlich schön blöd... Hatte ja auch schon am Anfang im CSS nach #header und gesucht, und natürlich nur andere Sachen gefunden, aber als ich dann in der PHP Datei angefangen hab, bin ich garnicht mehr auf die Idee gekommen, nach #Banner zu suchen... :fresse:
Naja hab jetzt jedenfalls im CSS Höhe und Breite eingetragen, sowie den Background Tag mit der headerbg.php und das funktioniert auch einwandfrei.
Danke dir für die Hilfe! :)
 

Online-Statistiken

Zurzeit aktive Mitglieder
0
Zurzeit aktive Gäste
195
Besucher gesamt
195

Neueste Themen

Beliebte Forum-Themen

X
Keine passende Antwort gefunden?