bibliotec Posted January 16, 2014 Share Posted January 16, 2014 Estoy intentando configurar el modulo leoconv de leotheme y no me aparece por ningún lado el modulo promociones especiales y se esta mostrando en la página inicial y me aparece en el listado de módulos blockspecials, pero no lo veo ebn la zona de administración en el listado de módulos. Link to comment Share on other sites More sharing options...
Soy.es Posted January 16, 2014 Share Posted January 16, 2014 Revisa que este en el Hook correcto, casi seguro que es eso. Saludos Link to comment Share on other sites More sharing options...
Feliz Garcia Posted January 16, 2014 Share Posted January 16, 2014 Estoy intentando configurar el modulo leoconv de leotheme y no me aparece por ningún lado el modulo promociones especiales y se esta mostrando en la página inicial y me aparece en el listado de módulos blockspecials, pero no lo veo ebn la zona de administración en el listado de módulos. Hola, ¿Has movido desde módulos -> posiciones de los módulos el bloque de promociones especiales al DisplayHome? ¿O tu plantilla lleva un módulo especifico? Por cierto, recuerda que en Prestashop 1.5.6.1, tiene un bug y no muestra bien las promociones, y a que dejar el fichero: /classes/ProductSale.php Asi: <?php /* * 2007-2013 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class ProductSaleCore { /* ** Fill the `product_sale` SQL table with data from `order_detail` ** @return bool True on success */ public static function fillProductSales() { $sql = 'REPLACE INTO '._DB_PREFIX_.'product_sale (`id_product`, `quantity`, `sale_nbr`, `date_upd`) SELECT od.product_id, SUM(od.product_quantity), COUNT(od.product_id), NOW() FROM '._DB_PREFIX_.'order_detail od GROUP BY od.product_id'; return Db::getInstance()->execute($sql); } /* ** Get number of actives products sold ** @return int number of actives products listed in product_sales */ public static function getNbSales() { $sql = 'SELECT COUNT(ps.`id_product`) AS nb FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ps.`id_product` '.Shop::addSqlAssociation('product', 'p', false).' WHERE product_shop.`active` = 1'; return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); } /* ** Get required informations on best sales products ** ** @param integer $id_lang Language id ** @param integer $page_number Start from (optional) ** @param integer $nb_products Number of products to return (optional) ** @return array from Product::getProductProperties */ public static function getBestSales($id_lang, $page_number = 0, $nb_products = 10, $order_by = null, $order_way = null) { if ($page_number < 0) $page_number = 0; if ($nb_products < 1) $nb_products = 10; $final_order_by = $order_by; $order_table = ''; if (is_null($order_by) || $order_by == 'position' || $order_by == 'price') $order_by = 'sales'; if ($order_by == 'date_add' || $order_by == 'date_upd') $order_table = 'product_shop'; if (is_null($order_way) || $order_by == 'sales') $order_way = 'DESC'; $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); $interval = Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20; //Subquery: get product ids in a separate query to (greatly!) improve performances and RAM usage $sql = 'SELECT cp.`id_product` FROM `'._DB_PREFIX_.'category_group` cg INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cp.`id_product` IS NOT NULL AND cg.`id_group` '.$sql_groups; $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $ids = array(); foreach ($products as $product) $ids[$product['id_product']] = 1; $ids = array_keys($ids); $ids = array_filter($ids); sort($ids); $ids = count($ids) > 0 ? implode(',', $ids) : 'NULL'; //Main query $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`, m.`name` AS manufacturer_name, p.`id_manufacturer` as id_manufacturer, MAX(image_shop.`id_image`) id_image, il.`legend`, ps.`quantity` AS sales, t.`rate`, pl.`meta_keywords`, pl.`meta_title`, pl.`meta_description`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.$interval.' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` '.Shop::addSqlAssociation('product', 'p', false).' 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` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.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_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (product_shop.`id_tax_rules_group` = tr.`id_tax_rules_group`) AND tr.`id_country` = '.(int)Context::getContext()->country->id.' AND tr.`id_state` = 0 LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) '.Product::sqlStock('p').' WHERE product_shop.`active` = 1 AND p.`visibility` != \'none\' AND p.`id_product` IN ('.$ids.') GROUP BY product_shop.id_product ORDER BY '.(!empty($order_table) ? '`'.pSQL($order_table).'`.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).' LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); if ($final_order_by == 'price') Tools::orderbyPrice($result, $order_way); if (!$result) return false; return Product::getProductsProperties($id_lang, $result); } /* ** Get required informations on best sales products ** ** @param integer $id_lang Language id ** @param integer $page_number Start from (optional) ** @param integer $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; $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); //Subquery: get product ids in a separate query to (greatly!) improve performances and RAM usage $sql = 'SELECT cp.`id_product` FROM `'._DB_PREFIX_.'category_group` cg INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cp.`id_product` IS NOT NULL AND cg.`id_group` '.$sql_groups.' AND cp.`id_product` IS NOT NULL'; $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $ids = array(); foreach ($products as $product) $ids[$product['id_product']] = 1; $ids = array_keys($ids); sort($ids); $ids = array_filter($ids); $ids = count($ids) > 0 ? implode(',', $ids) : 'NULL'; //Main query $sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(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, p.quantity, p.customizable, IFNULL(pa.minimal_quantity, p.minimal_quantity) as minimal_quantity, p.out_of_stock 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` pa ON (ps.`id_product` = pa.`id_product` AND pa.default_on = 1) 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` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.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` = product_shop.`id_category_default` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').' WHERE product_shop.`active` = 1 AND p.`visibility` != \'none\' AND p.`id_product` IN ('.$ids.') GROUP BY product_shop.id_product ORDER BY sales DESC LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products; if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql)) return false; foreach ($result as &$row) { $row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']); $row['id_image'] = Product::defineProductImage($row, $id_lang); $row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']); $row['price_tax_exc'] = Product::getPriceStatic( (int)$row['id_product'], false, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), (Product::$_taxCalculationMethod == PS_TAX_EXC ? 2 : 6) ); } return $result; } public static function addProductSale($product_id, $qty = 1) { return Db::getInstance()->execute(' INSERT INTO '._DB_PREFIX_.'product_sale (`id_product`, `quantity`, `sale_nbr`, `date_upd`) VALUES ('.(int)$product_id.', '.(int)$qty.', 1, NOW()) ON DUPLICATE KEY UPDATE `quantity` = `quantity` + '.(int)$qty.', `sale_nbr` = `sale_nbr` + 1, `date_upd` = NOW()'); } public static function getNbrSales($id_product) { $result = Db::getInstance()->getRow('SELECT `sale_nbr` FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)$id_product); if (!$result || empty($result) || !key_exists('sale_nbr', $result)) return -1; return (int)$result['sale_nbr']; } public static function removeProductSale($id_product, $qty = 1) { $total_sales = ProductSale::getNbrSales($id_product); if ($total_sales > 1) return Db::getInstance()->execute(' UPDATE '._DB_PREFIX_.'product_sale SET `quantity` = `quantity` - '.(int)$qty.', `sale_nbr` = `sale_nbr` - 1, `date_upd` = NOW() WHERE `id_product` = '.(int)$id_product ); elseif ($total_sales == 1) return Db::getInstance()->delete('product_sale', 'id_product = '.(int)$id_product); return true; } } 1 Link to comment Share on other sites More sharing options...
bibliotec Posted January 17, 2014 Author Share Posted January 17, 2014 No sabia lo del bug estoy con 1.5.6 pero es bueno para tenerlo en cuenta, la solución al tema era que los TPLs del modulo estaban en el propio theme no en el directorio raíz de prestashop. Gracias por vuestro interés. Link to comment Share on other sites More sharing options...
nadie Posted January 17, 2014 Share Posted January 17, 2014 Como veo que el autor del tema da el tema como solucionado, añado la palabra "Solucionado" en el titulo del tema y procedo a cerrar el tema. Gracias a todos por colaborar con la Comunidad de Prestashop. Link to comment Share on other sites More sharing options...
Recommended Posts