How to pass the value of variable from module to view file
Posted: Sat Nov 24, 2012 7:04 pm
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
Now when in featured.tpl when I used
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.
Code: Select all
<?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();
}
}
?>
Code: Select all
<?php foreach ($discounts as $discount) { ?>
<span class="discount-price">
<?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?>
</span>
<?php } ?>