2014-10-04 161 views
0

我想排除從下面的PHP代碼有1000和2000之間的 「ID」 的產品:如何在OpenCart的「最新產品」模塊中排除產品?

<?php 
class ControllerModuleLatest extends Controller { 
    protected function index($setting) { 
     $this->language->load('module/latest'); 

     $this->data['heading_title'] = $this->language->get('heading_title'); 

     $this->data['button_cart'] = $this->language->get('button_cart'); 

     $this->load->model('catalog/product'); 

     $this->load->model('tool/image'); 

     $this->data['products'] = array(); 

     $data = array(
      'sort' => 'p.date_added', 
      'order' => 'DESC', 
      'start' => 0, 
      'limit' => $setting['limit'] 
     ); 

     $results = $this->model_catalog_product->getProducts($data); 

     foreach ($results as $result) { 








      if ($result['image']) { 
       $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); 
      } else { 
       $image = false; 
      } 

      if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { 
       $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); 
      } else { 
       $price = false; 
      } 

      if ((float)$result['special']) { 
       $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); 
      } else { 
       $special = false; 
      } 

      if ($this->config->get('config_review_status')) { 
       $rating = $result['rating']; 
      } else { 
       $rating = false; 
      } 

      $this->data['products'][] = array(
       'product_id' => $result['product_id'], 
       'thumb'  => $image, 
       'name'  => $result['name'], 
       'price'  => $price, 
       'special' => $special, 
       'rating'  => $rating, 
       'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 
       'href'  => $this->url->link('product/product', 'product_id=' . $result['product_id']), 
      ); 



     } 

     if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/latest.tpl')) { 
      $this->template = $this->config->get('config_template') . '/template/module/latest.tpl'; 
     } else { 
      $this->template = 'default/template/module/latest.tpl'; 
     } 

     $this->render(); 
    } 
} 
?> 

可能必須有一個「if(1000 < $結果[ '的product_id'] < 2000 「)某處... 有什麼建議嗎?

預先感謝您

回答

0

所有你需要做的,快速解決您的問題是後

foreach ($results as $result) { 

條件直接添加if條件將檢查ID,如果匹配將調用continue;

if ($product['product_id'] >= 1000 && $product['product_id'] <= 2000) { 
     continue; 
    } 

但更乾淨的解決方案是讓SQL知道你想省略ID在1000..2000範圍內b Ÿ在SQL中添加WHERE子句(僅示例):

SELECT * 
FROM product p 
WHERE p.product_id NOT BETWEEN 1000 AND 2000 
ORDER BY p.date_added DESC 
LIMIT <LIMIT>