Post by kshirod » 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

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.

Newbie

Posts

Joined
Sat Nov 17, 2012 2:26 am

Post by jty » Sat Nov 24, 2012 11:19 pm

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.

jty
Active Member

Posts

Joined
Sat Aug 30, 2008 8:19 am

Newbie

Posts

Joined
Mon Jun 04, 2012 7:04 pm
Who is online

Users browsing this forum: No registered users and 200 guests