[Update]: Eine bessere Methode, dies zu lösen, findest Du etwas weiter unten…
Die entsprechende Datei, die hierbei modifiziert wird, ist die header.php, die zu jedem WordPress-Template gehört. Zuerst wird dort in PHP eine kleine Routine eingebaut, welche eine mehr oder wenig zufällige Zahl in einem bestimmten Zahlenbereich erzeugt und diese in einen Dateipfad integriert (mehr oder weniger deshalb, da anscheinend niedrige Zahlen öfter ‘gezogen’ werden):
PHP:
-
<?php
-
function header_graphic() {
-
-
-
-
-
};
-
?>
Wie das Script zeigt, wird eine Zahl zwischen 0 und 78 erzeugt und mit den echo-Anweisungen zu einem kompletten Pfad-Statement in der Form /images/top/top31.jpg zusammengesetzt. (Ja, ich habe aktuell 79 90 unterschiedliche Top-Grafiken und finde es wunderbar
. Wer so etwas auch machen will, findet übrigens bei Stock.XCHNG tonnenweise frei verwendbare Grafiken.)
Darauf folgt im head-Bereich diese Anweisung:
HTML:
-
<style type=“text/css” media=“screen”>
-
#top { background:
URL("
<?php bloginfo(’stylesheet_directory’); header_graphic(); ?>") no-repeat bottom center; }
-
</style>
was dann im Fall der ContentSchmiede schließlich so in der fertigen HTML-Seite erscheint (wie man sehen kann, wenn man sich den Quelltext anzeigen läßt):
HTML:
-
<style type=“text/css” media=“screen”>
-
#top { background:
URL("http://www.contentschmiede.de/wp-content/themes/relaxation_3colum n/images/top/top31.jpg") no-repeat bottom center; }
-
</style>
Und so siehts bei mir im Verzeichnis /wp-content/themes/relaxation_3column/images/top/ aus: 79 jpg-Grafiken, aufsteigend von 0 bis 78 numeriert.
Jetzt nochmal das Grundgerüst der header.php komplett:
HTML:
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
<HTML xmlns=“http://www.w3.org/1999/xhtml” xml:lang=“de”>
-
-
<?php
-
function header_graphic() {
-
echo “/images/top/”;
-
srand ((double) microtime( )*1000000);
-
$num=rand(0,78);
-
echo “top”.$num.“.jpg”;
-
};
-
?>
-
-
-
-
<style type=“text/css” media=“screen”>
-
#top { background:
URL("
<?php bloginfo(’stylesheet_directory’); header_graphic(); ?>") no-repeat bottom center; }
-
</style>
-
<?php wp_head(); ?>
-
</head>
-
-
Die Sache läßt sich in dieser Form übrigens auch in jedes andere PHP-Blog- oder PHP-CMS-System einbauen. Es ist auch nicht auf ein Hintergrundbild beschränkt, man kann auch normale Bilder etwa in einer Randspalte auswechseln.
[Update]: Dank des Hinweises von Claudio in den Kommentaren habe ich mir das dort erwähnte Script angesehen und die Art, es zu machen, für gut befunden. Deshalb habe ich auch gleich dieses Script adaptiert und in die header.php eingebaut (ja, man kann das Programm Random Header Image auch als Plugin einbauen, aber ich mag das so lieber):
PHP:
-
-
-
function rand_head(){
-
if( $handle =
opendir(HEADERIMG_DIR
) ){
-
while (false !==
($file =
readdir($handle))) {
-
if ( ($file !=
“.” &&
$file !=
“..”) && !
is_dir(HEADERIMG_DIR.
‘/’.
$file) ) {
-
$files[] = $file;
-
}
-
}
-
-
echo ‘/images/top/’ .
$files[$rand_key];
-
}
-
};
-
?>
Der Aufruf im head-Bereich ändert sich dann wie folgt:
HTML:
-
<style type=“text/css” media=“screen”>
-
#top { background:
URL("
<?php bloginfo(’stylesheet_directory’); rand_head(); ?>") no-repeat bottom center; }
-
</style>
Der Vorteil dieser Routine ist, dass ich nun in das Verzeichnis /wp-content/themes/relaxation_3column/images/top/ beliebige Grafiken ablegen kann und mich weder um deren Namen noch um die Gesamtzahl kümmern muss.
Zu konfigurieren sind übrigens im Script zwei Pfade zu den Grafiken (Zeilen 1 und 11).
Noch eine Anmerkung: ‘Seit PHP 4.2.0 besteht keine Notwendigkeit mehr, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht nun automatisch.‘ (Quelle: PHP Handbuch bei phpforum.de).
So, und die nötigen Zeilen in der header.php nochmal komplett:
HTML:
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
<HTML xmlns=“http://www.w3.org/1999/xhtml” xml:lang=“de”>
-
-
<?php
-
define( “HEADERIMG_DIR”, dirname(dirname(__FILE__)).“/relaxation_3column/images/top” );
-
-
function rand_head(){
-
if( $handle = opendir(HEADERIMG_DIR) ){
-
while (false !== ($file = readdir($handle))) {
-
if ( ($file != “.” && $file != “..”) && !is_dir(HEADERIMG_DIR.‘/’.$file) ) {
-
$files[] = $file;
-
}
-
}
-
$rand_key = array_rand($files);
-
echo ‘/images/top/’ . $files[$rand_key];
-
}
-
};
-
?>
-
-
-
<style type=“text/css” media=“screen”>
-
#top { background:
URL("
<?php bloginfo(’stylesheet_directory’); rand_head(); ?>") no-repeat bottom center; }
-
</style>
-
…
-
</head>
-
-