Seite 1 von 1
Bildrotation des Hintergrundbildes
Verfasst: Fr 7. Dez 2007, 09:48
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
Verfasst: Fr 7. Dez 2007, 10:03
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.
Verfasst: Fr 7. Dez 2007, 10:18
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...
Verfasst: Fr 7. Dez 2007, 10:27
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:
integration in layout:
das layout ist dann natürlich alleine nicht mehr xhtml-valide. aber das spielt keine rolle. die ausgabe ist dann aber wieder richtig.
Verfasst: Fr 7. Dez 2007, 10:34
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
Verfasst: Fr 7. Dez 2007, 16:43
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.'"> '.$dirname.'</option>';
} else {
$selected = true;
echo '<option value="'.$dirname.'" selected="selected"> '.$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
Hallo Alex
Verfasst: Sa 12. Jan 2008, 20:01
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
Verfasst: Mi 14. Mai 2008, 07:54
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
v.4.8.3
Verfasst: Do 29. Mai 2008, 23:30
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
Re: v.4.8.3
Verfasst: Fr 30. Mai 2008, 06:21
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?
v.4.8.3
Verfasst: Fr 30. Mai 2008, 09:29
von jdstrike
oh habs raus...
contenido 4.8 meckert bei short cuts
also nicht mit
sondern
starten.
LG JD