peterha
Goto Top

Zeitbasiertes Bild auf Website mit PHP und CSS

Moin Leute,

ich bastele gerade mal eine Website. Bin soweit fertig. Muss nur noch einen automatischen Wechsel des Hintergrund-Bildes einbauen.
Das Hintergrundbild ist im Joomla Template in der theme.css-Datei definiert:

body {
  background-image: url("../../../images/hintergrund.jpg");  
  background-attachment: fixed;
  background-repeat: no-repeat;
  background-size: cover;
}

Ich kann darüber also ein statisches Bild definieren. Möchte aber mit folgendem Code zeitbasiert zwischen 3 Bildern wechseln.

<?php

 $h = date('G');  
 if ($h < 7) $img = '1.jpg';  
 else if ($h < 20) $img = '2.jpg';  
 else $img = '3.jpg';  

?>

Einbinden könnte ich es in die php-Datei mit dem html-Code:
<img src="<?php echo $img; ?>">


Meine Frage ist nun: Wie kann ich das am besten einbinden? Den Bilderwechsel besser in die theme.css oder per php in der Template-index.php?
Das Bild im css hat als background-size: cover; d.h. es passt sich automatisch der Browsergröße an. (Was ich sehr gut finde...)
Ginge das auch in der index.php <img src="<?php echo $img; ?>"> ? So stellt es ja nur die Bilddatei dar, wie sie ist. (Zu groß oder zu klein auf der Seite, nicht sich anpassend)

Herzlichen Dank für eure Hilfe.
Peter

Content-Key: 256971

Url: https://administrator.de/contentid/256971

Printed on: April 20, 2024 at 03:04 o'clock

Mitglied: 114757
114757 Dec 06, 2014 updated at 20:44:55 (UTC)
Goto Top
Moin Peter,
füge doch einfach via PHP ein zusätzliches Stylesheet hinter dem joomla CSS ein, und definiere die Hintergrundbild-Eigenschaft darin als !IMPORTANT.

 echo "<style type=\"text/css\">Body {Background-Image:url('path/bg.jpg') !Important}</style>";  
Gruß jodel32
Member: peterha
peterha Dec 06, 2014 at 21:40:39 (UTC)
Goto Top
Danke für die Antwort. Bitte erkläre es nochmal für Dummies.

"via PHP" -> Die Zeile in den index.php?

In der Zeile steht ja ein statischer Pfad. Wo kommt dann die php-Zeitweiche hin?
Stehe auf dem Schlauch. Vielleicht kannst du nochmal ganz eindeutig schreiben, was wo hin muss... Danke. face-smile
Member: bytecounter
bytecounter Dec 07, 2014 at 07:19:55 (UTC)
Goto Top
Hallo Peter,

zum Bsp so;
CSS:
.nacht {
        background-image: url("../../../images/hintergrund.jpg");  
}
.vormittagt {
        background-image: url("../../../images/anderesBild.jpg");  
}
.nachmittag {
        background-image: url("../../../images/nochEinAnderesBild.jpg");  
}
PHP:
<?php 
 $h = date('G');   
 if ($h < 7) {
        $css = ''nacht';   
} else if ($h < 20) {
        $css = 'vormittag';   
 else 
        $css = 'nachmittag';   
}
?>

Dann fügst Du per PHP an das Element, welches die Hintergrund Grafik bekommen soll, einfach noch die CSS-Klasse ein, z. B.
<div class="joomlaKlassen <?php echo $cass; ?>">...</div>  

Dein CSS muss er nach den Joomla-Stylesheets laden, dann überschreibt er damit die entsprechende Joomla-Eigenschaft (in diesem Fall "bachground-image". Die !important-Regel ist normalerweise nicht erforderlich. Es schadet aber auch nichts, sie zu setzen:
 background-image: url("../../../images/hintergrund.jpg") !important;  

vg
Bytecounter
Member: peterha
peterha Dec 07, 2014 at 13:09:15 (UTC)
Goto Top
Hallo Bytecounter,

Danke für den Code. Ich habe folgendes gemacht:

ich habe das den CSS-Schnipsel (den ich initial postet) durch dienen ersetzt. Deinen PHP-Code habe ich in die index.php eingebaut. (Hinter dem Body-Tag.)
Wo genau muss "<div class="joomlaKlassen <?php echo $cass; ?>">...</div>" rein?

Und das "background-image: url("../../../images/hintergrund.jpg") !important; " muss ins CSS hinter das, was ich bereits eingefügt habe?

Danke für die Hilfe.
Peter
Member: bytecounter
bytecounter Dec 08, 2014 at 12:59:37 (UTC)
Goto Top
Hallo Peter,

das war alles nur Beispielcode den Du entsprechend anpassen musst. Wo was hin muss, kann ich Dir nicht sagen, ich arbeite nicht mit Joomla.

Die CSS Klasse muss dem Element zugefügt werden, welches den Hintergrund ändern soll. Eventuell ist es kein DIV sondern direkt das BODY-Element. Aber hier kenne ich weder Joomla noch Deinen Code.

vg
Bytecounter