0

我是 opencart 的新手。默认情况下,Opencart 特色产品显示产品描述和价格,但现在我希望特色产品部分中的产品折扣价,所以我更改了特色产品代码并添加代码以显示折扣价。这是特色产品的完整代码

<?php
class ControllerModuleFeatured extends Controller {
  protected function index($setting) {
    $this->language->load('module/featured'); 
    $this->data['heading_title'] = $this->language->get('heading_title');
    $this->data['button_cart'] = $this->language->get('button_cart');
    $this->data['text_discount'] = $this->language->get('text_discount');
    $this->load->model('catalog/product'); 

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

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

    $products = explode(',', $this->config->get('featured_product'));    

    if (empty($setting['limit'])) {
      $setting['limit'] = 5;
    }

    $products = array_slice($products, 0, (int)$setting['limit']);

    foreach ($products as $product_id) {
      $product_info = $this->model_catalog_product->getProduct($product_id);
      $discounts = $this->model_catalog_product->getProductDiscounts($product_id);
      $product_discounts[] = array(); 
      foreach ($discounts as $discount) {
      $product_discounts[] = array(
        'quantity' => $discount['quantity'],
        'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
    );
      }

      if ($product_info) {
        if ($product_info['image']) {
          $image = $this->model_tool_image->resize($product_info['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($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
        } else {
          $price = false;
        }

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

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


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

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

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

现在,当我使用 features.tpl 时

 <?php foreach ($discounts as $discount) { ?>
  <span class="discount-price">
     <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?>
  </span>
  <?php } ?>

它显示未定义的变量$discounts。但是如果我print_r($discounts)在模块文件中使用它会显示那里的折扣价。我真的坚持这一点。为什么模块没有将值传递给视图文件?有人可以帮我弄这个吗?任何帮助和建议都将不胜感激。

4

1 回答 1

3

您应该$product['discounts']不在$discountsforeach中使用

于 2012-11-24T11:34:00.233 回答