Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Body background Wechsel bei reload via php ?

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Body background Wechsel bei reload via php ?
    am: 21. März 2014, 15:58:30
    Hi zusammen,

    probier jetzt schon seit Stunden herum und bekomm's einfach nicht hin.

    Ich möchte, dass bei jedem Seiten-Reload das body background-image wechselt.

    Habe jetzt im Netz nur allgemeine Beschreibungen gefunden ( den Wechsel via  php )
    und hab' das mal versucht:

    1. In der stylesheet.css das hier eingefügt:

    background-image: url(<?php echo $bodypics[rand() % count($bodypics)];?>);

    2. In der includes/header.php nach dem Doctype-Eintrag das hier eingefügt:

    <?php
    $bodypics=array('templates/'.CURRENT_TEMPLATE.'/img/bodybg/bild-01.jpg' , 'templates/'.CURRENT_TEMPLATE.'/img/bodybg/bild-02.jpg');
    ?>

    Habe auch schon mit den Pfadangaben experimentiert... nix. Zeigt kein HG Bild an !!

    Jemand eine Idee ?  :whistle:

    Vielleicht gehört das auch gar nicht in die header.php... ?!

    Danke im Voraus.
    David



    Linkback: https://www.modified-shop.org/forum/index.php?topic=29741.0

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Body background Wechsel bei reload via php ?
    Antwort #1 am: 21. März 2014, 19:43:51
    In einer css-Datei kann man kein PHP verwenden.

    Suche in der header.php:
    Code: PHP  [Auswählen]
    <body<?php if(strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) echo ' onload="resize();"'; ?>>
     

    Ersetze es mit:
    Code: PHP  [Auswählen]
    <?php
    $bs_no    = array(1,2);
    $bs_class = ' class="background_switch' . $bs_no[rand() % count($bs_no)] . '"';
    ?>
    <body<?php echo ((strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) ? ' onload="resize();"' : $bs_class); ?>>
     

    Füge in der stylesheet.css ganz unten ein:
    Code: CSS  [Auswählen]
    .background_switch1{
      background-image: url(img/bodybg/bild-01.jpg) !important;
    }
    .background_switch2{
      background-image: url(img/bodybg/bild-02.jpg) !important;
    }
     

    Gruß

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #2 am: 21. März 2014, 20:05:53
    Hi!

    Erstmal vielen Dank... aber bei mir sieht der Code ein wenig anders aus ... ?!

    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    echo '<body onload="resize();"> ';
    } else {
    echo '<body>';
    }

    // econda tracking
    if (TRACKING_ECONDA_ACTIVE=='true') {  
    ?>
    <script type="text/javascript">
    <!--
    var emos_kdnr='<?php echo TRACKING_ECONDA_ID; ?>';
    //-->

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Body background Wechsel bei reload via php ?
    Antwort #3 am: 21. März 2014, 20:39:41
    Dann erst den Shop updaten und dann einbauen.

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #4 am: 21. März 2014, 21:20:51
    Da fehlt mir gerade leider die Zeit, da ich morgen erst einmal einen Re-Launch habe... und da ist mir eben noch die Idee mit dem Wechsel des Hintergrundes gekommen.

    Also wäre es möglich mir noch kurz mit dem alten Code zu helfen? Bitte... !?

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Body background Wechsel bei reload via php ?
    Antwort #5 am: 21. März 2014, 22:38:15
    Einfach die Klasse so würfeln wie im Beispiel von web0null und dann eben an den <body> ohne Popup anhängen.

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #6 am: 22. März 2014, 11:51:11
    Ich hab's versucht, ich bekomme es einfach nicht hin. Shop zeigt dann nichts mehr an.
    Vermutlich irgendwo Klammer falsch gesetzt, oder ein Komma nicht richtig gesetzt, keine Ahnung.

    Ich lasse es jetzt einfach weg.

    Was ich aber noch los werden möchte ( jetzt z.B. an Matt ):

    Ihr scheint als zu vergessen, dass nicht jeder Informatiker, Webentwickler oder Profiprogrammierer ist !!

    Ich versuche mich immer mit den Sachen hier auseinanderzusetzen, habe auch schon viel gelernt - aber ich mache beruflich was ganz anderes und habe somit nicht die Möglichkeit mich richtig in die Materie reinzuknieen, da ich knapp 12 Stunden täglich auf Arbeit bin.

    Und ich schätze so geht es vielen hier!

    Ich versuche meist alles erst selber, aber wenn ich dann zwei oder drei Stunden an einem Mini-Problem sitze, verliere ich irgendwann auch die Motivation.

    Und was für euch in ner halben Minute geschrieben ist, dafür brauchen andere eine Stunde, bis sie ein paar Textstellen richtig "zusammengewürfelt" haben !!

    Den Code zu "würfeln" wäre für dich Matt vermutlich ne Sache von ein paar Sekunden gewesen, ... ich saß jetzt wieder  knapp ne Stunde dran und habe Codestellen hin und her geschoben, ohne Erfolg!

    Also wäre ein Post von dir mit dem richtigen Code wertvoller gewesen, als deine 2 Posts.

    Aber trotzdem danke für eure Hilfe!

    Das sollte jetzt nicht unverschämt rüberkommen, ich weiß, ihr helft hier unentgeldlich und ist ein tolles Forum - aber es ist einfach nicht jeder hier ein Programmierprofi!

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #7 am: 22. März 2014, 14:52:11
    Hoi newbee, versuchs mal damit (aus dem Handgelenk geschüttelt - nicht getestet!)


    <?php
    $bs_no    
    = array(1,2);
    $bs_class ' class="background_switch' $bs_no[rand() % count($bs_no)] . '">';

    if (
    strstr($PHP_SELFFILENAME_POPUP_IMAGE )) {
    echo 
    '<body onload="resize();"> ';
    } else {
    echo 
    '<body'.$bs_class;
    }


    Die Änderungen am Stylesheet dann entsprechend vornehmen - also die Klassen anlegen.

    Das


    $bs_no    
    = array(1,2);


    Musst du dann an die Anzahl deiner Hintergrundbilder anpassen und dann entsprechend dafür auch die Stylesheetklassen anlegen (das System ist dir klar?).

    ---

    Und was deinen längeren Text anbetrifft: im Grunde hast du recht :) Aber du darfst das den Jungs nicht krumm nehmen. Wir stecken als Coder in der Materie drin und vergessen schnell mal, dass andere eben nicht so kryptisch denken, wie wir :D

    Das betrifft aber alle spezialisierten Berufsgruppen. Ich könnte dir jetzt einen Text über's Coden schreiben, bei dem du vermutlich nach dem fünften Satz geistig aussteigen würdest - das gleiche kann ich aber auch über Stoffwechselprozesse beim Hund machen ... denn das ist mein zweites Fachgebiet, bei dem ich wahrscheinlich jeden hier geistig überfordern würde :D

    Also: die meinen das nicht böse, die wollen nur spielen :)

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #8 am: 22. März 2014, 16:28:40
     :-)

    ... war ja auch nicht böse gemeint.

    Aber wenn man halt über etwas sitzt und es einfach nicht klappen will, da sind solche "Gute Tipps" Posts nicht sonderlich hilfreich  ;-)

    Werde deinen Code nachher gleich mal probieren! Hoffe es klappt - um 20.00 Uhr ist Re-Opening... wäre prima wenn's klappen würde.

    Nochmals danke.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Body background Wechsel bei reload via php ?
    Antwort #9 am: 22. März 2014, 17:47:06
    So wie es wolkenkrieger geschrieben hat ist es zwar auch richtig , aber technisch gesehen ist es so besser:

    Suche:

    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    echo '<body onload="resize();"> ';
    } else {
    echo '<body>';
    }
     

    Ersetze:

    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    echo '<body onload="resize();"> ';
    } else {
    $bs_no    = array(1,2);
    $bs_class = ' class="background_switch' . $bs_no[rand() % count($bs_no)] . '"';
    echo '<body'.$bs_class.'>';
    }
     
    Füge in der stylesheet.css ganz unten ein:

    Code: CSS  [Auswählen]
    .background_switch1{
      background-image: url(img/bodybg/bild-01.jpg) !important;
    }
    .background_switch2{
      background-image: url(img/bodybg/bild-02.jpg) !important;
    }
     

    Gruß

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #10 am: 22. März 2014, 18:19:13
    Du kannst natürlich auch sowas Wildes einbauen:

    Suche
    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    echo '<body onload="resize();"> ';
    } else {
    echo '<body>';
    }
     

    Ersetze mit
    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    echo '<body onload="resize();"> ';
    } else {
    $bg_img_dir = CURRENT_TEMPLATE.'/img/background_images';
    $bg_images = scandir($bg_img_dir);
    echo '<body style="background-image: url('.CURRENT_TEMPLATE.'/img/background_images/'.$bg_images[array_rand($bg_images)].') !important;">';
    }
     

    Bedingung:

    in deinem Templateverzeichnis muss im Verzeichnis "img" ein weiteres Verzeichnis mit Namen "background_images" vorhanden sein, in dem deine Hintergrundbilder abgelegt sind. Und es dürfen dort ausschließlich nur Bilddateien drin liegen (es wird nicht abgeprüft, ob es auch so ist!).

    Hat den Vorteil, dass du den Code nicht mehr anfassen musst, wenn du neue Hintergrundbilder einfügst, welche wegnimmst oder ersetzt. Und du sparst dir die CSS-Klassen.

    Ich habe das jetzt on-the-fly gemacht und NICHT getestet.

    Eventuell kann unser Haarspalter (is'n Scherz!) web0null das mal gegenchecken.

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #11 am: 22. März 2014, 18:39:09
    @web0null: funktionierit tadellos - vielen DANK !!  :-B

    @wolkenkrieger: Deines hat sich praktischer angehört, hab's versucht, klappt aber nicht. Zeigt gar kein Hintergrundbild an. Habe natürlich dein "background-images" durch mein "bodybg" ersetzt... !!

    Wäre natürlich super, wenn das auch klappen würde, dann spart man sich in der Tat jedes Mal die Arbeit die header und stylesheet anzufassen...

    Aber Super !!!  :cheers1:

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #12 am: 22. März 2014, 19:03:48
    So ... nun aber am Testshop getestet :D

    Code: PHP  [Auswählen]
    <?php
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
        echo '<body onload="resize();"> ';
    } else {
        $bg_img_dir = DIR_FS_DOCUMENT_ROOT.'/templates/'.CURRENT_TEMPLATE.'/img/background_images/';
        $bg_images = array_diff(scandir($bg_img_dir), array('..', '.'));
        echo '<body style="background-image: url(templates/'.CURRENT_TEMPLATE.'/img/background_images/'.$bg_images[array_rand($bg_images)].') !important;">';
    }
     

    Du müsstest den Inline-Style halt noch anpassen, damit das Hintergrundbild zentriert wird oder eben so, wie du es brauchst :)

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #13 am: 22. März 2014, 19:09:37
     :worship:

    Funzt !!!!

    Inlines hatte ich eh schon in den CSS definiert!!

    Sehr geil, vielen Dank !!!!!

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #14 am: 22. März 2014, 19:15:58
    10 Antworten
    6470 Aufrufe
    09. Mai 2012, 04:07:01 von nusskiller
    3 Antworten
    2892 Aufrufe
    07. Juli 2012, 18:26:57 von galadi
    8 Antworten
    2099 Aufrufe
    28. Oktober 2020, 19:26:45 von Tomcraft
    0 Antworten
    497 Aufrufe
    18. Oktober 2022, 20:06:31 von Q
               
    anything