问题
I am new to the opencart.By default Opencart featured product shows product description and price but now I want product discounted prices in featured product section so I changed my featured product code and added code to show discount price. Here is the complete code for featured product
<?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();
}
}
?>
Now when in featured.tpl when I used
<?php foreach ($discounts as $discount) { ?>
<span class="discount-price">
<?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?>
</span>
<?php } ?>
It is showing undefined variable $discounts
. But if I am using print_r($discounts)
in module file it is showing the discount price there. I am really stuck with this. Why the module is not passing the value to the view file? Can some one help me with this? Any help and suggestions will be appreciable.
回答1:
You should be using $product['discounts']
not $discounts
in the foreach
来源:https://stackoverflow.com/questions/13540081/why-opencart-is-not-passing-variable-from-module-to-view-file