pedes Posted February 16, 2016 Share Posted February 16, 2016 I want to change the bestsellers list into the products that last sold, so if a product is sold it has to become visible in this list. Anyone can tell me how to do this, I don't need the bestsellers, I just want to show the last (example 10 items) that has been sold. Thank you for your help Peter Link to comment Share on other sites More sharing options...
NemoPS Posted February 17, 2016 Share Posted February 17, 2016 You can clone/modify ProductSale::getBestSalesLight(). Just use order by ps.date_upd. Of course, you'll have to change the name in the module too, if you clone and rename the method Link to comment Share on other sites More sharing options...
pedes Posted February 23, 2016 Author Share Posted February 23, 2016 (edited) Hi Nemo1, Thank you for your reply. I have changed the ORDER BY ps.dat_upd But nothing is changed? Probaly i'm doing something wrong? In classes directory I changed the ProductSale.php On line 209 $sql .= ' ORDER BY ps.date_upd DESC LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products; Or is it somewhere else I need to change this? I also set to 'force recompile' and empty cache Thank for your help Edited February 23, 2016 by pedes (see edit history) Link to comment Share on other sites More sharing options...
NemoPS Posted February 24, 2016 Share Posted February 24, 2016 Really odd, can you see if that's running by adding d('test'); right before that $sql variable? It should kill the page Link to comment Share on other sites More sharing options...
pedes Posted February 25, 2016 Author Share Posted February 25, 2016 (edited) Hi Nemo1 So I try to put d('test'); before $sql in the ProductSale.php on the function getBestSalesLight Nothing was happening, it is strange I can open the standaard link in my shop for best sales, then I see them all en in the home I only see 10 of them in a scroll-slider like I ask. This is the shop: https://goo.gl/S19TAq The 3th row on the home are the best sales (bestsellers) In the footer you can see all best sales link. But changing the classes ProductSale.php does not change anything This is the function getBestSalesLight /* ** Get required informations on best sales products ** ** @param int $id_lang Language id ** @param int $page_number Start from (optional) ** @param int $nb_products Number of products to return (optional) ** @return array keys : id_product, link_rewrite, name, id_image, legend, sales, ean13, upc, link */ public static function getBestSalesLight($id_lang, $page_number = 0, $nb_products = 10, Context $context = null) { if (!$context) { $context = Context::getContext(); } if ($page_number < 0) { $page_number = 0; } if ($nb_products < 1) { $nb_products = 10; } // no group by needed : there's only one attribute with default_on=1 for a given id_product + shop // same for image with cover=1 $sql = ' SELECT p.id_product, IFNULL(product_attribute_shop.id_product_attribute,0) id_product_attribute, pl.`link_rewrite`, pl.`name`, pl.`description_short`, product_shop.`id_category_default`, image_shop.`id_image` id_image, il.`legend`, ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category, p.show_price, p.available_for_order, IFNULL(stock.quantity, 0) as quantity, p.customizable, IFNULL(pa.minimal_quantity, p.minimal_quantity) as minimal_quantity, stock.out_of_stock, product_shop.`date_add` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'" as new, product_shop.`on_sale`, product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.') LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (product_attribute_shop.id_product_attribute=pa.id_product_attribute) LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').' LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.') LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON cl.`id_category` = product_shop.`id_category_default` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').Product::sqlStock('p', 0); $sql .= ' WHERE product_shop.`active` = 1 AND p.`visibility` != \'none\''; if (Group::isFeatureActive()) { $groups = FrontController::getCurrentCustomerGroups(); $sql .= ' AND EXISTS(SELECT 1 FROM `'._DB_PREFIX_.'category_product` cp JOIN `'._DB_PREFIX_.'category_group` cg ON (cp.id_category = cg.id_category AND cg.`id_group` '.(count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1').') WHERE cp.`id_product` = p.`id_product`)'; } $sql .= ' ORDER BY ps.date_upd DESC LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products; if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql)) { return false; } return Product::getProductsProperties($id_lang, $result); } Edited February 25, 2016 by pedes (see edit history) Link to comment Share on other sites More sharing options...
NemoPS Posted February 26, 2016 Share Posted February 26, 2016 Are you using the standard best sales module? This makes me thing you might not be Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now