2022-09-19 10:04:50 - 米境通跨境电商
Opencart首页最新产品(LatestProducts)随机显示方法
Opencart首页LatestProducts产品是不可控的,如果一直不上传新产品,LatestProducts显示固定不变,不像zen-cart每次刷新都有变化。我帮它动一下小手术。
文件位置:catalogmodelcatalogproduct.php.
方法一
把getLatestProducts修改成以下代码:
publicfunctiongetLatestProducts($limit){
$query=$this->db->query("SELECT*,pd.nameASname,p.image,m.nameASmanufacturer,ss.nameASstock,(SELECTAVG(r.rating)FROM".DB_PREFIX."reviewrWHEREp.product_id=r.product_idGROUPBYr.product_id)ASratingFROM".DB_PREFIX."productpLEFTJOIN".DB_PREFIX."product_descriptionpdON(p.product_id=pd.product_id)LEFTJOIN".DB_PREFIX."product_to_storep2sON(p.product_id=p2s.product_id)LEFTJOIN".DB_PREFIX."manufacturermON(p.manufacturer_id=m.manufacturer_id)LEFTJOIN".DB_PREFIX."stock_statusssON(p.stock_status_id=ss.stock_status_id)WHEREp.status='1'ANDp.date_available<=NOW()ANDpd.language_id='".(int)$this->config->get('config_language_id')."'ANDp2s.store_id='".(int)$this->config->get('config_store_id')."'ANDss.language_id='".(int)$this->config->get('config_language_id')."'ORDERBYrand()DESCLIMIT".(int)$limit);
$product_data=$query->rows;
return$product_data;
}
方法二
把getLatestProducts修改成以下代码:
publicfunctiongetLatestProducts($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.nameASname,p.image,m.nameASmanufacturer,ss.nameASstock,(SELECTAVG(r.rating)FROM".DB_PREFIX."reviewrWHEREp.product_id=r.product_idGROUPBYr.product_id)ASratingFROM".DB_PREFIX."productpLEFTJOIN".DB_PREFIX."product_descriptionpdON(p.product_id=pd.product_id)LEFTJOIN".DB_PREFIX."product_to_storep2sON(p.product_id=p2s.product_id)LEFTJOIN".DB_PREFIX."manufacturermON(p.manufacturer_id=m.manufacturer_id)LEFTJOIN".DB_PREFIX."stock_statusssON(p.stock_status_id=ss.stock_status_id)WHEREp.status='1'ANDp.date_available<=NOW()ANDpd.language_id='".(int)$this->config->get('config_language_id')."'ANDp2s.store_id='".(int)$this->config->get('config_store_id')."'ANDss.language_id='".(int)$this->config->get('config_language_id')."'ORDERBYrand()DESCLIMIT".(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;
}
去前台刷新一下,看一下效果
方法一和方法二区别,方法二执行速度比方法一快。但是每次都要删除systemcachecache.product.latest.*这个文件才有更新。如果产品很多最好选用方法二