[resolu] Image produit aléatoire dans la liste produit |
Bienvenue invité ( Connexion | Inscription )
[resolu] Image produit aléatoire dans la liste produit |
30 Apr 2014, 01:00
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Alors je m'explique, lorsque l'on arrive dans une catégorie, les produits sont affichés avec l'image qui leur à été attribuée et l'image est appelée via ce code :
Code tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) Ce que je voudrais c'est pouvoir mettre 2 images par produit et qu'elles s'affichent aléatoirement à chaque reload de la page. Petit exemple : Produit 1 -> image 2 Produit 2 -> image 1 Produit 3 -> image 1 Produit 4 -> image 2 ........ Et si le client recharge la page ou sort puis revient sur la catégorie l'image des produits se modifie : Produit 1 -> image 1 Produit 2 -> image 2 Produit 3 -> image 2 Produit 4 -> image 1 Et même si un produit de temps en temps ne change pas d'image ce n'est pas un problème. Toute la partie administration qui consiste à attribuer et envoyer une 2ème image sur le serveur et à la BDD a été créée. Dans la BDD j'ai ajouté une colonne appelée tout simplement products_image_2 que j'ai intégrée à product_listing.php et index.php Ce que je n'arrive pas à trouvé c'est le code PHP ou la syntaxe MySQL qui va me permettre d'affiché l'image 1 ou l'image 2 du produit aléatoirement un peu voir totalement comme ORDER BY RAND() pour la boxe What's New mais pour l'image produit. Voilà, j'espère, être assez clair et si quelqu'un à une petite idée elle est la bienvenue. Merci. Ce message a été modifié par Rusti - 2 May 2014, 06:33. -------------------- osCommerce v2.3
|
|
30 Apr 2014, 11:29
Message
#2
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour
Pourquoi ne pas remplacer: Code case 'PRODUCT_LIST_IMAGE': $select_column_list .= 'p.products_image, '; break; par Code case 'PRODUCT_LIST_IMAGE': $select_column_list .= 'p.products_image_' . rand(1,2) . ', '; break; sachant que la première colonne a été renommée products_image_1, ce qui oblige à la renommer partout où elle est appelée (review, products...) ou à doublonner la colonne products_image (nul, mais rapide). ou au choix Code case 'PRODUCT_LIST_IMAGE': $select_column_list .= 'p.products_image' . (rand(1,2)==1?'':'_2') . ', '; break; sachant qu'ici, la première colonne s'appelle toujours products_image Ce qui à chaque affichage extrait (l'adresse d')une image ou (de )l'autre Bons essais ! Chti poupon P.S.: La première méthode s'étend aisément à 3 images ou plus |
|
30 Apr 2014, 11:46
Message
#3
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Super, par contre je vais évité la manière rapide quitte à faire autant bien le faire.
Je teste et tient au courant. Grand merci à toi chti_poupon -------------------- osCommerce v2.3
|
|
2 May 2014, 06:32
Message
#4
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Alors je reviens pour expliquer comment ça se passe.
J'ai utilisé la première technique qui consiste à renommer le products_image en products_image_1 car je voulais que mes produits aient un affichage aléatoire et complètement indépendant les uns des autres. Par contre l'ajout rand(1,2) dans le fichier index.php ne fonctionnait pas, car l'appel de l'image dans le product_listing.php affichait la première, mais pas la deuxième : tep_image(DIR_WS_IMAGES . $listing['products_image_1'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT); Je préviens ma version oscommerce étant très modifié c’est peut être pour cela, je n’ai pas testé sur une version de base, mais je pense quand même que le problème aurait été identique. Donc pour que ça fonctionne et pour ce que ça intéresse. Dans le fichier index.php j'ai modifié comme ceci : Code case 'PRODUCT_LIST_IMAGE': //$select_column_list .= 'p.products_image, '; $select_column_list .= 'p.products_image_1, p.products_image_2, '; break; et dans le product_listing.php juste, après le : Code while ($listing = tep_db_fetch_array($listing_query)) { $rows++; il faut ajouter : Code $image_listing = 'products_image_' . rand(1,2); dernier point à modifier l'appel de l'image comme ceci : tep_image(DIR_WS_IMAGES . $listing[$image_listing], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT); Maintenant dans mon cas certains produits sont disponibles seulement en 1 couleur et donc pas de 2ème image. Pour éviter d'avoir un cadre vide au cas où le code choisit la deuxième image, modifiez comme ceci dans le product_listing.php : Code if (tep_not_null($listing['products_image_2'])) { $image_listing = 'products_image_' . rand(1,2); } else { $image_listing = 'products_image_1'; } Voilà je clos le sujet par un beau Résolu Encore un merci à toi Chti poupon pour le coup de main et l'explication des méthodes. Ce message a été modifié par Rusti - 2 May 2014, 06:37. -------------------- osCommerce v2.3
|
|
Version bas débit | Nous sommes le : 16th April 2024 - 05:41 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |