Bildrotation des Hintergrundbildes

Gesperrt
Andreas
Beiträge: 254
Registriert: So 16. Nov 2003, 14:48
Wohnort: Reichshof
Kontaktdaten:

Bildrotation des Hintergrundbildes

Beitrag von Andreas »

Hallo zusammen,

ist es möglich bei jedem Aufruf einer Website (in diesem Fall die Startseite) ein anderes Hintergrundbild anzeigen zu lassen? Eine Art Zufallsgenerator für Hintergrundbilder...

Per animiertem Gif wäre die Datei zu groß und es wäre auch zu unflexibel.

Hat jemand eine Idee?

Gruß
Andreas
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

ein ganz einfaches modul reicht da - je nach dem - schon völlig aus. bildpfade in ein array schreiben und zufällig einen dieser pfad-strings ausgeben.

wenn man das ganze dann natürlich noch komfortabel pflegen können will, wird's entsprechend ein bisschen komplizierter.

ich hoffe, das hilft dir vorerst weiter. ausserdem würde ich mal die suche bemühen. ich glaube mal etwas entsprechendes gelesen zu haben.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Andreas
Beiträge: 254
Registriert: So 16. Nov 2003, 14:48
Wohnort: Reichshof
Kontaktdaten:

Beitrag von Andreas »

Danke für die schnelle Antwort.

ich hatte schon im Forum gesucht, aber nichts wirklich passendes gefunden...

Als Ansatz dachte ich ggf. folgendes Modul (für das Zufallsbild):

INPUT

Code: Alles auswählen

echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">";
echo "
   	<tr>
        	<td>
        	Image-Directory:
       		</td>
            	<td>
          	<input size=20 type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\">
		</td>
	</tr>
        <tr>
        	<td>
        	Image-Dateieendung (z.B. .jpg;.gif):
       		</td>
            	<td>
          	<input size=20 type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\">
		</td>
	</tr>
</table>"; 
OUTPUT

Code: Alles auswählen

<?
$imagedir="CMS_VALUE[1]";
$imagetypes=explode(";","CMS_VALUE[2]");

function is_image($filename,$typearray) {
  reset($typearray);
  while($val=each($typearray)) {
     if (strstr($filename,$val[value])) {
       return true;
     }
  }
}
$handle=opendir($imagedir);
$n=0;
$random_filearray=Array();
while (($file = readdir($handle))) {
        if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
             $random_filearray[]=$file;
        }
}
shuffle ($random_filearray);
$random_image = array_pop ($random_filearray);
echo "<img src=\"$imagedir/$random_image\" border=\"0\" width=\"800\" height=\"600\" >";
?>
Aber wie binde ich es so ein, dass ich es für das Hintergrundbild (z.B. im <div id="content"></div>) nutzen kann?

Irgendwie stehe ich auf dem Schlauch...
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

nun, du lässt das modul das div (respektive den ersten teil davon) ausgeben mit dem hintergrundbild als style. das schliessen des divs machst du dann im layout.

ausgabe durch modul:

Code: Alles auswählen

<div style="background-image:url(meinBild.jpg);">
integration in layout:

Code: Alles auswählen

CMS_CONTAINER[X]</div>
das layout ist dann natürlich alleine nicht mehr xhtml-valide. aber das spielt keine rolle. die ausgabe ist dann aber wieder richtig.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Andreas
Beiträge: 254
Registriert: So 16. Nov 2003, 14:48
Wohnort: Reichshof
Kontaktdaten:

Beitrag von Andreas »

Hallo Kummer,

vielen Dank!!!!
Ich werde das mal so testen und Bescheid geben...

Dieses Forum ist wirklich klasse!
Es ist toll, wie einem hier immer wieder geholfen wird.

Danke!

Gruß
Andreas
kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip »

Hallo,

ich habe mal sowas entwickelt:

Input:

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Illustration
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Selected img directory
$cms_dirname = "CMS_VALUE[1]";
#Selected img
$cms_filename = "CMS_VALUE[2]";

if ($cms_dirname == '' || $cms_dirname == '0') {
	$cms_dirname = 'bilder/';
}

#Get paths
$sql = "SELECT
	htmlpath, frontendpath
	FROM
	".$cfg["tab"]["clients"]." 
	WHERE
	idclient = ".$client." ";

$db->query($sql);

if ($db->next_record()) {
	$htmlpath = $db->f('htmlpath');
	$frontendpath = $db->f('frontendpath');
}

#Choose image folder
echo '<table cellpadding="0" cellspacing="0" border="0">
	<tr><td class="text_medium" style="padding:5px"></td></tr>
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Bildverzeichnis wählen").': </td></tr>
	<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[1]" style="width:200px">';

#Get upload directories
$sql = "SELECT DISTINCT
	dirname
	FROM
	".$cfg["tab"]["upl"]."
	WHERE
	idclient='$client' AND
	filetype IN ('jpeg','jpg','gif','png')
	ORDER BY
	dirname";

$db->query($sql);

$selected = false;
while ($db->next_record()) {
	$dirname = $db->f('dirname');
	if ($cms_dirname != $dirname) {
		echo '<option value="'.$dirname.'">&nbsp;'.$dirname.'</option>';
	} else {
		$selected = true;
		echo '<option value="'.$dirname.'" selected="selected">&nbsp;'.$dirname.'</option>';
	}
}

if (!$selected) {
	echo '<option value="0" selected="selected">'.i18n("Bitte wählen").'</option>';
} else {
	echo '<option value="0">'.i18n("Bitte wählen").'</option>';
}

#Choose image file
echo '</select>';
echo '</td></tr>';
echo '</table>';
?><?php 
Output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Illustration
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Selected img directory
$cms_dirname = "CMS_VALUE[1]";
$fileArray   = array();
$htmlpath = $cfgClient[$client]['path']['htmlpath'];
$uploadpath = $cfgClient[$client]['upload'];

#Default settings

#Get uploaded files
	$sql = "SELECT 
			filename
			FROM
			".$cfg["tab"]["upl"]."
			WHERE
			idclient = '$client' AND
			filetype IN ('jpeg','jpg','gif','png','swf') AND
			dirname = '$cms_dirname' 
			ORDER BY
			filename";

	$db->query($sql);

	while ($db->next_record()) {
		$fileArray[] = $db->f('filename');
	}
	$img_name = $fileArray[rand(0,count($fileArray)-1)];
	echo ' style="background-image:url('.$htmlpath.$uploadpath.$cms_dirname.$img_name.')"';

?>

Einfach in der Konfiguration den Ordner mit den Bildern angeben, danach werden alle enthaltenen Bilder rotierend bei jedem Aufruf geladen.

Der Conatiner muss aber in den Style-Parameter eines HTML Tags.


Gruß
Alex
vpanama
Beiträge: 26
Registriert: Mo 3. Dez 2007, 19:21
Kontaktdaten:

Hallo Alex

Beitrag von vpanama »

Vielen Dank für das Modul.

Könntest du mir den Weg der Einbindung auf Basis des Artikel rechts, nach folgender Struktur zeigen?
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Rotate</title>
<link rel="stylesheet" href="css/style.css" type="text/css">

</head>
<body>

<div style="width:170px;" >
<!--start:content-->
<container id="1" name="Headline" types="Content" mode="optional" default="">1</container><br />
<container id="2" name="Text" types="Content" mode="optional" default="">2</container>
<!--end:content-->
</style>
</div>
</body>
</html>
Entweder ich sehe den Link oder nichts.
Vielen Dank,
vpanama
Superholgi
Beiträge: 57
Registriert: Mo 23. Jul 2007, 12:38
Kontaktdaten:

Beitrag von Superholgi »

Der Conatiner muss aber in den Style-Parameter eines HTML Tags.
Was willst du denn wohl damit sagen? Kannst du das vielleicht für mich etwas verständlicher formulieren?

Gruß!
Holger
jdstrike
Beiträge: 52
Registriert: Di 18. Dez 2007, 14:55
Kontaktdaten:

v.4.8.3

Beitrag von jdstrike »

Servus zusammen,

ich habe meine komplette seite von 4.6 auf 4.8 rübergeschoben, bisher funktioniert auch alles. nur dieses modul will net so.

Code: Alles auswählen

<?
$imagedir="CMS_VALUE[1]";
$imagetypes=explode(";","CMS_VALUE[2]");

function is_image($filename,$typearray) {
  reset($typearray);
  while($val=each($typearray)) {
     if (strstr($filename,$val[value])) {
       return true;
     }
  }
}
$handle=opendir($imagedir);
$n=0;
$random_filearray=Array();
while (($file = readdir($handle))) {
        if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
             $random_filearray[]=$file;
        }
}
shuffle ($random_filearray);
$random_image = array_pop ($random_filearray);
echo "<img src=\"$imagedir/$random_image\" border=\"0\" width=\"800\" height=\"600\" >";
?>
der Output wird nicht akzeptiert, die ampel bleibt rot... warum???

Liebe Grüße JD
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: v.4.8.3

Beitrag von Halchteranerin »

jdstrike hat geschrieben:der Output wird nicht akzeptiert, die ampel bleibt rot... warum???
Was steht denn da, wenn du mit der Maus über die Ampel fährst?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
jdstrike
Beiträge: 52
Registriert: Di 18. Dez 2007, 14:55
Kontaktdaten:

v.4.8.3

Beitrag von jdstrike »

oh habs raus...
contenido 4.8 meckert bei short cuts
also nicht mit sondern

Code: Alles auswählen

<?php
starten.

LG JD
Gesperrt