Pour revenir un peu sur ce sujet, je viens de finaliser ce qui me génait.
A savoir, le fait qu'on devait rentrer manuellement dans le fichier de theme.html, le nombre d'images du dossier pour qu'elles soient toutes utilisées dans le diaporama.
C'est désormais chose corrigée.
Voici le code modifié à placer entre les balises HEAD du fichier theme.html
<SCRIPT LANGUAGE="JavaScript">
<!--
var dimages=new Array();
var numImages=<{$images_slideshow}>;
for (i=0; i<numImages; i++)
{
dimages[i]=new Image();
dimages[i].src="../../slideshow/image"+(i+1)+".jpg";
}
var curImage=-1;
function swapPicture()
{
if (document.images)
{
var nextImage=curImage+1;
if (nextImage>=numImages)
nextImage=0;
if (dimages[nextImage] && dimages[nextImage].complete)
{
var target=0;
if (document.images.myImage)
target=document.images.myImage;
if (document.all && document.getElementById("myImage"))
target=document.getElementById("myImage");
// make sure target is valid. It might not be valid
// if the page has not finished loading
if (target)
{
target.src=dimages[nextImage].src;
curImage=nextImage;
}
setTimeout("swapPicture()", 3000);
}
else
{
setTimeout("swapPicture()", 1000);
}
}
}
setTimeout("swapPicture()", 3000);
//-->
</SCRIPT>
On remarque l'utilisation de <{$images_slideshow}>
valeur qui était à rentrer manuellement auparavant.
Je récupère à présent cette valeur grâce à un script php inséré dans le header.php
Voici ce code :
$d="../../slideshow/"; //définition du dossier à parcourir (chemin par rapport à modules/news dans mon cas)
$type_image = 2; // Format des images à compter 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP
$cpt_images = 0; //initialise le compteur d'images
$rep = opendir($d); // Ouverture du répertoire contenant les images
while($file = readdir($rep)) //début du parcours du répertoire, tant que ce n'est pas fini
{
// Empèche de prendre les entrées . et .. du répertoire
if ($file != "." && $file != "..")
{
$infos = getimagesize($d.$file); //récupère des infos sur l'image
if($infos[2] == $type_image) // Filtre les images qui ne correspondent pas aux critères
{
$cpt_images++; // Incrémentation du compteur d'images
}
}
}
closedir($rep); // Fermeture du répertoire
$xoopsTpl->assign(array('images_slideshow' => $cpt_images)); //assigne le nombre d'image à une variable smarty
Et voici le code à coller dans un bloc personnalisé
<img src="../../slideshow/image1.jpg" name="myImage" id="myImage" />
De cette façon, si javascript est désactivé, le surfeur, verra la première image de la liste.
Dans un dossier à la racine du site, on créé un dossier "slideshow", qui contiendra les images qque l'on veut voir défiler sur le site.
Les images devront impérativement avoir des noms tels que :
image1.jpg, image2.jpg, ....., image15.jpg
Elles seront affichées dans l'ordre de numérotation.
je pense avoir tout noté.
J'en mettrai une démo sur mon site de test habituel.