Alternative zu Snippet "Zufällige Bilder im Header"

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
CarstenF
Mitglied
Beiträge: 37
Registriert: 07.01.2008 20:17
Kontaktdaten:

Alternative zu Snippet "Zufällige Bilder im Header"

Beitrag von CarstenF »

Guten morgen,

nach kurzer netter Vor-PM von Dr. Death zum Thema (ursprünglich als Snippet-Ergänzung gedacht) möchte ich mein Posting gerne hier wiederholen:

Ich beschäftige mich gerade mit zufälligen Bildern im Header, wie auf
http://www.phpbb.de/viewtopic.php?t=162961 bzw.
http://www.phpbb.com/kb/article/adding- ... ader-image
beschrieben.

Die zwei kleinen Nachteile der Methode sind, dass man die core Datei includes/functions.php ändern muss, und dies bei einer Änderung der Anzahl der Bilder auch immer wieder tun muss.

Eine recht elegante Alternative, die mit Änderungen an der styles/.../template/overall_header.html auskommt (oder sogar ganz ohne (?), je nach dem wo {SITE_LOGO_IMG} herkommt), ist z.B. unter
http://www.alistapart.com/articles/randomizer/ oder
http://ma.tt/scripts/randomimage/
beschrieben.

Diese Technik kann man noch verkürzen - mein Favorit ist der so entstehende Zweizeiler (für PHP ab 4.2):

Code: Alles auswählen

<?php

// Grab all desired file names from the proper folder.
$BilderNamen=glob("./MyImage*.png");

// Redirect to one of them randomly.
header('Location: '.$BilderNamen[mt_rand(0, count($BilderNamen)-1)]);
?>
Hier die Antwort von Dr. Death:

Danke für Deine Info,

aber der Befehl "glob" kann in phpBB nicht verwendet werden, da er in manchen Filesystemen nicht korrekt funktioniert und erst ab PHP 4.3 verfügbar ist.

Siehe auch: http://de.php.net/manual/en/function.glob.php

Zusätzlich sollten alle Zugriffe auf Filesystem (wenn möglich) aus performance Gründen vermieden werden.
Wenn bei jedem Seitenaufruf ein "glob" oder ein "fopen()" alle möglichen Bilder "abgrasen" muss, kann es einen stark besuchten Server belasten.

Daher ist es an dieser Stelle besser auf bewusst vorhandene Bilder zuzugreifen.

Du kannst aber gerne dazu ein Thema im "Coding" oder "Bastelstube" Forum posten.... dies per PN zu diskutieren halte ich nicht für sinnvoll ;-)
Ok... das mit dem glob() ist natürlich einleuchtend, könnte man notfalls mit opendir() usw. vermeiden, aber kennt jemand eine (einfache) Möglichkeit, sowas zu cachen? Ideal wäre ohne DB-Zugriff... :wink:
Nur bekannte Dateinamen zu verwenden ist aber sicherlich die einfachste und schnellste Lösung, sogar in nur einer einzigen Zeile: :D

Code: Alles auswählen

// Passe die 20 an die tatsächliche Anzahl der Bilder an.
header("Location: ./MyImage-".mt_rand(1, 20).".png");    // ungetestet...
Noch eine Frage: Was haltet ihr an dieser Stelle von der zweiten Zeile, redirection auf das eigentliche Bild?
Für mein Eindruck eine elegante Alternative zum Zurückgeben des Bildes durch das Script selbst, aber sieht da von Euch jemand eventuelle Nebenwirkungen oder Folgeprobleme?

Herzlichen Dank!
Viele Grüße,
Carsten
Cafu - die open-source Spiele- und Grafik-Engine für multiplayer, cross-platform, real-time 3D Action
Benutzeravatar
igorw
Mitglied
Beiträge: 107
Registriert: 02.08.2008 13:04
Wohnort: Winterthur

Re: Alternative zu Snippet "Zufällige Bilder im Header"

Beitrag von igorw »

CarstenF hat geschrieben:Ok... das mit dem glob() ist natürlich einleuchtend, könnte man notfalls mit opendir() usw. vermeiden, aber kennt jemand eine (einfache) Möglichkeit, sowas zu cachen? Ideal wäre ohne DB-Zugriff... :wink:
Klar, phpBB3 bietet ein starkes caching system. API dokumentation ist zu finden unter phpBB Wiki: Cache. Hier ist ein beispiel für die verwendung aus install/install_update.php.

Code: Alles auswählen

                // Get current and latest version
                if (($latest_version = $cache->get('_version_info')) === false)
                {
                        $this->latest_version = $this->get_file('version_info');
                        $cache->put('_version_info', $this->latest_version);
                }
                else
                {
                        $this->latest_version = $latest_version;
                }
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Re: Alternative zu Snippet "Zufällige Bilder im Header"

Beitrag von Boecki91 »

Code: Alles auswählen

                if (($header_img = $cache->get('header_img')) === false)
                {
                        $this->header_img = select_header_img();
                        // Every 10 min a new header image, 10*60 Sec
                        $cache->put('header_img', $this->header_img, 600);
                }
                else
                {
                        $this->header_img = $header_img;
                }
Sollte dann so alles sein, nur die select_header_img() darfst du noch schreiben ;)
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
CarstenF
Mitglied
Beiträge: 37
Registriert: 07.01.2008 20:17
Kontaktdaten:

Re: Alternative zu Snippet "Zufällige Bilder im Header"

Beitrag von CarstenF »

Toll!
Herzlichen Dank Euch beiden - wieder was dazugelernt! :geek: :grin:
Viele Grüße,
Carsten
Cafu - die open-source Spiele- und Grafik-Engine für multiplayer, cross-platform, real-time 3D Action
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“