Page 1 of 1

How to pass the value of variable from module to view file

Posted: Sat Nov 24, 2012 7:04 pm
by kshirod
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

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();
  }
}
?>
Now when in featured.tpl when I used

Code: Select all

<?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.

Re: How to pass the value of variable from module to view fi

Posted: Sat Nov 24, 2012 11:19 pm
by jty
Maybe this will help
http://forum.opencart.com/viewtopic.php?f=131&t=49325

It's code for the category page but if you follow it, it should work in the featured module. I haven't tried it but it should work.

Re: How to pass the value of variable from module to view fi

Posted: Mon Jan 28, 2013 3:47 pm
by urace