Zufällige Position Hintergrundbild
am 06.02.2009 - 12:56 Uhr in
Hallo,
wie kann ich erreichen, dass sich mit jedem Seitenaufruf die Position des Hintergrundbilds zufällig ändert.
Grundsätzliches Prinzip ist mir klar: mit PHP rand() Zufallswert berechnen und CSS-Befehl mit berechneter Variable ausgeben. PHP-Code direkt in die CSS-Datei schreiben funktioniert leider nicht. Mein Server verarbeitet anscheinend keinen PHP-Code in CSS-Dateien.
Ausschnitt aus CSS-Datei:
background-image: url(images/polygon.png);
background-repeat: no-repeat;
background-attachment: fixed;
<?php
$zufallx=rand(-200,733);
$zufally=rand(-200,407);
echo "background-position:'. $zufallx .'px'. $zufally .'px;"
?>
background-color: white;
Ich benutze ein Theme auf Zen-Basis.
Link zur Seite:
http://stereo33.com/stereo33_master/node
Wie kann ich das anders lösen? Ich hab schon viel probiert, aber bisher hat nichts funktioniert.
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
Habs jetzt nicht probiert
am 06.02.2009 - 13:59 Uhr
aber teste mal das hier bitte (ist vielleicht auch nicht die beste Lösung, sollte aber klappen.)
Pack das hier da rein, wo du das Hintergrundbild haben willst:
style="<?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?> background-image: url(images/newshead.jpg); background-repeat: no-repeat; background-attachment: fixed;"
PHP-Code direkt in die CSS-Datei schreiben funktioniert leider nicht. Mein Server verarbeitet anscheinend keinen PHP-Code in CSS-Dateien.
Das hat mit deinem Server nix zu tun, das geht generell nicht. Du kannst keinen PHP-Code in eine CSS-Datei packen, die wird nicht geparst (man möge mich steinigen, wenn ich was falsches erzähle :D).
Gruß
Hallo, Nur so eine Idee:
am 06.02.2009 - 14:04 Uhr
Hallo,
Nur so eine Idee: Anstatt zu versuchen, an der CSS-Datei zu schrauben, könntest Du das ganze im page.tpl.php einbauen. Ein Style lässt sich ja auch mit Tags direkt im HTML-Bereich definieren:
<style type="text/css">
<!--
/* ... Hier werden die Formate definiert ... */
-->
</style>
Wahrscheinlich werden sich die Profis darob die Haare raufen ;-)...
lg leda
Verstehe ich das richtig?
am 06.02.2009 - 14:19 Uhr
Verstehe ich das richtig? Style-Attribute in das entsprechende div in der page.tpl.php packen? In meinem Fall:
<div id="page" class="round" style="background-image: url(images/polygon.png); background-repeat: no-repeat; background-attachment: fixed; <?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?>">
Klappt leider auch nicht. Was mache ich falsch?
So in der Art? <head>
am 06.02.2009 - 14:24 Uhr
So in der Art?
<head>
<title><?php print $head_title; ?></title>
<?php print $head; ?>
<?php print $styles; ?>
<?php print $scripts; ?>
<script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
<style type="text/css">
#page,
#closure-blocks
{
background-image: url(images/polygon.png); background-repeat: no-repeat; background-attachment: fixed; <?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?>"
}
</style>
</head>
Klappt leider auch nicht. Jetzt wird kein Hintergrund mehr angezeigt.
<div id="page"
am 06.02.2009 - 14:36 Uhr
<div id="page" class="round" style="background-image: url(images/polygon.png); background-repeat: no-repeat; background-attachment: fixed; <?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?>">
Jo, genau wie das bloß stimmt die Pfadangabe zum Bild nicht. Ich kenn da leider noch nicht die variable für, aber trage mal den kompletten Pfad ein:
url(themes/deinTemplate/images/polygon.png);
Das sollte gehen.
Gruß
Der Code, den ich gepostet
am 06.02.2009 - 14:41 Uhr
Der Code, den ich gepostet habe ist ja purer "HTML"-Code, den könntest Du ja in einem normalen HTML auch verwenden. Du musst diesen Text im PHP-Code als String auscodieren und dann "printen" (oder "echoen", weiss jetzt grad nicht auswendig). Zwischen den Style-Tags kommt der Text, der auch im CSS drin wäre, nur kannst Du so eben auch eine PHP-Variable hineinbringen.
Du hast ja das Problem, dass es mit dem CSS mit fixer Positionierung funktioniert. Da Du aber die CSS-Datei nicht manipulieren kannst, musst Du das mit PHP machen.
Dem IMG weist Du eine Class zu, deren fixen Werte im .CSS definiert sind und die variablen Teile werden über den PHP Code hinzugefügt.
lg leda
Update: Klappt leider nur auf der Startseite
am 06.02.2009 - 15:36 Uhr
Jo, genau wie das bloß stimmt die Pfadangabe zum Bild nicht. Ich kenn da leider noch nicht die variable für, aber trage mal den kompletten Pfad ein:
url(themes/deinTemplate/images/polygon.png);
Das sollte gehen.
Vielen Dank! Jetzt hat es endlich geklappt. So ein blöder kleiner Fehler kann einen echt zum Wahnsinn treiben.
Update: Zu früh gefreut. Leider funktioniert es nicht auf allen Seiten. Bei URLs wie http://stereo33.com/stereo33_test/forum funktioniert es. Ist noch ein "Ordner" dazwischen, z.B. http://stereo33.com/stereo33_test/users/admin funktioniert es nicht mehr.
Was ist jetzt wieder falsch?
Ich dreh gleich durch!
Evtl. musst Du den Cache
am 06.02.2009 - 15:19 Uhr
Evtl. musst Du den Cache leeren...
lg leda
Aha, Admin - ich glaube, die
am 06.02.2009 - 15:21 Uhr
Aha, Admin - ich glaube, die gehen nicht über die page.tpl.php...
Hab ich probiert...
am 06.02.2009 - 15:27 Uhr
daran liegt es leider nicht.
Evtl. musst Du den Cache leeren...
lg leda
leda@drupal.org
am 06.02.2009 - 15:31 Uhr
Aha, Admin - ich glaube, die gehen nicht über die page.tpl.php...
War nur ein Beispiel. Andere Seiten wie http://stereo33.com/stereo33_test/node/2 oder http://stereo33.com/stereo33_test/node/add/forum gehen auch nicht.
Über welches Template gehen die sonst, wenn nicht page.tpl.php?
Danke und Grüße
Ich schätze, die gehen
am 06.02.2009 - 15:46 Uhr
Ich schätze, die gehen schon über page.tpl.php, aber ev. in anderer Reihenfolge...
Dem Quelltext Deiner Seite nach, wird das Bild eingebunden, aber nicht angezeigt. Ich habe den Verdacht, dass hier ein Z-Index-Problem vorliegt
lg leda
Verschieb dein Bild mal
am 06.02.2009 - 15:53 Uhr
in den Templateordner. Da sollte doch eigentlich das Theme liegen. Du hast das aber in sites/all/themes
Jetzt weiß ich nicht (bin ja noch nicht lange dabei), ob man Themes da rein packen kann oder wie das zu machen ist. Teste es aber einfach mal, dass in den Pfad der normalen Themes zu packen.
background-image: url(themes/stereo33/images/polygon.png);
Gruß
einfachfragen schrieb in
am 06.02.2009 - 16:02 Uhr
in den Templateordner. Da sollte doch eigentlich das Theme liegen. Du hast das aber in sites/all/themes
Jetzt weiß ich nicht (bin ja noch nicht lange dabei), ob man Themes da rein packen kann oder wie das zu machen ist. Teste es aber einfach mal, dass in den Pfad der normalen Themes zu packen.
background-image: url(themes/stereo33/images/polygon.png);
Gruß
Daran liegt es leider nicht. Habs probiert. Das Theme ist aber im Sites/all/ Ordner gut aufgehoben. Ist ab Drupal 6 so, dass Core und Erweiterungen getrennt sind. Macht es leichter upzudaten, oder eine Drupal.Installation für mehrere Seiten zu verwenden.
Noch ein Versuch
am 07.02.2009 - 12:52 Uhr
Probier es mal damit:
<div id="page" class="round" style="background-image: url(<?php echo base_path() . path_to_theme(); ?>/images/polygon.png); background-repeat: no-repeat; background-attachment: fixed; <?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?>">
Gruß
Hallo, danke, dass Du noch
am 07.02.2009 - 13:08 Uhr
Hallo, danke, dass Du noch dran bist an dem Problem.
Habs versucht. Jetzt bleibt der Hintergrund schwarz. Schade.
2464 schriebHallo, danke,
am 07.02.2009 - 13:59 Uhr
Hallo, danke, dass Du noch dran bist an dem Problem.
Habs versucht. Jetzt bleibt der Hintergrund schwarz. Schade.
Klar, warum auch nicht. Wenn ich helfen kann, dann versuch ich es auch :D.
Was dein Problem angeht, bei mir klappt es, habe es gerade mal ausprobiert. Springt schön auf jeder Seite hin und her. Natürlich ist es nicht immer sichtbar, da es manchmal durch die Positionierung außerhalb des sichtbaren Bereichs ist.
Vielleicht liegt es daran, dass du das Theme im sites-ordner hast. Ich habe einfach das Haupttemplatverzeichnis genommen (obs jetz richtig ist, weiß ich nicht, aber es geht).
Gruß
Nachtrag:
Bei mir sieht es so aus:
<div id="contentleft" style="background-image: url(<?php echo base_path() . path_to_theme(); ?>/images/mheader.jpg); background-repeat: no-repeat; background-attachment: fixed; <?php $zufallx=rand(-200,733); $zufally=rand(-200,407); echo "background-position: " .$zufallx."px ".$zufally ."px;"?>">
Ich verstehe es zwar nicht.
am 07.02.2009 - 14:09 Uhr
Ich verstehe es zwar nicht. Aber im normalen Theme Ordner klappt es jetzt. Vielleicht ein Bug? Danke und noch ein schönes Wochenende.
Ich weiß zwar nicht ob du
am 27.02.2009 - 17:02 Uhr
Ich weiß zwar nicht ob du es noch brauchst aber hier ist noch eine Lösung, wie es auch mit Themes im Templateordner geht:
In die page.tpl.php oben einfügen:
<?php global $theme_path; ?>
Und den Bilderpfad gibst du dann wie folgt an:
<?php print base_path() . $theme_path ?>/images/dot.gif
Gruß