2014-01-06 42 views
1

相反具有對產品的基本價格,並顯示我想要設置的基本價格爲0.00和顯示最低的成本計算期權價格即顯示最低從產品價格上Opencart的起始

馬球襯衫價格= 0

小=£10

媒介=£15

大型=£20

和它應該顯示從開始£ 10

目前的產品頁面上顯示的價格爲0,直到和選項被選中

<?php echo $price; ?> 

我希望它做這樣的事情,但我不能確定的語法

<?php $min_value [] = $options['option_value']; ?> 
<?php $min_value_price [] = $min_value['price']; ?> 
<?php $min = min($min_value_price); ?> 
<?php echo $min; ?> 

是這沿着正確的路線?目前,它不與上面的代碼

型號

public function getProductOptions($product_id) { 
    $product_option_data = array(); 

    $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); 

    foreach ($product_option_query->rows as $product_option) { 
     if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') { 
      $product_option_value_data = array(); 

      $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); 

      foreach ($product_option_value_query->rows as $product_option_value) { 
       $product_option_value_data[] = array(
        'product_option_value_id' => $product_option_value['product_option_value_id'], 
        'option_value_id'   => $product_option_value['option_value_id'], 
        'name'     => $product_option_value['name'], 
        'image'     => $product_option_value['image'], 
        'quantity'    => $product_option_value['quantity'], 
        'subtract'    => $product_option_value['subtract'], 
        'price'     => $product_option_value['price'], 
        'price_prefix'   => $product_option_value['price_prefix'], 
        'weight'     => $product_option_value['weight'], 
        'weight_prefix'   => $product_option_value['weight_prefix'] 
       ); 
      } 

      $product_option_data[] = array(
       'product_option_id' => $product_option['product_option_id'], 
       'option_id'   => $product_option['option_id'], 
       'name'    => $product_option['name'], 
       'type'    => $product_option['type'], 
       'option_value'  => $product_option_value_data, 
       'required'   => $product_option['required'] 
      ); 
     } else { 
      $product_option_data[] = array(
       'product_option_id' => $product_option['product_option_id'], 
       'option_id'   => $product_option['option_id'], 
       'name'    => $product_option['name'], 
       'type'    => $product_option['type'], 
       'option_value'  => $product_option['option_value'], 
       'required'   => $product_option['required'] 
      );    
     } 
    } 

    return $product_option_data; 
} 

控制器

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

     foreach ($this->model_catalog_product->getProductOptions($this- >request->get['product_id']) as $option) { 
      if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') { 
       $option_value_data = array(); 

       foreach ($option['option_value'] as $option_value) { 
        if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { 
         if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { 
          $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); 
         } else { 
          $price = false; 
         } 

         $option_value_data[] = array(
          'product_option_value_id' => $option_value['product_option_value_id'], 
          'option_value_id'   => $option_value['option_value_id'], 
          'name'     => $option_value['name'], 
          'image'     => $this->model_tool_image->resize($option_value['image'], 50, 50), 
          'price'     => $price, 
          'price_prefix'   => $option_value['price_prefix'] 
         ); 
        } 
       } 

       $this->data['options'][] = array(
        'product_option_id' => $option['product_option_id'], 
        'option_id'   => $option['option_id'], 
        'name'    => $option['name'], 
        'type'    => $option['type'], 
        'option_value'  => $option_value_data, 
        'required'   => $option['required'] 
       );     
      } elseif ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') { 
       $this->data['options'][] = array(
        'product_option_id' => $option['product_option_id'], 
        'option_id'   => $option['option_id'], 
        'name'    => $option['name'], 
        'type'    => $option['type'], 
        'option_value'  => $option['option_value'], 
        'required'   => $option['required'] 
       );      
      } 
     } 
+0

顯示您的查詢... – user1844933

+0

如何在此處顯示查詢? – user2689642

+0

將您的查詢提取php代碼以及您的問題... – user1844933

回答

0

顯示任何這裏的問題是設置...產品應該不會有價格$ 0.0而選項是設置產品的價格。取而代之的是產品應當具備一定的價格(您可以用最低的可能的產品)和選項,然後只修改此基準價:

  • T恤馬球:$ 10.0
    • 小(S): + $ 0.0次
    • 中等(M):+ $ 1.0
    • 大(L):+ $ 2.0
    • X大(XL):+ $ 3.0
    • XX-大(XXL):+ $ 4.0

如果你的小店是賣產品,其中選擇將始終修改價格,然後,您可以只檢查(模板)產品是否有自己的選擇,在這種情況下,你可以像價格顯示的東西:從開始$ 10.0,如果產品沒有選項,請像往常一樣顯示,例如價格:$ 10.0

或者是否有任何很大的原因將基準價格設置爲0.0

就我個人的看法:人們不喜歡(一般情況下)當一件T恤(或其他任何一件衣服)的尺寸與他們需要的尺寸不同時,而且當它們的尺寸是更貴。計算一件T恤(或任何其他衣服)的平均價格並將這個平均價格用於所有尺寸是一種很好的做法。如果我必須這樣做,我預計會出售例如20%的S,30%的M和L,15%的XL和5%的XXL - 那麼我可以計算平均價格爲0.2 x 10 + 0.3 x 11 + 0.3 x 12 + 0.15 x 13 + 0.05 x 14 = 2 + 3.3 + 3.6 + 1.95 + 0.7 = 11.55。然後,我將使用此均價爲這個非常襯衫的所有尺寸...

0

在MySQL查詢可能取代定單(模型文件)

$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); 

$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pov.price ASC"); 

ov.sort_order >> pov.price ASC

or

ov.sort_order >> pov.price DESC

1

只需在控制器添加第一環內對下面的代碼條件剛過如果

$option_value_data = array();圍繞線349

if($option['option_id'] == your_option_id){ 
    function cmp($a, $b) 
    { 
    return $b['price'] + $a['price']; 
    } 
    usort($option['option_value'], "cmp"); 
    $this->data['min_price'] = $option['option_value'][0]['price']; 
} 

your_option_id替換爲所需的選項你想要的ID。 現在在模板文件中檢查是否設置了$min_price然後echo $min_price否則回顯默認價格。

if(isset($min_price)){ 
echo $min_price; 
...... 
}else{ 
echo $price 
...... 
} 
+0

這類工作,但我需要它是特定於產品,所以將不得不使用['product_id']但是,當我已經試圖把它放入if語句它不起作用 – user2689642

+0

如果你可以傳遞產品ID想要 if($ option ['option_id'] == 15 && $ product_id == Your_Product_ID){ – Ramesh

相關問題