Jump to content
  • 0

Niewłaściwa liczba produktów przy producentach


quendi

Question

Witam, mam problem z listą producentów. Problem polega na tym, iż mimo, że produkty są dodane do danego producenta, to przy jego nazwie pokazuje liczbę produktów 0.

 

Link do wersji produkcyjnej: http://projekty.ioni...er=manufacturer

 

Przykład:

 

Producent 7 Nutrition. Na liście pokazuje 0 produktów, a jest ich dodanych 10.

 

http://projekty.ioni...er=manufacturer

 

Co może powodować ten błąd? Ktoś już miał podobny problem?

 

Używana wersja Prestashop 1.6.0.13

 

Usuwałem pamięć podręczną, kompilację smart mam ustawioną na wymuś.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Posiadam ten sam problem na wersji PrestaShop™ 1.6.0.14. Wersja modułu 1.2.2. Zna ktoś przyczynę ?

 

Dodam, że sam moduł jest wyłączony, a korzystam z producentów w topmenu.

 

Edytowałem plik classes/Manufacturer.php

 

Zamiast

		if ($get_nb_products)
		{
			$sql_groups = '';
			if (!$all_group)
			{
				$groups = FrontController::getCurrentCustomerGroups();
				$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
			}

			$results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
					SELECT  p.`id_manufacturer`, COUNT(DISTINCT p.`id_product`) as nb_products
					FROM `'._DB_PREFIX_.'product` p
					'.Shop::addSqlAssociation('product', 'p').'
					LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)
					WHERE product_shop.`visibility` NOT IN ("none")
					'.($active ? ' AND product_shop.`active` = 1 ' : '').'
					'.($all_group ? '' : ' AND p.`id_product` IN (
						SELECT cp.`id_product`
						FROM `'._DB_PREFIX_.'category_group` cg
						LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
						WHERE cg.`id_group` '.$sql_groups.'
					)
					GROUP BY p.`id_manufacturer`'
				));

			$counts = array();
			foreach ($results as $result)
				$counts[(int)$result['id_manufacturer']] = (int)$result['nb_products'];

			if (count($counts))
				foreach ($manufacturers as $key => $manufacturer)
					$manufacturers[$key]['nb_products'] = $counts[(int)$manufacturer['id_manufacturer']];
		}

Wkleiłem:

	if ($get_nb_products)
		{
			$sql_groups = '';
			if (!$all_group)
			{
				$groups = FrontController::getCurrentCustomerGroups();
				$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
			}

			foreach ($manufacturers as $key => $manufacturer)
			{
				$manufacturers[$key]['nb_products'] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
				SELECT COUNT(DISTINCT p.`id_product`)
				FROM `'._DB_PREFIX_.'product` p
				'.Shop::addSqlAssociation('product', 'p').'
				WHERE p.`id_manufacturer` = '.(int)$manufacturer['id_manufacturer'].'
				AND product_shop.`visibility` NOT IN ("none")
				'.($active ? ' AND product_shop.`active` = 1 ' : '').'
				'.($all_group ? '' : ' AND p.`id_product` IN (
					SELECT cp.`id_product`
					FROM `'._DB_PREFIX_.'category_group` cg
					LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
					WHERE cg.`id_group` '.$sql_groups.'
				)'));
			}
		}

Wszystko zaczęło działać :)

Edited by ufiartist (see edit history)
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...