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

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

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

Popular posts from this blog

Executable numpy error

Trying to Print Gridster Items to PDF without overlapping contents

Mass disable jenkins jobs