Лидеры продаж для каждой категории

l.korv1n

Постоялец
Регистрация
7 Сен 2013
Сообщения
141
Реакции
8
Здравствуйте.

Как сделать, чтобы модули "лидеры продаж" выводил товары только для соответствующей категории?

Например в категории "телефоны" из высех лидеров выводились только телефоны.

готов заплатить за решение
 
добавить в запрос условие с айда текущей категории. смотрите функцию в модели.
 
модуль blockbestsellers.php:
if(isset($category)){
$category_id = $category->id;
}


$bestsellers = ProductSale::getBestSalesLight((int)($params['cookie']->id_lang), 0, 5);
меняем на
if($category_id){
$bestsellers = ProductSale::getBestSalesLight2((int)($params['cookie']->id_lang), 0, 5, (int)$category_id);
}else{
$bestsellers = ProductSale::getBestSalesLight((int)($params['cookie']->id_lang), 0, 5);
}

2 вхождения
класс ProductSale.php:
добавляем

public static function getBestSalesLight2($id_lang, $pageNumber = 0, $nbProducts = 10, $category_id)
{
global $link;

if ($pageNumber < 0) $pageNumber = 0;
if ($nbProducts < 1) $nbProducts = 10;

$groups = FrontController::getCurrentCustomerGroups();
$sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, i.`id_image`, il.`legend`, ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
FROM `'._DB_PREFIX_.'product_sale` ps
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = p.`id_category_default` AND cl.`id_lang` = '.(int)$id_lang.')
WHERE p.`active` = 1
AND p.`id_category_default`= '.$category_id.'
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` '.$sqlGroups.'
)
ORDER BY sales DESC
LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)($nbProducts));

if (!$result)
return false;

foreach ($result AS &$row)
{
$row['link'] = $link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']);
$row['id_image'] = Product::defineProductImage($row, $id_lang);
}
return $result;
}



код не проверял. если что дебажте сами.
 
Назад
Сверху