我是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();
}
}
?>
现在当我使用
时在featured.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)
,那么它会显示折扣价格。我真的很困惑。为什么模块没有将值传递给视图文件?有人可以帮我弄这个吗?任何帮助和建议都会很明显。
答案 0 :(得分:3)
您应该在foreach中使用$product['discounts']
而不是$discounts