Search the Community
Showing results for tags 'last'.
-
Hi, I have a request to show on home page the last modified products. Even if the user shop owner change the price, or the quantity must be shown in home page. In order to do that i have made the following changes: 1. Copy the Product.php from classes in override/classes and inside the file i create a new function the following one in order to get the last modified products. ---------------------------------------------------------------------------------------------------------------------------------- /** * Get last modified products * * @param integer $id_lang Language id * @param integer $pageNumber Start from (optional) * @param integer $nbProducts Number of products to return (optional) * @return array Last modified products */ public static function getLastModifiedProducts($id_lang, $page_number = 0, $nb_products = 10, $count = false, $order_by = null, $order_way = null, Context $context = null) { if (!$context) $context = Context::getContext(); $front = true; if (!in_array($context->controller->controller_type, array('front', 'modulefront'))) $front = false; if ($page_number < 0) $page_number = 0; if ($nb_products < 1) $nb_products = 10; if (empty($order_by) || $order_by == 'position') $order_by = 'date_upd'; if (empty($order_way)) $order_way = 'DESC'; if ($order_by == 'id_product' || $order_by == 'price' || $order_by == 'date_add' || $order_by == 'date_upd') $order_by_prefix = 'p'; else if ($order_by == 'name') $order_by_prefix = 'pl'; if (!Validate::isOrderBy($order_by) || !Validate::isOrderWay($order_way)) die(Tools::displayError()); $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); if (strpos($order_by, '.') > 0) { $order_by = explode('.', $order_by); $order_by_prefix = $order_by[0]; $order_by = $order_by[1]; } if ($count) { $sql = 'SELECT COUNT(p.`id_product`) AS nb FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' WHERE product_shop.`active` = 1 AND product_shop.`date_upd` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'" '.($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '').' 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.' )'; return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); } $sql = new DbQuery(); $sql->select( 'p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name, product_shop.`date_upd` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'" as new' ); $sql->from('product', 'p'); $sql->join(Shop::addSqlAssociation('product', 'p')); $sql->leftJoin('product_lang', 'pl', ' p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl') ); $sql->leftJoin('image', 'i', 'i.`id_product` = p.`id_product`'); $sql->join(Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1')); $sql->leftJoin('image_lang', 'il', 'i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang); $sql->leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`'); $sql->where('product_shop.`active` = 1'); if ($front) $sql->where('product_shop.`visibility` IN ("both", "catalog")'); $sql->where('product_shop.`date_upd` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'"'); $sql->where('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.' )'); $sql->groupBy('product_shop.id_product'); $sql->orderBy((isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way)); $sql->limit($nb_products, $page_number * $nb_products); if (Combination::isFeatureActive()) { $sql->select('MAX(product_attribute_shop.id_product_attribute) id_product_attribute'); $sql->leftOuterJoin('product_attribute', 'pa', 'p.`id_product` = pa.`id_product`'); $sql->join(Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.default_on = 1')); } $sql->join(Product::sqlStock('p', Combination::isFeatureActive() ? 'product_attribute_shop' : 0)); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); if ($order_by == 'price') Tools::orderbyPrice($result, $order_way); if (!$result) return false; $products_ids = array(); foreach ($result as $row) $products_ids[] = $row['id_product']; // Thus you can avoid one query per product, because there will be only one query for all the products of the cart Product::cacheFrontFeatures($products_ids, $id_lang); return Product::getProductsProperties((int)$id_lang, $result); } -------------------------------------------------------------------------------------------------------------------------------- 2. Copy the NewProductController.php from the ../controllers/front to ../override/controllers/front and i change in the InitContent() function the following $this->orderBy = 'date_add'; change it to $this->orderBy = 'date_upd'; 3. I had create a new module from the NewProducts Module and instead of calling the getNewProducts() function i am calling my function in section 1 above. Finally i delete the class_index.php from the ../cache folder in order to refresh the cache The result it wasn't what i was expecting to. It does give me a few newer products, i don't know how it select them, but unfortunatelly it does not show the latest modified. Before navigating on the site i had update the price of a product and i was expecting to see it in home page, but unfortunatelly it does not. Any help please??
-
Hey, Ik zit met een vervelend probleem. Als de stock van een product op 1 staat en er word een bestelling geplaatst komt de stock op 0 terecht (zoals het moet) maar de bestelstatus staat dan op backorder. Aangezien ik het product wel in stock heb zou dit niet mogen gebeuren. Weet iemand hoe dit komt? Ik werk met prestashop 1.7 De stock staat aan in mijn configuratie. Alvast bedankt.
-
Buenas tardes Como ven el titulo, estoy buscando una forma para ver el ultimo producto que fue activado o desactivado en prestashop, ya sea una notificacion en el panel del backoffice o por correo electronico (o cualquier medio), esta notificacion deberia ser interna, es decir, solo para los que trabajamos en el almacen. La idea es que cuando se cambie a agotado el producto, todos esten enterados y lo dejen de ofrecer por otros canales de venta. La unica solucion que he encontrado es modificar el modulo "mail alerts", pero me gustaria saber si depronto tienen una mejor idea. Gracias
-
hello, with ps 1.7, if I set an amount of 1 item available, prestashop allows me to select a higher amount and click on add to cart. I also see the trolley popup popup but without images or costs. has anyone already solved this bug? thank you.
-
When a customer buys a product, the cart looks fine, only with his article. But the mail I receive, has another product he didn't order and obviously, did not pay. The worst is that when the customer enters into the order history, both products appear in the details. It's pretty weird. Need help!!