Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
- Links zu: Aktiven | Unbeantworteten
#1 01. Juli 2013 14:57
- chrissy-dizzy
- arbeitet mit CMSMS
- Ort: Bergisches Land
- Registriert: 14. Dezember 2010
- Beiträge: 208
- Webseite
Re:
Welche Möglichkeit gibt es, dem body bei jedem Aufruf ein anderes Hintergrundbild zuzuordnen (aus einem Pool von 5 Bildern)?
Danke für eure Tipps!
Offline
#2 01. Juli 2013 19:31
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
Zum Beispiel so:
{assign var='background_images' value='uploads/images/random/*.*'|glob}
{capture assign='equation'}rand(0,{$background_images|@count}-1){/capture}
{math equation=$equation assign='randomimage'}
{if !empty($background_images)}
{assign var="newimage" value=$background_images.$randomimage}
{/if}
<body style="background-image:url({$newimage|default:'uploads/images/random/fallback.jpg'});">Wobei du natürlich deinen Pfad zu den Bildern anpassen musst.
value='uploads/images/random/
und dein: fallback.jpg als Fallback eben.
Offline
#3 02. Juli 2013 17:57
- chrissy-dizzy
- arbeitet mit CMSMS
- Ort: Bergisches Land
- Registriert: 14. Dezember 2010
- Beiträge: 208
- Webseite
Re:
Danke - ich werde es probieren und mich melden!
Offline
#4 08. Oktober 2013 21:53
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
genau so etwas suche ich gerade ... wo und wie schreibe ich das hin.
Das Hintergrundbild wird bei mir als seperates div am Ende eingebunden:
.........
<div id="bg">
<img src="uploads/images/bg-01.jpg" alt="">
</div>
</body>
</html>
Offline
#5 09. Oktober 2013 09:56
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
In deinem Fall so:
{assign var='background_images' value='uploads/images/random/*.*'|glob}
{capture assign='equation'}rand(0,{$background_images|@count}-1){/capture}
{math equation=$equation assign='randomimage'}
{if !empty($background_images)}
{assign var="newimage" value=$background_images.$randomimage}
{/if}
<div id="bg">
<img src="{$newimage|default:'uploads/images/random/fallback.jpg'}" alt="">
</div>Pfade anpassen. Fertig.
Offline
#6 09. Oktober 2013 10:14
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
so, ich habs eingebaut - allerdings erscheint nur das fallback.img:
...
{cms_stylesheet}
{assign var='background_images' value='/uploads/images/random/*.*'|glob}
{capture assign='equation'}rand(0,{$background_images|@count}-1){/capture}
{math equation=$equation assign='randomimage'}
{if !empty($background_images)}
{assign var="newimage" value=$background_images.$randomimage}
{/if}
</head>
....
<div id="bg">
<img src="{$newimage|default:'uploads/images/random/fallback.jpg'}" alt="">
</div>
Offline
#7 09. Oktober 2013 10:17
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
Nein. In den HEAD kannst du es nicht einbauen, da der BODY vor dem Head verarbeitet wird, ist das Bild noch nicht bekannt.
Setze es dorthin, wo du die Ausgabe haben willst. In einem Template z.B.
Offline
#8 09. Oktober 2013 10:29
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
jetzt habe ich es am Anfang vom body - geht nicht, was mache ich falsch
<body>
{assign var='background_images' value='/uploads/images/random/*.*'|glob}
{capture assign='equation'}rand(0,{$background_images|@count}-1){/capture}
{math equation=$equation assign='randomimage'}
{if !empty($background_images)}
{assign var="newimage" value=$background_images.$randomimage}
{/if}
<div id="pagewrap">
Offline
#9 09. Oktober 2013 10:38
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
Hab es grade mal unter CMSMS 1.11.7 getestet.
An's Ende der Template gesetzt - funktioniert einwandfrei.
Kopfkratz...
Offline
#10 09. Oktober 2013 10:51
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
habs auch mal vor body-Ende eingefügt, geht nicht ... ich poste mal den Link - Seite ist im Rohbau 
Beitrag geändert von noober (09. Oktober 2013 19:30)
Offline
#11 09. Oktober 2013 11:52
- NaN
- Moderator

- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.058
Re:
Sind die Bilder auch im Verzeichnis "/uploads/images/random/" ?
Ist die Funktion glob() bei Dir aktiviert? (ist eine PHP-Funktion, die je nach Hoster auch deaktiviert sein kann. Stichwort phpinfo(); )
Lass Dir mal anzeigen, was für Bilder gefunden werden:
{assign var='background_images' value='/uploads/images/random/*.*'|glob}
{$background_images|print_r}Und zu guter Letzt: {$background_images} ist ein numerisches Array. D.h. diese Zeile:
{assign var="newimage" value=$background_images.$randomimage}Müsste eigentlich so lauten:
{assign var="newimage" value=$background_images[$randomimage]}Und das mit dem Random müsste auch einfacher gehen:
{$background_images="uploads/images/random/*.*"|glob}
{append var='background_images' value='uploads/images/random/fallback.jpg'}
{$random_index=$background_images|@array_rand}
<body style="background-image:url({$background_images[$random_index]});">Module: GBFilePicker, AdvancedContent, FEUMailer
Plugins: AjaxTools, XajaxTools
Sicherheit: Beispiel .htaccess-Datei
Offline
#12 09. Oktober 2013 13:15
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
Die Bilder sind im richtigen Ordner.
System Info zeigt:
PHP „register_globals“ (register_globals) Erfolgreich abgeschlossen Aus (Nein)
Sind das die benötigten globals, wenn ja und sie nicht aktiviert sind, wie kann ich sie aktivieren?
Funktionieren tut das Ganze noch nicht.
Offline
#13 09. Oktober 2013 13:42
- nockenfell
- Moderator

- Ort: Lenzburg, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.807
- Webseite
Re:
glob != register_globals
glob ist eine PHP Funktion:
http://php.net/manual/de/function.glob.php
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions
Offline
#14 09. Oktober 2013 13:52
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
phpinfo() würde ganz oben im ersten Block in etwa so etwas zeigen:
Registered PHP Streams php, file, glob, data, http, ftp, zip, compress.zlib, phar ...
Offline
#15 09. Oktober 2013 13:57
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
Falls du nicht weißt wie man da ran kommt.
Erstelle dir im z.B. Root deiner Installation eine Datei mit dem Inhalt:
<?php
echo phpinfo();
?>Und rufe dann die Datei im Browser auf.
Wenn du sie nicht mehr brauscht, die Datei wieder löschen.
Offline
#16 09. Oktober 2013 14:13
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
ah, wieder was gelernt mit der php info ... danke
Registered PHP Streams zeigt u.a. glob
Offline
#17 09. Oktober 2013 15:27
- czarnowski
- arbeitet mit CMSMS
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re:
Man sollte alle Fileaktionen vermeiden wenn möglich. Glob grast immer das ganze angegebene Verzeichnis ab pro Besucher und das für jede Seite wo es eingesetzt wird.
Eine Vielzahl von Aktionen senkt also die Performance weil die Serverlast höher wird.
Auch die pro Eintrag enthaltene Pfad ist überflüssig - den definiert man einfach einmal beim Einsatz.
Hat man nur 5 Images oder ein paar mehr definiert man diese schlicht und ergreifend und verwendet diese.
Beispiel:
[== Smarty ==]
{assign var="randompicture" value=array('bild1.jpg','bild2.jpg','bild3.jpg','bild4.jpg','bild5.jpg')}
<body style="background-image:url(uploads/images/random/{$randompicture[array_rand($randompicture)]});">Offline
#18 09. Oktober 2013 16:46
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
auch das geht nicht, wobei der Fehler beim Einbau liegen kann, es wird gar kein Bild angezeigt:
<body>
.....
{assign var="randompicture" value=array('bg-01.jpg','bg-02.jpg','bg-03.jpg','bg-04.jpg')}
<div id="bg">
<img src="url(uploads/images/random/{$randompicture[array_rand($randompicture)]});">
</div>
....
Offline
#19 09. Oktober 2013 17:51
- czarnowski
- arbeitet mit CMSMS
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re:
Getestet mit 1.11.9 und läuft.
Allerdings ist
<img src="url(uploads/images/random/{$randompicture[array_rand($randompicture)]});">
Müll - was soll das denn sein
es ist kein style und es ist keine imagelink
Offline
#20 09. Oktober 2013 18:19
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
sorry, aber wie muss das denn richtig sein? .... wie oben erwähnt ich bin Grafiker und KEIN Programmierer 
Offline
#21 09. Oktober 2013 18:39
- czarnowski
- arbeitet mit CMSMS
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re:
Ok
http://www.w3schools.com/html/html_images.asp
da steht grundsätzliches drin.
Aber so wird das Image angezeigt und ist kein Hintergrund.
<div id="bg" style="background-image:url(uploads/images/random/{$randompicture[array_rand($randompicture)]});">
</div>
Näheres unter http://www.w3schools.com/css/css_background.asp
Offline
#22 09. Oktober 2013 19:22
- mike-r
- CMSMS-Profi

- Registriert: 21. Dezember 2010
- Beiträge: 898
- Webseite
Re:
<img src="url(uploads/images/random/{$randompicture[array_rand($randompicture)]});">
Müll - was soll das denn sein
Du könntest Dir mal den Link anschauen bevor Du hier so einen "Müll" verzapfst.
Beitrag geändert von mike-r (09. Oktober 2013 19:22)
Unablässige Tools für's Webdevelopement/ Fehlerfindung: CSS Validierungsservice, Bildschirmlineal, Firebug, Tidy, Deutsche CSS-Referenz
Offline
#23 09. Oktober 2013 19:29
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
so, hab jetzt nochmal Klenkes Version versucht, diese funktioniert jetzt.
@czarnowski: die Einbindung des Hintergrundbildes wollte ich schon ganz gerne als img machen wie es schon angelegt war, die Methode scheint mir in den meisten Browsern zu funktionieren.
http://css-tricks.com/perfect-full-page … und-image/
CSS-Only Technique #2
Vielen Dank nochmal für Eure Hilfe.
Offline
#24 10. Oktober 2013 10:36
- czarnowski
- arbeitet mit CMSMS
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re:
Ok dann ist eines CSS Steuerung.
Dein Problem - hast immer noch nicht wirklich Ahnung wie man einen Imagelink setzt obwohl es hier im Thread Beispiele gibt.
Hier die Kurzform
[== Smarty ==]
{$randompicture=array('bild1.jpg','bild2.jpg','bild3.jpg','bild4.jpg','bild5.jpg')}
<body>
<div id="bg">
<img src="uploads/images/random/{$randompicture[array_rand($randompicture)]}" alt="">
</div>Getestet mit NCleanBlue unter aktueller Version und Zugabe der CSS von css-tricks
Nochmals
Glob hier nicht anzuraten - bereits erläutert.
Klenkes Code total umständlich und wegen capture nicht anzuraten.
Man macht für keine simple Zuweisung kein Capture. Der bedingt unter Smarty immer die Anlage eines Buffers, der zudem mit eval gefüllt wird und das kostet richtig Zeit.
Das Problem dabei - bei einem Einzelaufruf wird man diese Zeit nicht bemerken. Bei Benchmarks ist das aber deutlich zu ermitteln.
Und generell ist diese Art der Hintergrundbildeinbindung immer gefährlich.
Die Anleitung von css-tricks ist lediglich rudimentär.
Man füllt via css auch eine HD Schirm mit einem 100x100 Pixel Bild das sieht dementsprechend aus.
Auf der anderen Seite versaut einem ein großes Bild bei kleinen Empfangsmonitoren den Pagespeed.
Das kann also zum Besucherkiller werden.
Lediglich die Jquery Version geht darauf ein.
Offline
#25 10. Oktober 2013 10:49
- noober
- arbeitet mit CMSMS

- Registriert: 26. April 2011
- Beiträge: 152
Re:
danke für das Update, ich werde es heute Nachmittag diese Methode nochmal versuchen.
Die Darstellung des Hintergrundbildes wie in CSS Tricks beschrieben sieht auf allen Bildschirmen mit denen ich teste bei einem Anlageformat von 1024x683 auch auf großen Monitoren mit hoher Auflösung (zB 1920x1080 bis hin zum Tablet) gut aus. Wenn ich von Programmierung nichts verstehe von Bildern verstehe ich was 
Da es bei dieser Seite um eine Kneipe geht, also Atmosphäre und so spielt der Page Speed nicht die entscheidende Rolle, für die Seite gibt es ein mobile Version mit eigenen Templates und Stylesheets natürlich ohne die großen Bilder.
Offline