Tuto : fenêtre modale (lightbox) jquery dans les fiches produit

Maxime Bernard-Jacquet
#1 le 20/10/2009 à 15:24
Bonjour,

je vous propose un petit bout de code pour afficher une grande image dans une fenêtre modale (connu aussi sous le nom de lightbox) lors d'un clic sur un visuel d'une fiche produit, comme le font beaucoup de sites informatique.Démo ici :

http://www.amediastore.net/jeux/radio-commande/helicopteres/6407-helicoptere-telecommande-heli-mission-police.html

1. choisir un système de modale - lighbtox
Emajine fonctionne sous jquery, c'est parfait, il nous faut maintenant une libraire qui créé des fenêtres modales. Je vous conseille NyroModal : simple à personnaliser, simple à mettre en oeuvre, se redimensionne automatiquement si la modale est plus grande de base que l'écran.

http://nyromodal.nyrodev.com/

Si vous souhaitez tester d'autres systèmes de fenêtres modales, voici un article sur un comparateur de modales :

http://www.hightech-actu.fr/index.php?post/2009/03/comparatif-lighbox-%3A-Quelle-lightbox-choisir-choisir-pour-son-site

2. Charger la modale dans emajine
Il suffit d'appeler la bibliothèque (que vous aurez préalablement placé dans le dossier /scripts/ via FTP) dans MainPage.html, après l'appel de jquery :





il faudra également appeler le fichier css nyromodal et changer éventuellement les urls vers les images (bouton fermer et image chargement)

3. un peu de modifs dans les templates
la seule chose qu'a besoin nyroModal pour fonctionner, c'est une classe nyromodal sur les liens qui devront ouvrir l'image en grand

donc ajoutez class=nyromodal dans les balises a entourant les images concernées. exemple dans product_produit.html





4. rendre tout ça compatible emajine
il vous suffira de créer un petit script jquery de 5 lignes pour palier à tous les cas de figure :
vous pourrez le placer dans un fichier js à part ou dans la mainpage, au choix :

[Code]
$(document).ready(function() {
$('.nyroModal img').each (function(){
var url=$(this).attr("src");
url=url.replace('thumbnails/','');
$(this).parent().attr("href",url);
});
});
/code]

ce code va aller chercher la grosse image, au cas ou l'image affichée est la miniature, et va correctement mettre le lien direct vers l'image et pas vers une page zoom (comme le font les fiches produit)

Ce dernier code est de moi, c'est une version optimisée du code proposé ici :

http://communaute.medialibs.com/forum/topic-1198.html

Si vous avez des questions n'hésitez pas à me joindre.
Maxime [agence Dysign]
Maxime Bernard-Jacquet
#2 le 20/10/2009 à 15:26
La mise en page a ... planté!

donc voici les codes :

pour le 2 :


pour le 3 :

Maxime Bernard-Jacquet
#3 le 20/10/2009 à 15:28
Ok ... je peux le faire !
(Si un modo passe dans le coin pour arranger tout ça ^^ merci !)

2:
< script type="text/javascript" src="/scripts/jquery.nyroModal.js" >< /script>

3 :
< a id="mainpicture" class="nyroModal" alt="visuel du produit">
Maxime Bernard-Jacquet
#4 le 20/10/2009 à 16:04
5. Pour aller plus loin

Dans les fiches produit emajine ne propose que d'afficher l'image principale en thumbnail ou en grand. Ce que certains comme moi aimeraient c'est avoir cette image en taille moyenne, les visuels supplémentaires en vignette et lorsque l'on clique sur tout ce beau petit monde, avoir un affichag en grand dans la modale.

Pour réduire dynamiquement l'affichage de la grande image de la fiche produit, voici un petit code jquery :

pré requis : dans le template product_produit.html, avoir ajouté un identifiant id="mainpicture" (par exemple)


< a id="mainpicture" class="nyroModal" alt="visuel du produit" >


et ensuite dans un fichier .js ou dans le template de la fiche produit entre des balises script :


$("#mainpicture img").each(function(){
var largeur=$(this).attr("width");
var hauteur=$(this).attr("height");

if (largeur>315) {
// calcul de la nouvelle hauteur (produit en croix. largeur connue et voulue : 315)
var newHauteur=Math.round(315*hauteur/largeur);
$(this).width(315).height(newHauteur);
}

});


mon code va redimensionner automatiquement une image grande en 315px, pour rentrer correctement dans la fiche produit.
Par défaut les images "grandes" sur mon site font 800px. mais elles servent seulement pour l'affichage dans une modale.

Pour ceux que ça intéresse j'ai aussi fait un mini script Photoshop pour redimensionner un pack d'images (et eventuellement incrustation de logo) afin d'importer sur votre catalogue que des images de même taille.
Gérald Guyon
#5 le 06/11/2009 à 17:05
Merci beaucoup pour ces explications fort utiles et qui m'ont permet de gagner du temps dans mon développement de catalogue.
Club de l'excellence
Votre inscription a bien été reçue, vous êtes en cours d'évaluation...

Avantages et procédure

Les grands projets

Les API pour les programmeurs

Afin de permettre aux programmeurs d'intégrer plus facilement leurs propres...

Suivre le développement
Le webo-graf

Véritable innovation, cet éditeur d'apparences vous permet d'intégrer... Suivre le développement


La V1.0 du webo-factory

Une nouvelle version encore plus intuitive et cognitive, simple à utiliser...
Suivre le développement