2016-07-07 76 views
0

所以我有Opencart 1.5.6,我需要隱藏一個類別,不會顯示在最新的產品模塊中...我如何修復php來做到這一點,而不是使用任何第三方模塊?如何隱藏最新產品模塊Opencart中的某些類別?

我的理解是某處catalog\controller\module\latest.php,所以這裏是我的代碼:

<?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(); 
    } 
} 
?> 

回答

0

首先,你必須讓產品類別:

$get_categories = $this->model_catalog_product->getCategories($result['product_id']); 

然後用in_array功能,檢查產品有沒有某些類別,此處例如24是類別的編號,我們不想顯示其產品:

if(!in_array(24, $categories)) 

因此這些文件是:

<?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; 
       } 

       $get_categories = $this->model_catalog_product->getCategories($result['product_id']); 
       $categories = array(); 
       foreach($get_categories as $category){ 
        $categories[] = $category['category_id']; 
       } 

       if(!in_array(24, $categories)){ 
        $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(); 
     } 
    } 
    ?> 
+0

我只是想補充一個,然後通過幾個類別:如果(in_array(83 | 88 | 94 | 92 | 95 | 90 | 91 | 86 | 78 |! 84 | 89 | 93 | 87 | 85,但沒有結果仍然可以在這個模塊中看到這些類別! :(任何想法? –

+0

非常感謝它,但只有當我隱藏一個類別!如何隱藏它們中的幾個?我嘗試了逗號和83 | 88 | 94沒有結果!:( –

+0

您可以使用像這樣的' if(!in_array(24,$ categories)&&!in_array(20,$ categories)&&!in_array(18,$ categories)){' – DigitCart

相關問題