Get in touch
  • OpenCart
  • Sales and conversion
  • v1.0.4

Smart Product Filter for OpenCart 2.3, 3 and 4

A faceted filter in the category: brand, price, attributes and options with live counters, a dedicated index and filter SEO pages. No core edits.

Download Free
Pro · lifetime licence The more sites, the less each one costs
Compatibility
OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 and 4.0.2 – 4.1.x
Version
v1.0.4 (OpenCart 4)
v1.0.3 (OpenCart 3.x)
v1.0.3 (OpenCart 2.3)
Licence
two sites, lifetime
Trial
7 days, no card, one per site
Updated
26.10.2026
Or all 173 Pro modules with All Access — 4 990 ₴ / year

The module in action — 46 sec

Clear even without sound: Ukrainian subtitles

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Faceted filter: brand, price, attributes, options, stock ✔ ✔
Live counters that account for already-selected filters ✔ ✔
Dedicated index instead of attribute queries — the catalogue doesn't slow down ✔ ✔
Duplicate values ("12 V" / "12v" / "12 V.") are merged into one ✔ ✔
Numeric values are sorted numerically and work as a range ✔ ✔
Filter SEO pages with their own H1, title and human-readable URL ✔ ✔
Other combinations get noindex + a canonical to the plain category ✔ ✔
Subcategory products on the category page via a toggle ✔ ✔
No core patches, no jQuery, no third-party libraries ✔ ✔
One build for OpenCart 4.0 and 4.1, separate ones for 3.x and 2.3 ✔ ✔

Key points

Doesn’t patch the core

The filter is built in through events and its own catalogue model; no core file is rewritten.

A dedicated index instead of attribute queries

Instead of scanning the attribute and option tables on every click, the module keeps its own product → value index.

Duplicate values are merged into one

“12 V”, “12v” and “12 V.” from supplier price lists are three different strings, and in an ordinary filter they become three checkboxes.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — two sites

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 and 4.0.2 – 4.1.x are supported, as well as ocStore builds based on them. Each branch has its own build.
  • There are no separate hosting requirements: the index is a single ordinary MySQL table — it doesn’t need Elasticsearch, Redis, or a separate search service.

Version history

v1.0.4 OC 4.x v1.0.3 OC 3.x and 2.3 Current 26.10.2026

An attribute filled in several languages is now one filter value with translations.

v1.0.3 OC 4.x v1.0.2 OC 3.x and 2.3 23.09.2026

New attribute, option and filter values added after the facet was imported (a new colour or a new attribute text, for example) now reach the filter by themselves.

v1.0.2 OC 4.x 23.09.2026

Filter SEO pages are now tied to their own category.

All versions (5)
v1.0.1 21.09.2026

Licence: the “Save” button no longer resets the purchased-licence mark, the trial now ends correctly after 7 days, and “Deactivate” removes Pro from this site.

v1.0.0 First release

Facets by category, attributes, price, stock and rating; a dedicated index table; honest counters with an unrestricted own facet; merging of duplicate values and numeric sorting; a price…

Frequently bought with Smart Product Filter for OpenCart 2.3, 3 and 4

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Smart Product Filter Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
3 590 ₴ lifetime instead of 5 960 UAH bought separately
Buy the bundle →

Full module description

Smart Filter turns a category into a true faceted selection: brand, price, attributes, options, stock — with live counters and no page reload. There are three builds: for OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5.0 and 2.3.0.x; the functionality is identical, only the package differs.

Doesn’t patch the core

The filter is built in through events and its own catalogue model; no core file is rewritten. So an OpenCart update doesn’t break it, and a single build works on both 4.0 and 4.1. Removing the module is one click — the shop stays exactly as it was.

A dedicated index instead of attribute queries

Instead of scanning the attribute and option tables on every click, the module keeps its own product → value index. Filter conditions become an EXISTS against the index, so the catalogue doesn’t slow down when the shopper adds a fifth or sixth filter. The index updates itself when a product is added, edited, copied or deleted.

Duplicate values are merged into one

“12 V”, “12v” and “12 V.” from supplier price lists are three different strings, and in an ordinary filter they become three checkboxes. Here they’re merged into one value. Numeric values are sorted as numbers (1.5 / 2 / 10, not 1.5 / 10 / 2) and work as a range.

Honest counters

Next to each value you see how many products will remain after selecting it. The counter accounts for all other selected filters, but doesn’t restrict itself — so the shopper never hits zero or sees “(0)” where a product actually exists.

Filter SEO pages

A given filter combination can be turned into a separate page with its own H1, title, description, text and human-readable URL. Everything else the shopper clicks together is closed off with noindex,follow and a canonical to the plain category — so thousands of junk addresses don’t pour into the index.

Small details that show up in practice

  • Subcategory products on the category page — via a toggle (in stock OpenCart they’re not visible at all).
  • Zero third-party libraries: no jQuery, no slider plugins, CSP-compatible.
  • Built-in diagnostics show whether the query is actually being intercepted, whether the index is fresh, and whether the counter cache is working — this class of module tends to break silently, exactly there.

How to install

  1. Download the build for your version and install it via “Extensions → Installer”.
  2. In “Extensions → Extensions → Modules”, find “CatCode Smart Filter” and click Install.
  3. Open the settings and click “Install” — this creates the tables and events.
  4. Build the index with the “Reindex” button, and choose which attributes become facets.
  5. Place the module in the category layout via “Design → Layouts”.

What the admin gets

Facets are built from what’s already in your catalogue: category, product attributes and options, price, stock, rating. Nothing needs to be described separately — the module takes OpenCart attributes and options as they are.

For each facet you configure how it’s shown to the shopper: checkboxes, radio buttons, a dropdown, a range slider for numbers, toggles, colour swatches or image swatches. You decide the order of facets in the panel — whatever people actually filter by in your category goes first.

The index rebuilds itself whenever a product changes, and can be rebuilt completely with a single button — handy once, right after a big price-list import.

Why it’s faster

Standard OpenCart filtering collects the result set with joins against product_attribute, product_option_value and product_description. Each added facet is another JOIN, and on a catalogue of tens of thousands of products the query turns into a multi-second one.

The flat “product → value” index removes this problem at the root: whether there are five facets or fifteen, the query structure doesn’t change. That’s why a shop with a large price list gets the most out of the module — on a 200-product catalogue you won’t notice the difference.

Free version and Pro

Pro lifts the limit on the number of facets and adds filter SEO pages: you pick a filter combination worth promoting (“yellow cabinets”, “laptops under 30,000”), and it gets its own H1, title and human-readable URL. Every other combination stays under noindex,follow with a canonical pointing to the plain category.

This is the main difference from a “theme filter”: a controlled handful of landing pages for low-frequency queries, instead of either a million junk URLs in the index or no filter pages in search at all.

Under the hood

The module doesn’t patch the core: it works through OpenCart’s standard events, so a shop update doesn’t wipe out its changes, and removing the module leaves no trace in core files. Category pagination and sorting stay native.

Price is taken with special offers and discounts already applied — the same logic used in the listing. So there’s never a situation where the filter says one thing and the product page shows a different price.

The index updates on product save events, so it only adds load exactly at the moment of editing, not via a background cron once an hour.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
Do I need to edit core files or the template?

No. The module is built in through events and its own catalogue model, the core stays stock — an OpenCart update doesn't break it.

Will it hold up on a large catalogue?

Filter conditions run against a dedicated product → value index, not attribute tables, so adding new facets doesn't slow the query.

What happens with duplicate values from supplier price lists?

They get merged into one value, so instead of three checkboxes "12 V", "12v" and "12 V.", the shopper sees one.

Won't the filter clutter Google's index?

No. Only what you've turned into an SEO page goes into the index; the rest return noindex,follow and a canonical to the category.

How many sites can one key activate?

One. The licence is perpetual: you pay once, with no annual fees.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module