How to display products from subcategory to parent category in opencart?
Asked Answered
O

6

10

I'm trying to find a solution but still no luck. I want to display all products from subcategories to parent category.

I'm using Opencart 1.5.3.1

Occident answered 28/8, 2012 at 13:0 Comment(0)
B
34

After reading the source, I figured it out:

In catalog/controller/product/category.php (or wherever you're calling function model_catalog_product->getProducts) you have to add filter_sub_category = true:

$data = array(
    'filter_category_id' => $top_category,
    'filter_sub_category' => true,
    'sort'               => $sort,
    'order'              => $order,
    'start'              => ($page - 1) * $limit,
    'limit'              => $limit
);

$product_total = $this->model_catalog_product->getTotalProducts($data);

Make sure you check the other answers if you're using a later version ;)

Beguine answered 24/10, 2012 at 23:33 Comment(4)
This is really helpful. simple solution, great impact for user experience.Hindermost
Just to clarify, this modifies the core files of OpenCart, which is rather nasty. Not that working with vQmod is not ugly as hell as well...Beguine
I agree, worked nicely even in the newer versions (2.0.3.1), the var name just changed to $filter_data, it's at the line 170.Ugh
I'm sorry @IvanStin, this Q is quite old and says I'm using v1.5.3.1. Perhaps someone from the community can check 2.3Beguine
Y
7

Another solution, rather than modifying the core files directly, is to use vQmod to modify the file for you. That way when you upgrade to a new version, you won't have to re-install any custom modifications you've made.

Below is an the code you'd use to accomplish this in vQmod:

<?xml version="1.0" encoding="UTF-8"?>
<modification>
    <id>Display products in sub-categories while browsing a parent category</id>
    <version>1.0.0</version>
    <vqmver>2.4.0</vqmver>
    <author>Jay Williams - [email protected]</author>
    <file name="catalog/controller/product/category.php">
        <operation>
            <search position="after"><![CDATA['filter_category_id' => $category_id,]]></search>
            <add><![CDATA['filter_sub_category' => true,]]></add>
        </operation>
    </file>
</modification>

Source: https://gist.github.com/jaywilliams/8044763

Yentai answered 19/12, 2013 at 19:37 Comment(0)
L
4

catalog/controller/product/category.php

For Opencart Version 2.1.0.2, the solution of Ignacio works fines as well just that:

$data (of version 1.5.x) is now called

$filter_data (line #169)

Then just add the line

'filter_sub_category' => true,

after line #170 ('filter_category_id' => $category_id,)

Thanks Ignacio!

Lionel answered 11/5, 2016 at 8:38 Comment(0)
A
1

the vqmod method is the best and works easily. just add that file and anything.xml and place it in vqmod > xml

Annadiana answered 17/1, 2014 at 1:6 Comment(0)
U
1

Just contributing with one more information, newest versions uses "ocmod", OpenCart's own vqmod feature. It can work the same way through there.

Ugh answered 16/5, 2016 at 3:41 Comment(0)
D
0

For Opencart 3.x: ./catalog/controller/product/category.php

find:

'filter_category_id' => $category_id,

add after:

'filter_sub_category' => true,

After change file, go to "Modification" and "Clear" and "Update" button click

Determinant answered 18/11, 2019 at 12:45 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.