Random Hintergrundbilder

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Random Hintergrundbilder

Beitrag von chris1278 »

Hallo und falls der Betreff nicht passt bitte ich das zu entschuldigen mir ist leider kein besserer eingefallen.

Zu meiner Frage: Ich verwende in Extension ja schon mal solche Befehle wie {ROOT_PATH} für das Foren Root.

Wenn ich jetzt in einer Extension folgendes Anlege:

ext/chris1278/extname/styles/prosilver/theme/images

Wobei sich im Ordner Images dann Bilder Befinden.

Um das mal kurz zu erläutern. Für ein Projekt habe ich im Internet ein kleines Snipet (Skript) gefunden wo ich für den Hintergrund (Body) wechselnde Bilder einfügen kann, sprich bei jedem Seitenaufruf ein neues Hintergrundbild per Zufall.

Wenn ich in dem Skript den Pfad so angebe:

Code: Alles auswählen

{ROOT_PATH}/ext/chris1278/extname/styles/prosilver/theme/images/bild1.jpg
dann lädt der das bi,d zwar.

Ich müsste aber diesen Teil hier {ROOT_PATH}/ext/chris1278/extname/styles/prosilver/ durch eine in geschweifte Klammern befindliche Variable ersetzen. Nur leider finde ich dazu nichts. Oder hat jemand eine Idee wie ich das umsetzen kann.

Also für das eine Projekt wäre das nicht so schlimm und ich könnte das so machen da dieses Projekt nur einen Style nutzt. Aber ich denke daran das fertige snipet hier zum download anzubieten. Daher wollte ich es direkt richtig machen.

Ich betone nochmals es geht nicht drum um die Funktion Hintergrund bilder per zufall das funktioniert. es geht bei meiner Frage um die Codierung.
Zuletzt geändert von chris1278 am 03.07.2021 19:33, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5387
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Path anweisung

Beitrag von oxpus »

Den Pfad zu deiner Extension würde ich so definieren:
$ext_path = $extension_manager->get_extension_path('chris1278/extname', true);
Wobei die Klasse "$extension_manager" als Service geladen werden sollte.
Dann kann man $ext_image_path = $ext_path . 'styles/prosilver/theme/images/' als Basis für die Bilder verwenden.

Und anstatt prosilver fest als Style dort einzubauen, kann man diesen auch durch rawurlencode($user->style['style_path']) ersetzen.
Damit würde der Pfad dann lauten:

Code: Alles auswählen

$ext_image_path = $ext_path . 'styles/' . rawurlencode($user->style['style_path']) . '/theme/images/'
Der weiteren Ausgestaltung sind damit keine Grenzen mehr gesetzt.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Path anweisung

Beitrag von chris1278 »

Ok ich habe jetzt diese ext auf den Ordner styles begrenzt. aber wo lade ich diese Befehlszeile dann. Das sieht mir eher nach einem Befehl für die listner.php aus.

Hast du da evtl. mal ne Extension im Kopf wo ich mir das mal anschauen kann falls das schon in einer anderen Extension mal umgesetzt wurde.

Aber es müsste doch schon eine Kürzel geben ähnlich wie diesem hier: {ROOT_PATH}

Welches ich für den Style Ordner einer Extension benutzen kann. Weil wenn ich ne Extension schreibe und dort style Spezifische css Anweisungen laden lasse schaut der doch auch nach style Ordner beim laden dieser Anweisungen. Mann muss ja nicht in irgendwelchen Dateien dafür die css direkt angeben.
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7869
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Path anweisung

Beitrag von Kirk »

Hi
Schau dir mal meine Extension Sitelogo responsive an, dort ist sowas in der listener definiert.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Path anweisung

Beitrag von Dr.Death »

Oder etwas wie: Beispiel ist zwar für javascript, wird dann aber in allen Extension Style Ordnern gesucht:

Code: Alles auswählen

{% INCLUDEJS '@drdeath_f1webtip/f1webtip_functions.js' %}
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Path anweisung

Beitrag von chris1278 »

Ich danke erstmal für die vielen hinweise. Werde mich jetzt erstmal dran setzen und sehen wie ich was umsetzen kann.

@dr.death

Ja das ist eigentlich klar das man js oder css so laden kann. Es geht mir aber darum diesen codeteil hier:

Code: Alles auswählen

{ROOT_PATH}/ext/chris1278/extname/styles/prosilver/theme/images/bild1.jpg
So zu schreiben das man den individuell für jeden style automatisiert. weil wenn man jetzt den styleordner anstelle prosilver sagen wir mal prodark nehmen würde, dann passt das ja nicht wenn er das weiter aus dem prosilver ordner lädt.

Ich hab das jetzt so das man verschiedene Bilder im random laden kann unabhängig welcher style aktiviert ist. Jetzt geht es daran umzusetzen das man das auf style spezifisch umschreibt.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Random Hintergrundbilder

Beitrag von chris1278 »

Also ich hab das hinbekommen zumindest was die bilder selber angeht. Es wird jetzt über das ext style verzeichnis geladen. Das hab ich dank der Vorlage von Oxpus und der Extension Vorlage von kirk hinbekommen.

Aber es gibt da noch ein Problem.

Also wenn ich ein einzelnes Hintergrund bild per Style mittels css bei der klasse html, body lade sähe der code dafür so aus:

Code: Alles auswählen

html, body {
	background: url(./images/background.jpg) no-repeat center fixed;
	color: #000;
}
Dann wird das bild schön mittig und seiten ausfüllend gesetzt und der wrap läuft im Prinzip über das bild weg. So sollte es sein.

Der Script code den ich mittels overall_header event lade ist so:

Code: Alles auswählen

<script type="text/javascript">

var a = 0;
hintergrund = new Array();
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild1.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild2.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild3.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild4.jpg"; a++;
var x = Math.floor(Math.random() * a);
document.write('<body style=" background:url('+ hintergrund[x] +')">')

</script>

Der lädt die bilder immer per zufall das passt aber, der repeatet das Bild nach unten hin also vervielfälltigt das. Das sollte nicht so sein. Leider fällt mir dazu jetzt bei dem script keine wirkliche Lösung an. wenn ich die position fixed mache beim body ist das auch nicht gut.

Hat vieleicht jemand hier eine Idee.
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: Random Hintergrundbilder

Beitrag von 69bruno »

Code: Alles auswählen

<script type="text/javascript">

var a = 0;
hintergrund = new Array();
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild1.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild2.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild3.jpg"; a++;
hintergrund[a]="{{ T_EXT_IMAGERANDOM_THEME_PATH }}/images/bild4.jpg"; a++;
var x = Math.floor(Math.random() * a);
document.write('<body style=" background:url('+ hintergrund[x] +')">')

</script>
Ohne jetzt in die js Doku geguckt zu haben...
Du definierst a als 0 und multiplizierst im random mit a. Eine Multiplikation mit 0 ist aber immer schwierig...
K A, ob js das so hinbekommt.
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Random Hintergrundbilder

Beitrag von chris1278 »

Also das script hab ich aus dem Internet gefunden und nur die entsprechenden pfade zu den Bildern angepasst.

Und das script macht auch eigentlich das was es soll. Nämlich bei jedem neuen Seitenaufruf eins der vor eingestellten Bildern als Hintergrund zu laden.

Nur die Werte stimmen nicht ganz überein weil das Bild falsch skaliert wird.
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: Random Hintergrundbilder

Beitrag von 69bruno »

was wird denn jetzt genau gemacht ? skaliert oder vervielfältigt ? :cookie:
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Antworten

Zurück zu „Extension Bastelstube“