How to display all categories with some products each in Opencart 1.5?


How to display all categories with some products each in Opencart 1.5?
I asked this over in the Opencart forums but no luck yet, so thought I'd try here.
How can I display all the categories of products with some number of products from each category on one page? Like this:
Category 1
Item 1
Item 2
Category 2
Item 3
Item 4
Category 3
Item 5
Item 6
I think I need to copy and modify the category.php controller and category.tpl template files, but I'm not sure what changes to make to them. If I could get help with the controller I could probably figure out the template on my own.
Not sure how helpful this will be here, but here's the controller file:
<?php
class ControllerProductCategory extends Controller
public function index()
$this->language->load('product/category');
$this->load->model('catalog/category');
$this->load->model('catalog/product');
$this->load->model('tool/image');
if (isset($this->request->get['sort']))
$sort = $this->request->get['sort'];
else
$sort = 'p.sort_order';
if (isset($this->request->get['order']))
$order = $this->request->get['order'];
else
$order = 'ASC';
if (isset($this->request->get['page']))
$page = $this->request->get['page'];
else
$page = 1;
if (isset($this->request->get['limit']))
$limit = $this->request->get['limit'];
else
$limit = $this->config->get('config_catalog_limit');
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home'),
'separator' => false
);
if (isset($this->request->get['path']))
$path = '';
$parts = explode('_', (string)$this->request->get['path']);
foreach ($parts as $path_id)
if (!$path)
$path = $path_id;
else
$path .= '_' . $path_id;
$category_info = $this->model_catalog_category->getCategory($path_id);
if ($category_info)
$this->data['breadcrumbs'] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path),
'separator' => $this->language->get('text_separator')
);
$category_id = array_pop($parts);
else
$category_id = 0;
$category_info = $this->model_catalog_category->getCategory($category_id);
if ($category_info)
$this->document->setTitle($category_info['name']);
$this->document->setDescription($category_info['meta_description']);
$this->document->setKeywords($category_info['meta_keyword']);
$this->data['heading_title'] = $category_info['name'];
$this->data['text_refine'] = $this->language->get('text_refine');
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['text_quantity'] = $this->language->get('text_quantity');
$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
$this->data['text_model'] = $this->language->get('text_model');
$this->data['text_price'] = $this->language->get('text_price');
$this->data['text_tax'] = $this->language->get('text_tax');
$this->data['text_points'] = $this->language->get('text_points');
$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
$this->data['text_display'] = $this->language->get('text_display');
$this->data['text_list'] = $this->language->get('text_list');
$this->data['text_grid'] = $this->language->get('text_grid');
$this->data['text_sort'] = $this->language->get('text_sort');
$this->data['text_limit'] = $this->language->get('text_limit');
$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');
$this->data['button_continue'] = $this->language->get('button_continue');
if ($category_info['image'])
$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
else
$this->data['thumb'] = '';
$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
$this->data['compare'] = $this->url->link('product/compare');
$url = '';
if (isset($this->request->get['sort']))
$url .= '&sort=' . $this->request->get['sort'];
if (isset($this->request->get['order']))
$url .= '&order=' . $this->request->get['order'];
if (isset($this->request->get['limit']))
$url .= '&limit=' . $this->request->get['limit'];
$this->data['categories'] = array();
$results = $this->model_catalog_category->getCategories($category_id);
foreach ($results as $result)
$product_total = $this->model_catalog_product->getTotalProducts(array('filter_category_id' => $result['category_id']));
$this->data['categories'] = array(
'name' => $result['name'] . ' (' . $product_total . ')',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
);
$this->data['products'] = array();
$data = array(
'filter_category_id' => $category_id,
'sort' => $sort,
'order' => $order,
'start' => ($page - 1) * $limit,
'limit' => $limit
);
$product_total = $this->model_catalog_product->getTotalProducts($data);
$results = $this->model_catalog_product->getProducts($data);
foreach ($results as $result)
$url = '';
if (isset($this->request->get['limit']))
$url .= '&limit=' . $this->request->get['limit'];
$this->data['sorts'] = array();
$this->data['sorts'] = array(
'text' => $this->language->get('text_default'),
'value' => 'p.sort_order-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_name_asc'),
'value' => 'pd.name-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_name_desc'),
'value' => 'pd.name-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_price_asc'),
'value' => 'p.price-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_price_desc'),
'value' => 'p.price-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_rating_desc'),
'value' => 'rating-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_rating_asc'),
'value' => 'rating-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_model_asc'),
'value' => 'p.model-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url)
);
$this->data['sorts'] = array(
'text' => $this->language->get('text_model_desc'),
'value' => 'p.model-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url)
);
$url = '';
if (isset($this->request->get['sort']))
$url .= '&sort=' . $this->request->get['sort'];
if (isset($this->request->get['order']))
$url .= '&order=' . $this->request->get['order'];
$this->data['limits'] = array();
$this->data['limits'] = array(
'text' => $this->config->get('config_catalog_limit'),
'value' => $this->config->get('config_catalog_limit'),
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $this->config->get('config_catalog_limit'))
);
$this->data['limits'] = array(
'text' => 25,
'value' => 25,
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=25')
);
$this->data['limits'] = array(
'text' => 50,
'value' => 50,
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=50')
);
$this->data['limits'] = array(
'text' => 75,
'value' => 75,
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=75')
);
$this->data['limits'] = array(
'text' => 100,
'value' => 100,
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=100')
);
$url = '';
if (isset($this->request->get['sort']))
$url .= '&sort=' . $this->request->get['sort'];
if (isset($this->request->get['order']))
$url .= '&order=' . $this->request->get['order'];
if (isset($this->request->get['limit']))
$url .= '&limit=' . $this->request->get['limit'];
$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->text = $this->language->get('text_pagination');
$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page=page');
$this->data['pagination'] = $pagination->render();
$this->data['sort'] = $sort;
$this->data['order'] = $order;
$this->data['limit'] = $limit;
$this->data['continue'] = $this->url->link('common/home');
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';
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
else
$url = '';
if (isset($this->request->get['path']))
$url .= '&path=' . $this->request->get['path'];
if (isset($this->request->get['sort']))
$url .= '&sort=' . $this->request->get['sort'];
if (isset($this->request->get['order']))
$url .= '&order=' . $this->request->get['order'];
if (isset($this->request->get['page']))
$url .= '&page=' . $this->request->get['page'];
if (isset($this->request->get['limit']))
$url .= '&limit=' . $this->request->get['limit'];
$this->data['breadcrumbs'] = array(
'text' => $this->language->get('text_error'),
'href' => $this->url->link('product/category', $url),
'separator' => $this->language->get('text_separator')
);
$this->document->setTitle($this->language->get('text_error'));
$this->data['heading_title'] = $this->language->get('text_error');
$this->data['text_error'] = $this->language->get('text_error');
$this->data['button_continue'] = $this->language->get('button_continue');
$this->data['continue'] = $this->url->link('common/home');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl'))
$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
else
$this->template = 'default/template/error/not_found.tpl';
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
?>
1 Answer
1
At least in opencart 1.5.1.3 you can go to extensions > modules > category and add categories wherever you want.
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Comments
Post a Comment