西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > OpenCart教程 >

Opencart首页最新产品(Latest Products)随机显示方法

时间:2016-08-27 17:30来源:未知 作者:好模板 点击:
Opencart 首页最新产品(Latest Products)随机显示方法 Opencart 首页Latest Products产品是不可控的,如果一直不上传新产品, Latest Products显示固定不变,不像zen-cart每次刷新都有变化。我帮它动一
Opencart 首页最新产品(Latest Products)随机显示方法

Opencart 首页Latest Products产品是不可控的,如果一直不上传新产品, Latest Products显示固定不变,不像zen-cart每次刷新都有变化。我帮它动一下小手术。

文件位置:catalog\model\catalog\product.php.

方法一

把getLatestProducts修改成以下代码: 

public function getLatestProducts($limit) {

$query = $this->db->query("SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY rand() DESC LIMIT " . (int)$limit);


$product_data = $query->rows;

return $product_data;
}

方法二

把getLatestProducts修改成以下代码:

    public function getLatestProducts($limit) {
        $product_data = $this->cache->get('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit);

        if (!$product_data) { 

            $query = $this->db->query("SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY rand() DESC LIMIT " . (int)$limit);


            $product_data = $query->rows;

            $this->cache->set('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit, $product_data);
        }
        
        return $product_data;
    }

去前台刷新 一下,看一下效果

方法一和方法二区别,方法二执行速度比方法一快。但是每次都要删除system\cache\cache.product.latest.*这个文件才有更新。如果产品很多最好选用方法二


注意设置产品上架时间一致(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------