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 ?

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Body background Wechsel bei reload via php ?
    Antwort #15 am: 22. März 2014, 19:57:11
    Ok dann will ich mal wieder "Haarspalten" und gegenchecken :-PP

    @wolkenkrieger,
    es ist jedenfalls eine gute und auch eine dynamische Lösung, weil man einfach weitere Bilder in den Ordner laden kann und man sich nicht darum kümmern muss.

    So jetzt die Haarspalterei: :-D
    Besser als scandir() ist hier glob(), weil man die "." und ".." nicht abfangen muss.

    So und jetzt noch eine Verbesserung, damit nicht mehrmals gleiche Bilder hintereinander angezeigt werden, weil "rand" das selbe Ergebnis bringt wie vorher.

    Code: PHP  [Auswählen]
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
      echo '<body onload="resize();"> ';
    } else {
      $buffer   = 0;
      $bgImages = glob('templates/'.CURRENT_TEMPLATE.'/img/bodybg/*');
      while ($buffer++ < 50) {
        if (($key = array_rand($bgImages)) != $_SESSION['lastImgKey']) {
          break;
        }
      }
      $_SESSION['lastImgKey'] = $key;
      echo '<body style="background-image: url('.$bgImages[$key].') !important;">';
    }
     

    Gruß

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #16 am: 22. März 2014, 20:56:42
    Nette Lösung :)

    Meine ist aber viel viel cooler, weil er mit scandir() auch serverfremde Hintergrundbilder einbinden kann und mit glob() eben nicht.  :lol1:

    Nee ... mal Spaß beiseite: macht schon Sinn deine Lösung :D

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #17 am: 22. März 2014, 21:28:44
    Nun muss ich auch mal klugscheißen.

    In der aktuellen Version von web0null existiert nun aber ein inline-style, welcher irgendwo ein bisschen bäh ist.

    Gruß
    Ronny

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #18 am: 22. März 2014, 21:30:09
    Spielverderber :)

    Ich hab jetzt hämisch auf die Rückmeldung von newbee gewartet, um dann genüsslich Haarspalten zu können  :-PP

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Body background Wechsel bei reload via php ?
    Antwort #19 am: 23. März 2014, 04:16:25
    Zitat
    Nun muss ich auch mal klugscheißen.
    In der aktuellen Version von web0null existiert nun aber ein inline-style, welcher irgendwo ein bisschen bäh ist.

    Also da muss ich mich jetzt natürlich auch nochmal melden. :->

    1. würde ich sagen  :horseshit: auf bäh wenn ich dafür nicht mehr im Core herumdoktoren muss wenn ich Bilder ändern/hinzufügen muss/will/kann.

    2. Der "Mist" (is'n Scherz! wolkenkrieger) mit den Inline-Style ist ja nicht von mir, sondern von unserem  wolkenkrieger aus Beitrag #10 :whistle:.
    Zu seiner Verteidigung schrieb er aber glaube ich auch den Teil mit:
    Zitat
    Du kannst natürlich auch sowas Wildes einbauen:

    Ich hab das dann nur noch verfeinert, weil newbee79 in Beitrag #11 schrieb dass es ihm besser gefallen würde.

    Aber die alleinige schuld, hat ganz klar nur unser wolkenkrieger :-PP.

    Dafür gibt es jetzt noch eine 3. Version, die Dynamisch ist und kein Inline-Style benutzt.

    Suche:
    Code: PHP  [Auswählen]
    </head>

    Ersetze:

    Code: PHP  [Auswählen]
    <?php
    if (!strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
    $bgImages = glob('templates/'.CURRENT_TEMPLATE.'/img/bodybg/*');
      while ($buffer++ < 50) {
        if (($key = array_rand($bgImages)) != $_SESSION['lastImgKey']) {
          break;
        }
      }
      $_SESSION['lastImgKey'] = $key;
    ?>
    <style>
    .background_switch {
      background-image: url(<?php echo $bgImages[$key]; ?>) !important;
    }
    </style>
    <?php } ?>
    </head>

    Suche:
    Code: PHP  [Auswählen]
    echo '<body>';

    Ersetze:

    Code: PHP  [Auswählen]
    echo '<body class="background_switch">';

    Die "un-bäh-este" Lösung ist immer noch meine 1., aber wenn man die Bilder öfter tauschen will, dann sind die anderen eindeutig besser.

    So das war es aber jetzt, mit den Vorschlägen.

    Gruß

    wolkenkrieger

    • Mitglied
    • Beiträge: 181
    Re: Body background Wechsel bei reload via php ?
    Antwort #20 am: 23. März 2014, 11:49:43
    btw. Die Lösung, die wir nun so dramatisch und unter Beweislegung unserer Skills (@noRiddle scnr :D) erarbeitet haben, hat neben der Dynamic und dem Coolnessfaktor noch einen netten Nebeneffekt: sie bringt Pluspunkte beim PageSpeed-Test.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.991
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #21 am: 23. März 2014, 15:11:59
    Muß ich deine Anspielung in Klammern verstehen ?

    woeppel

    • Mitglied
    • Beiträge: 224
    Re: Body background Wechsel bei reload via php ?
    Antwort #22 am: 17. April 2015, 17:54:51
    Ich habe den Vorschlag von Wolkenkrieger übernommen und läuft wunderbar.

    Jedoch möchte ich, dass die Hintergrundbilder ab 768px Ansicht (Verwende Responsive Template von Wolkenkraft ) nicht mehr geladen werden. Das heißt bei mobilen Geräten sollen die Hintergrundbilder nicht mehr geladen werden.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.991
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #23 am: 17. April 2015, 18:01:19
    Dann benutze bitte mal die Suchmaschine deines Vertrauens und suche nach "css media queries".

    Gruß,
    noRiddle

    woeppel

    • Mitglied
    • Beiträge: 224
    Re: Body background Wechsel bei reload via php ?
    Antwort #24 am: 17. April 2015, 18:51:47
    Ja, das habe ich schon gemacht. Nur was muß ich in die header.php reinschreiben, dass die @media genommen werden?

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #25 am: 17. April 2015, 19:42:00
    Hallo woeppel

    Wie sieht der Code in deiner 'includes/header.php' aus, kannst Du den mal posten.

    Gruss
    Hanspeter

    woeppel

    • Mitglied
    • Beiträge: 224
    Re: Body background Wechsel bei reload via php ?
    Antwort #26 am: 17. April 2015, 21:07:24
    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;">';
    }; ?>
    <?php

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #27 am: 17. April 2015, 21:35:28
    Hallo woeppel

    Ersetze den von dir geposteten Code mit folgendem Code und entferne den End-Tag '</head>' der oberhalb des von dir geposteten Cod's steht.
    Code: PHP  [Auswählen]
    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) {
        echo '</head>' . "\n" .
             '<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 '</head>' . "\n" .
             '<style type="text/css">' . "\n" .
             '  @media (min-width: 768px) {' . "\n" .
             '    #load-bg-img {' . "\n" .
             '      background-image: url(templates/'.CURRENT_TEMPLATE.'/img/background_images/'.$bg_images[array_rand($bg_images)].') !important;' . "\n" .
             '    }' . "\n" .
             '  }' . "\n" .
             '</style>' . "\n" .
             '<body id="load-bg-img"> ';
    }
    ?>
    <?php
     

    PS:
    Diese etwas aufwändige Lösung ist notwendig, weil es In CSS3 nicht erlaubt ist '@media' in Inline-Style's zu verwenden, ich hoffe sie funktioniert denn ich habe sie nicht getestet.

    Gruss
    Hanspeter

    woeppel

    • Mitglied
    • Beiträge: 224
    Re: Body background Wechsel bei reload via php ?
    Antwort #28 am: 17. April 2015, 22:12:53
    Hallo Hanspeter,

    das klappt leider nicht.

    Das passiert dann: Hintergrundbilder werden nicht gezeigt.

    Scriptanzeige oben (Bildschirm):

    if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) { echo '' . "\n" . ' '; } else { $bg_img_dir = DIR_FS_DOCUMENT_ROOT.'/templates/'.CURRENT_TEMPLATE.'/img/background_images/'; $bg_images = array_diff(scandir($bg_img_dir), array('..', '.')); echo '' . "\n" . '' . "\n" . ' '; } ?>

    Gruss
    Markus

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Body background Wechsel bei reload via php ?
    Antwort #29 am: 17. April 2015, 22:38:24
    Hallo Markus

    Also ich denke das etwas mit '<?php' und/oder '?>' nicht stimmt, poste mal den ganzen Code des Skripts, aber bette in bitte php-Tags ein.

    Gruss
    Hanspeter
    10 Antworten
    6471 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