SPIP ecureuil




Thème de ce forum :

galerie photo avec vignettes



filou
galerie photo avec vignettes
18 juillet 2008 13:52

Bonjour,

j’utilise spip 1.9 Je désire faire plusieurs galeries qui sont dans 3 rubriques différentes. Pour cela j’ai crée mes trois rubriques : galerie A, galerie B, galerie C. Dans chacune des rubriques j’ai crée 1 articles avec des photos insérés par le biais de "joindre un document".

Je souhaite utiliser cette contrib http://www.spip-contrib.net/Des-bou... et plus précisemment le 4eme cas : affichage de vignettes et d’une image de taille intermédiaire.

Mes galeries doivent etre visible dès que l’on est dans la rubrique galerie A, B ou C. (pas de lien dans les rubriques pour ouvrir un article qui contiendrai la galerie).

J’ai renommé le squelette fourni dans la contrib (album_photo_04.html) en galerie A.html que j’ai installé dans mon dossier squelettes ; j’ai aussi installé le fichier album_image.php fourni dans le .zip.

Dans la rubrique galerie A, c’est l’article id=2 qui contient la galerie de photos.

Voici le code du squelette galerie A.html avec les modifications effectuées :

<!-- album photo 4e cas : affichage de vignettes et d'une image de taille interm�diaire -->
<?php define("VIGNETTES_PAGE", 8); ?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

J’ai modifié id_article car c’est l’article 2 qui contient la galerie

<BOUCLE_principale(ARTICLES){id_article=2}>
<?php $id_article = "#ID_ARTICLE"; ?>
<title></title>

J’enleve la feuille de style pour plus de clarté j’enlève la fonction pop-up qui ne m’interesse pas

</head>
<body>

<!-- PARTIE DE SQUELETTE SPECIFIQUE DE L'ALBUM DE PHOTOS -->

<!-- calcule le nombre de photos jointes sous forme de document -->
<B_nb_images>
<BOUCLE_nb_images(DOCUMENTS){id_article}{extension==jpg|png|gif}{mode=document}>
</BOUCLE_nb_images>
   <?php $nb_images = "#TOTAL_BOUCLE"; ?>
       
<div>

<!-- affiche un lot de vignettes dont le rang de la 1�re est indiqu� par le param�tre debut_vignette -->
<div id="album-vignettes">

   <B_vignettes>
       <?php
           $debut_vignette = isset($_GET["debut_vignette"]) ? $_GET["debut_vignette"] : 0;
           $id_vignette = $debut_vignette;
       ?>
   <BOUCLE_vignettes(DOCUMENTS){id_article}{extension==jpg|png|gif}{mode=document}{debut_vignette,8}>
       <?php
           lienPage($id_article, $debut_vignette, $id_vignette, "agrandir l'image", "#LOGO_DOCUMENT");
           $id_vignette++;
       ?>
   </BOUCLE_vignettes>
   </B_vignettes>

   <!-- pagination des vignettes -->
   <div class="album-pagination">
       <?php paginationVignettes($id_article, $nb_images); ?>
   </div>

</div>

<!-- photo de taille interm�diaire -->
<div id="album-photo">

   <BOUCLE_photo(DOCUMENTS){id_article}{extension==jpg|png|gif}{mode=document}{debut_image,1}>
       <!-- affichage de la premi�re photo de la liste (par d�faut) -->
       <?php afficherImage("#URL_DOCUMENT", "#LARGEUR", "#HAUTEUR", "[(#TITRE|entites_html)]", 400, 400) ?>
       <!-- affichage de la l�gende (titre et descriptif) de la photo -->
       <dl class="album-photo-titre">
           <dt>[<strong>(#TITRE)</strong>]</dt>
           [<dd>(#DESCRIPTIF)</dd>]
       </dl>
   </BOUCLE_photo>
       
   <div class="album-pagination">
       <?php paginationImage($id_article, $nb_images); ?>
   </div>

</div>

<!-- si aucune image, on n'affiche rien -->
</B_nb_images>
aucune image
<//B_nb_images>

<div class="separateur"></div>

</div>
<!-- FIN DE LA PARTIE DE SQUELETTE SPECIFIQUE DE L'ALBUM DE PHOTOS -->


</BOUCLE_principale>

</body>
</html>

La galerie fonctionne, j’ai mes vignettes et l’image agrandie en local sur http://localhost:8888/spip.php?galerie A.

J’ai des problèmes pour afficher les liens des vignettes : Lorsque je suis dans ma galerie et que je clique sur une vignette pour avoir l’image agrandie qui lui correspond j’ai ce message " The requested URL /article.php3 was not found on this server. "

<?php
function lienPage($id_article, $vignette, $image, $titre, $texte) {
   // affiche un lien avec les param�tres en argument
   

le problème doit se situer au niveau du echo "<a href='article.php3?id_article=$id_article"; Par quoi dois-je remplacer article.php3 , ou dois-je mettre ce fichier ?

echo "<a href='article.php3?id_article=$id_article";
   echo "&debut_vignette=$vignette&debut_image=$image'";
   echo " title='" . htmlentities($titre, ENT_QUOTES) . "'>$texte</a>";
}    

function paginationVignettes($id_article, $nb_images) {
   // affiche des liens permettant d'afficher les vignettes pr�c�dentes et suivantes par lot de 10
   if ($nb_images > VIGNETTES_PAGE) {
       $debut_vignette = $_GET["debut_vignette"];
       if ($debut_vignette >= VIGNETTES_PAGE)
           lienPage($id_article, ($debut_vignette-VIGNETTES_PAGE), ($debut_vignette-VIGNETTES_PAGE), "vignettes pr�c�dentes", "<<");
       else echo "<<";
       echo " vignettes ";
       if ($debut_vignette < $nb_images-VIGNETTES_PAGE)
           lienPage($id_article, ($debut_vignette+VIGNETTES_PAGE), ($debut_vignette+VIGNETTES_PAGE), "vignettes suivantes", ">>");
       else echo ">>";
   }
}

function afficherImage($image, $largeur, $hauteur, $titre, $max_larg=null, $max_haut=null) {
   // affiche l'image en vraie grandeur, mais avec des limites $max_larg et $max_haut    
   echo "<a href='javascript:fenetre(\"" . $image . "\", $largeur, $hauteur, \"" . htmlspecialchars($titre) . "\")' title=\"agrandir l'image\">";
   if ($max_larg || $max_haut) {
       if ($max_larg==null) $taux = min($max_haut/$hauteur, 1);
       elseif ($max_haut==null) $taux = min($max_larg/$largeur, 1);
       else $taux = min($max_larg/$largeur, $max_haut/$hauteur, 1);
       $largeur = floor($largeur * $taux);
       $hauteur = floor($hauteur * $taux);
   }
   echo "<img src='$image' width='$largeur' height='$hauteur' border='0' />";
   echo "</a>";
}    

function paginationImage($id_article, $nb_images) {
   // affiche des liens permettant d'afficher les images pr�c�dente et suivante
   if ($nb_images > 1) {
       $debut_image = $_GET["debut_image"];
       if ($debut_image > 0) {
           $debut_vignette = floor(($debut_image-1) / VIGNETTES_PAGE) * VIGNETTES_PAGE;
           lienPage($id_article, $debut_vignette, ($debut_image-1), "image pr�c�dente", "pr�c�dente");
       }
       echo " image ";
       if ($debut_image < $nb_images-1) {
           $debut_vignette = floor(($debut_image+1) / VIGNETTES_PAGE) * VIGNETTES_PAGE;
           lienPage($id_article, $debut_vignette, ($debut_image+1), "image suivante", "suivante");
                }
   }
}
?>

Merci pour vos réponses. Bonne journée

Rechercher dans les forums:
RSS






squelette