Jump to content

Produits dans la même catégorie : catégorie par défaut systématique


Recommended Posts

Bonjour,

 

J'utilise le module product category sur prestashop 1.4 permettant d'afficher une liste des produits de la même catégorie. Quand je vais sur un produit qui est dans plusieurs catégories, le module m'affiche toujours les produits de la catégorie par défaut.

 

J'ai regardé dans le code, il y a ça :

 

/* If the visitor has came to this product by a category, use this one */
 if (isset($params['category']->id_category))
  $category = $params['category'];
 /* Else, use the default product category */
 else
 {
  if (isset($product->id_category_default) AND $product->id_category_default > 1)
   $category = New Category((int)($product->id_category_default));
 }

 

J'ai fait des error_log() dans chaque condition, je tombe toujours dans le else, même si je passe par une catégorie pour voir le produit. Il y a donc un bug.

 

Quelqu'un a-t-il déjà corrigé ça ?

 

Merci d'avance !

Link to comment
Share on other sites

Voici la bête:

   global $smarty, $cookie;
   $idProduct = intval(Tools::getValue('id_product'));
   $product = new Product(intval($idProduct));
   if ($product->id)
   {
$category = New Category(intval($product->id_category_default));
// Get infos
$sizeOfCategoryProducts = $category->getProducts(intval($cookie->id_lang), 1, 30, NULL, NULL, true);
$categoryProducts = $category->getProducts(intval($cookie->id_lang), 1, $sizeOfCategoryProducts);

$middlePosition = 0;

//remove current product from the list
$current_product_key = 0;
if (is_array($categoryProducts) AND sizeof($categoryProducts))
{
   foreach ($categoryProducts as $key => $categoryProduct)
   {
  if ($categoryProduct['id_product'] == $idProduct)
   $current_product_key = $key;
	  $categoryProducts[$key]['isDiscounted'] = 0;
   if ($categoryProduct['reduction_price'] > 0 OR $categoryProduct['reduction_percent'] > 0)
 if (    (strtotime($categoryProduct['reduction_to']) == strtotime($categoryProduct['reduction_from']) )
   OR
	  (
		 strtotime($categoryProduct['reduction_to']) < time()
	    AND
		 strtotime($categoryProduct['reduction_from']) > time()
	  )
 )
			   $categoryProducts[$key]['isDiscounted'] = 1;
    }
if (isset($categoryProducts[$current_product_key]))
 unset($categoryProducts[$current_product_key]);


// Get positions
$middlePosition = round($sizeOfCategoryProducts / 2, 0);
$productPosition = $current_product_key;

// If products tab higher than 30, slice it
if ($sizeOfCategoryProducts > 30)
{
   $categoryProducts = array_slice($categoryProducts, $middlePosition - 15, 30, true);
   $middlePosition = 15;
}
   }

   $smarty->assign(array(
		 'categoryProducts' => $categoryProducts,
		 'middlePosition'   => $middlePosition
   ));

 

Le code est peut-etre un poil "outdated" parce que c'était pour une boutique 1.3.1.1

 

Cordialement,

Link to comment
Share on other sites

  • 4 months later...

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