Jump to content

Afficher les produits par marque et par catégorie


Recommended Posts

Bonjour,

 

Je m'explique...j'ai modifié mon prestashop pour qu'il fonctionne de la façon suivante ....

 

Quand je clique sur une catégorie, au lieu d'afficher les produits de cette catégorie, j'affiche les logos des marques pour cette catégorie. POurcela j'ai fait un override de la fonction initContent() du CatégoryController comme ci-dessous

 

public function initContent()
{
	parent::initContent();

	$this->setTemplate(_PS_THEME_DIR_.'category.tpl');

	if (!$this->customer_access)
		return;

	/*if (isset($this->context->cookie->id_compare))
		$this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare));

	$this->productSort(); // Product sort must be called before assignProductList()

	$this->assignScenes();
	$this->assignSubcategories();
	if ($this->category->id != 1)
		$this->assignProductList();*/

	$this->context->smarty->assign(array(

		'category' => $this->category,
		'products' => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,
		'id_category' => (int)$this->category->id,

		'id_category_parent' => (int)$this->category->id_parent,
		'return_category_name' => Tools::safeOutput($this->category->name),
		'path' => Tools::getPath($this->category->id),


		'manufacturers' => Manufacturer::getManufacturersByCategory((int)$this->category->id),
		'text_list' => Configuration::get('MANUFACTURER_DISPLAY_TEXT'),
		'text_list_nb' => Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'),
		'form_list' => Configuration::get('MANUFACTURER_DISPLAY_FORM'),
		'display_link_manufacturer' => Configuration::get('PS_DISPLAY_SUPPLIERS'),
	));
}

 

La fonction getManufacturersByCategory est un override de la fonction getManufacturers dont j'ai modifié un poil la requete

 

$sql = 'SELECT m.*, ml.`description`, p.id_product, p.active
		FROM `'._DB_PREFIX_.'manufacturer` m
		LEFT JOIN `'._DB_PREFIX_.'product` p ON
		(
			m.`id_manufacturer` = p.`id_manufacturer`
		)
		LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON
		(
			cp.`id_product` = p.`id_product`
		)
		LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (
			m.`id_manufacturer` = ml.`id_manufacturer`
			AND ml.`id_lang` = '.(int)$id_lang.'
		)
		'.Shop::addSqlAssociation('manufacturer', 'm');
		if ($active)
			$sql .= '
		WHERE	 cp.`id_category` = '.$id_category.'
		AND p.`active` = 1';
		$sql .= '
		GROUP BY m.id_manufacturer
		ORDER BY m.`name` ASC'.
		($p ? ' LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n : '');

 

La ou je bloque un peu c'est que quand je clique sur une marque, le fonctionnement de prestashop redevient normal, et on obtient la lsite des produits de cette marque toutes catégories confondues, alors que je souhaite afficher jsute les produits d'une catégorie pour la marque cliquée.

 

Je me demande si je fais fausse route des le départ, si il y aurait un moyen plus simple de faire ca....et j'espère avaoir été claire..

Merci pour vos conseils

Link to comment
Share on other sites

  • 3 weeks 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...