Jump to content

[ASTUCE] Afficher toutes vos images par produits dans la catégorie


Kevlarbox

Recommended Posts

Salut à tous,

je viens partager un code que j'ai mis en place pour afficher toutes les images produits en mode catégorie. Il pourra servir éventuellement aux boutiques proposant un rollhover suivant une limitation des images par vos soins.. Ou tout simplement comme moi de fournir en présentation toutes les photos en miniature dans la catégorie. Testé sur une version presta 1.3 .

 

Tout d'abord la classe sql à mettre dans classes/Product.php à placer au coté de "public function getImages($id_lang)" .. deux tables sont sélectionnées.

 

public function getCatImages($id_cat)
{
 return Db::getInstance()->ExecuteS('
 SELECT *
	FROM `'._DB_PREFIX_.'category_product` i
	LEFT JOIN `'._DB_PREFIX_.'image` il ON i.`id_product` = il.`id_product`
	WHERE i.`id_category` = '.intval($id_cat).'
 ');
}

 

Ensuite nous irons trouver category.php après la ligne 60 .. dans ce code $category->id fournira la catégorie des images à sélectionner.

 

	 /* Image Cat */
  $product = new Product();
	 $images = $product->getCatImages($category->id);
  $productImages = array();
	    foreach ($images AS $k => $image)
		 {
  $productImages[intval($image['id_image'])] = $image;
   }			
 $smarty->assign(array(
  'imgWidth' => intval($size['width']),
  'mediumSize' => Image::getSize('medium'),
  'largeSize' => Image::getSize('large')));
 if (sizeof($productImages))
  $smarty->assign('images', $productImages);

 

La suite au prochain post , je finalise le code avec smarty ...

Link to comment
Share on other sites

Et voici la partie à mettre dans produt-list.tpl du répertoire de votre template :

 

   <ul id="thumbs_list">
   {foreach from=$images item=image name=thumbnails}
   {if ($product.id_product==$image.id_product)}
   {assign var=imageIds value=`$product.id_product`-`$image.id_image`}
   <li id="thumbnail_{$image.id_image}">
		    <img id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'medium')}" alt="" height="{$mediumSize.height}" width="{$mediumSize.width}" />
   </li>
   {/if}
   {/foreach}
    </ul>

 

La boucle avec une condition "$product.id_product==$image.id_product" qui filtre que les images correspondant au produit.

Je pense que ce code peut tout à fait convenir à des versions plus récentes de presta.

Link to comment
Share on other sites

  • 4 months later...

bonsoir, si je comprends bien dans product_list, cette bidouille permet d'afficher par exemple 2 photos en même temps pour un même produit ?

ça m' intéresse bigrement cette histoire ! :wub:

y a t il photo du résultat ?

sous forme de module est ce possible ? sans modifier le core presta ? ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...