Post by qahar » Sat Jun 16, 2012 12:40 pm

In this tutorial we will learn on how to make spesific template for Category, Product and Information. Some post forum already mention this with various method, but I try to use the simplest method.

And before we continue, I want to clarify that Template refer to .tpl file on Opencart theme. Regardless the theme you use, word "template" refer to .tpl file.

What we want to achieve here?
  1. Load spesific template for category, product and information based on the id.
  2. If spesific template is not available, then use the general template. ex. category.tpl, product.tpl, information.tpl
  3. The same thing applied to load stylesheet spesifically.
In this tutorial I only show you how to achieve with Category, and the same method is applied for Product and Information. And you can download the vQmod file that already modificate the Category, Product and Information at bottom of the page.
  1. Open catalog\controller\product\category.php
  2. Load spesific template:

    Code: Select all

    // FIND :
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
    } else {
        $this->template = 'default/template/product/category.tpl';
    }
    
    // REPLACE :
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category_'.$category_id.'.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/product/category_'.$category_id.'.tpl';
    } elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
    } else {
        $this->template = 'default/template/product/category.tpl';
    }
    
    /* Explanation :
    1. The code will search spesific template based on it ID. ex: category_18.tpl.
    2. If the spesific template is not available, Opencart will use the general template of active theme (category.tpl).
    3. If the template of spesific theme is not available, Opencart will use template from default theme.
    */
  3. Load spesific stylesheet:

    Code: Select all

    // FIND :
    $this->document->setTitle($category_info['name']);
    
    // PUT BEFORE :
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/category_'.$category_id.'.css')) {
        $this->document->addStyle('catalog/view/theme/' . $this->config->get('config_template') . '/stylesheet/category_'.$category_id.'.css');
    }
    
    /* Explanation :
    1. The code will search spesific stylesheet based on it ID. ex: category_18.css.
    2. If the spesific stylesheet available then load it, if not then do nothing.
    */
  4. Example of folder structure:
    • stylesheet/
      • stylesheet.css
        category_18.css
        product_17.css
        information_3.css
      template/
      • product/
        • category.tpl
          category_18.tpl
          product_17.tpl
      • information/
        • information.tpl
          information_3.tpl
category_spesific_template.png

category_spesific_template.png (36.23 KiB) Viewed 23092 times

Image

Note:
Since most user unable to reply this post, if you want to suggest think to improve this tutorial you can PM me. No Question Please!
Make new post on Support Forum if you have any question.

User avatar
Expert Member

Posts

Joined
Tue Jun 29, 2010 10:24 pm
Location - Indonesia

Post by Avvici » Thu Aug 09, 2012 7:22 pm

Nice one man. Just saw this tut.

User avatar
Expert Member

Posts

Joined
Tue Apr 05, 2011 12:09 pm
Location - Asheville, NC
Who is online

Users browsing this forum: No registered users and 1 guest