Fork me on GitHub

Rapport de message :*
 

Re: Image plus grande dans module aléatoire

Titre du sujet : Re: Image plus grande dans module aléatoire
par blueteen sur 02/12/2005 18:00:36

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=0i<numImagesi++)
{
  
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.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

15 Personne(s) en ligne (9 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 15 | Plus ...