服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > prestashop教程 >

Prestashop畅销产品(Best sellers)页面显示不出产品

时间:2016-02-04 10:26来源:未知 作者:最模板 点击:
网站使用的是Prestashop 1.5.6 ,运营一段时间,在左侧畅销产品(Best Sellers)模块显示出了畅销产品,但是访问畅销产品(Best Sellers)页面,显示为No top sellers for the moment.。 查看和调试代码,发
网站使用的是Prestashop 1.5.6 ,运营一段时间,在左侧畅销产品(Best Sellers)模块显示出了畅销产品,但是访问畅销产品(Best Sellers)页面,显示为“No top sellers for the moment.”。
 
查看和调试代码,发现是Prestashop 1.5.6 的代码漏洞导致的。
 
访问文件 classes/ProductSale.php,输出 89行的$ids($ids = count($ids) > 0 ? implode(‘,’, $ids) : ‘NULL';),发现输出的字符串模式如(,2,3,4,8,30,40…..),这个在 117 行SQL(AND p.`id_product` IN (‘.$ids.’))中运行肯定是存在问题的。
 
对比畅销产品(Best Sellers)模块代码,发现classes/ProductSale.php 82 行SQL代码存在问题。
 
classes/ProductSale.php 78 行至82行代码如下:
 
 
//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
 
    LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
 
    WHERE cg.`id_group` '.$sql_groups;
使用下面一段代码替换,主要变动是 WHERE cg.`id_group` ‘.$sql_groups.’ AND cp.`id_product` IS NOT NULL’;
 
 
//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
 
    LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
 
    WHERE cg.`id_group` '.$sql_groups.' AND cp.`id_product` IS NOT NULL';
修改之前记得备份文件
(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------