代码之家  ›  专栏  ›  技术社区  ›  Ionut Rusen

opencart 2.3.0.2最新产品,无特殊价格

  •  1
  • Ionut Rusen  · 技术社区  · 7 年前

    我希望,在最新的模块中,能够只显示没有特价的产品! 在里面 model/catalog/product.php 我已修改 getLatestProducts() 功能来自

    foreach ($query->rows as $result) {
    
                    $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    
            }
    

    具有

    foreach ($query->rows as $result) {
    $queryCheckSpecial = $this->db->query("SELECT product_id FROM ". DB_PREFIX ."product_special WHERE product_id =".$result['product_id']);
        if (!$queryCheckSpecial->row){
            $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
        }else{
            continue;
            }
        }
    

    但它不起作用! 我做错了什么? 任何帮助都将不胜感激!

    3 回复  |  直到 7 年前
        1
  •  0
  •   DigitCart    7 年前

    编辑:

    catalog\controller\extension\module\latest.php
    

    查找:

    'sort'  => 'p.date_added',
    

    添加后:

    'ignore_special'  => 1,
    

    编辑:

    catalog\model\catalog\product.php
    

    发现 (第一场比赛):

    if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
    

    在之前添加:

    if (!empty($data['ignore_special'])) {
        $sql .= " AND (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) IS NULL";
    }
    

    然后清除缓存。

        2
  •  0
  •   Anubhav Gupta    7 年前

    只需更新:

    这是:

    foreach ($query->rows as $result) {
    $queryCheckSpecial = $this->db->query("SELECT product_id FROM ". DB_PREFIX ."product_special WHERE product_id =".$result['product_id']);
        if (!$queryCheckSpecial->row){
            $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
        }else{
            continue;
            }
        }
    }
    

    使用:

    foreach ($query->rows as $result) {
        $product_info = $this->getProduct($result['product_id']);
        if (!$product_info['special']){
            $product_data[$result['product_id']] = 
        }
    }
    

    也不要忘记在测试之前清除缓存。

        3
  •  0
  •   Ionut Rusen    7 年前

    @digicart公司 我在目录\控制器\扩展\模块\最新版本中完成了。php

    'ignore_special'  => 1,
    

    在目录\模型\目录\产品中。php

    if (!empty($data['ignore_special']) &&  empty($data['filter_category_id'])){
    
                $this->log->debug('dsadsa');
    
                $queryCheckSpecial = $this->db->query("SELECT product_id FROM ". DB_PREFIX ."product_special WHERE product_id =".$result['product_id']);
                if (!$queryCheckSpecial->row){
    
                    $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    
                }else{
                    continue;
    
               }
    

    在getproducts()的末尾

    它正在最新的页面上工作!问题是,在分类页面中,不知何故存在“忽略”特殊字段,我不知道为什么!