|
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
|