Filter Revolution: setup and help
Quick start
- Upload and install the Filter Revolution ZIP in Modules > Module Manager.
- Open Filter Revolution > Dashboard and run Rebuild Index for the selected shop.
- Open Filter Templates, review a category template and select the fallback in Default filter templates.
- Add the required Filters, choose their widgets and save any Assign to Categories selection.
- Review Show product counts, Stock handling, Cache TTL and Mobile filter shell under Settings > Configuration.
- Open a matching storefront category, select a filter and confirm products, active tags and URL update together.
- Reload the filtered URL and repeat the check on mobile; configure SEO Pages separately for combinations you intend to index.
Requires PrestaShop 1.7.6 or later and PHP 7.1 or later.
Setup manual
Install and build the index
Upload and install the Filter Revolution ZIP in Modules > Module Manager. Click Configure, or open Filter Revolution in the back office.
Select the intended shop. Open Dashboard and use Rebuild Index for an existing or imported catalog. Wait for a healthy completed result. If the index exists but facet aggregates are missing, use Rebuild Facet Aggregates.
Open Filter Templates and review the installed templates and Default filter templates assignments. A matching template and a usable index are required for the filtering workflow. Test one category before changing the whole catalog.
Configure Display
Open Filter Revolution > Settings > Configuration > Display.
| Setting | Default | What you change |
|---|---|---|
| Show product counts | On | Show matching-product counts next to filter values. |
| Zero-match behavior | dim |
Hide, grey out or normally show values with no matching products. |
| Hide facets that cannot narrow results | On | Hide inactive facets with too few available values. Active filters remain available for removal. |
| Minimum available facet values | 2 |
Minimum useful values for an inactive facet. Degenerate sliders follow the same visibility policy. |
| Show more limit | 10 |
Values shown before Show more. Use 0 to show all. |
| Loading animation | overlay |
Choose Overlay, Spinner or Skeleton. |
| Filter container element ID | auto |
Keep automatic unless your theme needs a specific container ID. |
| Mobile filter shell | auto |
Force Drawer or Offcanvas only when required by the theme. |
Configure Behavior
| Setting | Default | Effect |
|---|---|---|
| Stock handling | default |
Show all products, exclude out-of-stock products, or move them to the end. |
| Count method | exclude_self |
Exclude the current facet from its own counting context, or use include-self counting. |
| Pagination style | standard |
Standard pagination, Load more button or Infinite scroll. Check your theme's listing updates after changing it. |
Configure Performance
| Setting | Default | Effect |
|---|---|---|
| Cache TTL | 60 minutes |
Cache duration. 0 disables it. |
| Cache row cap | 10000 |
Maximum result-cache rows. 0 disables this cache; it does not mean unlimited. |
| Render category pages with the module's listing | auto |
Auto uses the module listing for supported Classic/Hummingbird theme families. On forces it for every theme. Off keeps PrestaShop's category rendering with filtering still applied. |
| Load filter-combination results after the page | On | On the module category listing, ordinary nonindexable filter combinations can use a shared page shell and load results in the browser. Base categories and eligible SEO pages remain fully rendered. |
| Price precision | fast |
Use approximate indexed prices, or Precise to recalculate exact prices with more work. |
| Mobile breakpoint | 992 px |
Width below which filters use their mobile panel. |
Product save/delete hooks maintain affected index rows. Other catalog changes invalidate filter caches and listing revisions. Rebuild after imports that bypass normal hooks, or when the dashboard reports unhealthy index/aggregate state.
The module registers the shared scheduled task Listing cache catalogue check (listing_digest). Its default interval is 300 seconds and proof grace is 1800 seconds. It uses a shared MPR cron runner when that package is available. Ensure that runner executes cron-context tasks; this module does not ship a separate cron.php command. The digest timing keys are internal configuration, not fields in the standard form.
Configure SEO and URLs
Open Configuration > SEO.
| Setting | Default | Current behavior |
|---|---|---|
| Filter URL format | query_string |
Retained setting with no effect on public filter links, which use path-based URLs. |
| Noindex filtered pages | Off | Retained setting with no effect on indexing directives. Listing rules determine them for generated combinations and variants. |
| Canonical to unfiltered | Off | Retained setting with no effect on canonical URLs. Listing rules and central MPR SEO integration determine the canonical. |
| Compact filter URLs | Off | Omit group slugs where value slugs are globally unique. |
| Shop name in listing titles | Off | Append | shop name to supported category, SEO, brand and search titles that do not already contain it. |
| Nofollow deeper filter links | On | Add nofollow to links that add another filter value. |
| Friendly listing display URLs | On | Put per-page and grid/list controls into localized path segments. |
| Allowed products-per-page values | 12,24,36,48,120 |
Accept these values up to the maximum. |
| Maximum products per page | 120 |
Request cap before products are fetched. The hard limit is 120. |
| Default product list view | grid |
Default omitted from canonical friendly display URLs. |
Ordinary generated combinations are not automatic indexable landing pages. The module applies noindex to generated filter pages and listing-control variants. Canonicals depend on the listing surface and central SEO integration. With central SEO authority, ordinary category filter page one uses the base category canonical; standalone filtered pages can retain a filtered self-canonical. Do not assume that every filtered URL always canonicalizes to the unfiltered category.
Curated indexable pages need an eligible active SEO record and localized content for the exact shop and language. Check the actual returned canonical and robots values on your shop.
Current crawl protection integrates generated filter rules and curated exceptions with MPR SEO robots management. The old Disallow filter paths in robots.txt opt-in switch is not present in this form. If Configuration reports that robots are custom, missing or enforcement is off, enable robots management in MPR SEO and run Filter Revolution's integrity repair. Inspect the published robots file afterwards. Do not paste the old blanket example rules over curated exceptions.
When the module reports missing slugs, use Allocate missing slugs in Configuration. You need edit permission and a selected shop context. The action allocates missing identities while preserving existing URLs.
Example formats, using the vocabulary generated by your shop:
Stored facets: color:red/size:m
Public path: color/red/size/m
Ranges: price/10-50 or weight/1-5
Compact unique value: 120-x-120-cm
Copy a real working combination from your storefront when creating an SEO page; names and localized slugs vary by catalog.
Create and assign filter templates
Open Filter Templates. Set Template Name, Page Type, optional Default Exclusions, the Filters and Assign to Categories.
Supported listing contexts include category, search, manufacturer, supplier, best-sales, new-products and prices-drop. Select a default template for each listing type in Default filter templates. Category-specific assignments take priority over the fallback. Empty category assignment means a broad category template; confirm the selected default rather than assuming any unassigned template will win.
Drag entries from Available Filters to Active Filters (drag to reorder). You can use attribute groups, features, price, weight, manufacturer, supplier, condition, stock, category and on-sale filters. Attributes and features come from your native catalog.
For each active filter, choose its widget, Columns and Visibility dependency. New filters start with checkbox, one column and always-visible dependency mode; price and weight default to sliders, and condition defaults to radio. Allowed widget choices depend on type. Attribute and feature groups can support checkbox, radio, dropdown, numeric slider, color or image widgets. Price and weight use sliders; stock and on-sale use checkboxes.
Dependency modes can keep a filter always visible or require any/all rules. For example:
[{"filter_type":"feature","id_value":166,"values":[565]}]
Replace the IDs with the relevant feature and values. Default Exclusions stores rules that hide marked products until their marker filter is selected. Start with no exclusions or dependencies, then verify each rule on the storefront.
Additional filter defaults are position 0, product counts on, show limit 0 and collapsed off. These values are not all available as separate controls in the template builder.
Upload swatch images
Use the image manager from the templates area for attribute values and feature values. Upload WebP, PNG, JPG/JPEG or GIF. Non-WebP files are converted to WebP, requiring server GD WebP support.
Current storage is shop-specific under the PrestaShop image directory:
img/mprfilterrevolution/shops/{id_shop}/attributes/{id_attribute}.webp
img/mprfilterrevolution/shops/{id_shop}/feature_values/{id_feature_value}.webp
The renderer can prefer a template-specific {id_template}_{id_value}.webp variant over the generic value file. Use the admin upload workflow rather than putting new images in the old module-local img/attributes directory. The image storage directory and its access-policy file must be writable during setup.
Create a curated SEO page
Open SEO Pages and add one record for a deliberately chosen combination.
| Field | Default | What you enter |
|---|---|---|
| Controller | category |
Listing type. |
| Category ID | 0 |
Real category scope when required. |
| Encoded Facets | Empty | The selected combination, for example color:red/size:m. Legacy dash input is normalized on save. |
| Active | On | Enable the record for matching. |
| Indexable | On | Permit eligibility checks. A language still needs its own localized SEO content. |
| Meta Title | Empty | Translated page title. |
| Meta Description | Empty | Translated metadata. |
| H1 Override | Empty | Translated visible listing heading. |
| Description | Empty | Content above the product grid. |
| Image URL | Empty | Custom image used with rendered SEO content; otherwise category image fallback can apply. |
Save and open the exact page in each language. Fill distinct useful metadata or H1 content in each language you intend to index. An empty translated row does not inherit indexability merely because another language is complete. Eligible variants can use their own canonical and appear through the gSitemapAppendUrls integration; sitemap output also depends on route and crawl eligibility.
Match the theme and verify filtering
Use Configuration > Theme styles for detected colors, borders, radius, font and transition tokens. The module also exposes its Loading overlay value, default rgba(255, 255, 255, 0.7). Theme CSS can use .mpr-filter-container, .mpr-filter-group, .mpr-filter-group--active, .mpr-filter-active-tag, .mpr-filter-swatch, .mpr-filter-image-swatch and .mpr-seo-content-top.
- Open a category with its matching template and confirm useful facets appear.
- Select and remove filters. Confirm products, counts, active tags, pagination and URL update together.
- Reload or share the resulting URL and confirm the same selection.
- Test price ranges, stock modes and products-per-page controls.
- Test the mobile drawer/offcanvas below the configured breakpoint.
- For SEO pages, inspect returned metadata, canonical and robots and check the sitemap and published crawl rules.
The module uses PrestaShop product search provider integration and listing AJAX updates. It can also supply filter sections to Search Revolution through actionMprSearchRevolutionRenderSections. A custom listing or theme still needs to support the corresponding integration.
Troubleshoot and uninstall
If filters do not appear, check the active shop, default and category template assignments, catalog index and whether the theme renders the filter area. A facet with fewer than two useful values can be hidden by the default visibility settings.
If results or counts are stale after an import, rebuild the index and aggregates. If a URL is rejected or an SEO page is not eligible, check existing slugs, exact combination identity, localized metadata and the robots status. Use Settings > Integrity for installation and infrastructure checks.
If controls update the URL without updating results, inspect JavaScript errors and the listing AJAX response. Recheck custom container IDs and mobile shell overrides. If a setting appears to do nothing, distinguish the legacy SEO/URL fields from the listing rules described above.
Back up templates, SEO pages and swatch media before uninstalling through Module Manager. Uninstall removes module configuration and menu entries, removes shop swatch media, reconciles the module's robots rules and runs table cleanup. Recheck the theme's filtering provider afterwards.
Compatibility
Requires PrestaShop 1.7.6 or later and PHP 7.1 or later.
Questions
1
What happens if a listing has no matching filter template?
The module's product search provider hook returns no provider when no template matches the listing type, category and shop. A category without an explicit assignment can still use the configured default template, so check both category assignments and Default filter templates before treating a page as unconfigured.
Known Issues
54
Direct filter links failed with shop or language prefixes
Decimal slider landing pages did not open
Mobile filter drawer controls became unusable
Processing message remained after filtering
Empty filter box on searches without filters
Filter panel remained stale on some themes
Navigation lost during rapid filter clicks
Crawl protection conflicted with other routes
Listing updates handled more than once
Repeated subcategories and unreadable color labels
Short back-office labels stayed in English
New template pickers started with unwanted selections
Cached listings rejected when background checks stopped
Applied filter summary became stale
Security hardening
PHP 8.4 compatibility warnings
Template rows could not be reordered
New filter settings remained untranslated
Crawl rules matched the wrong addresses
Cached listings stayed stale after changes
Minimum price incorrect without a special price
Best-seller and supplier listings used incorrect membership
Invalid filter value broke a category page
Search redirects could loop
Mobile controls unavailable without scripting
Rapid filter navigation lost selections
Product listings lost selections or products
Listing headings and descriptions changed incorrectly
Native pages replaced by filter routing
Search filters reused another result set
Missing or duplicate filter panels
Module failed on PHP versions below 7.4
Filter routing intercepted unrelated pages
Unreadable or uneven filter choices
Swatch images leaked between shops
Combined asset compatibility
PrestaShop 8 and 9 loading failure
Generated facets had conflicting indexation rules
Landing pages missing or wrongly translated in the sitemap
Display options lost when filtering
Filter template and landing page editors failed
Indexing failed and filter ordering was incorrect
Filter indexation signals were inconsistent
Mobile filters applied before confirmation
Filter controls ignored or repeated clicks
Landing page content did not follow selected filters
Repeated category headings and descriptions
Filtered pages returned an error
Secure redirects lost filters
Sliders disappeared or lost their usable range
Pagination and sorting lost selected filters
Filter sidebar flashed on page load
Some filter addresses selected the wrong values
AJAX filtering breaks browser back button navigation
After applying filters, pressing the browser back button doesn't return to the unfiltered state. The URL is updated via pushState but the popstate handler was not implemented.
Resolution note
Added popstate listener that restores filter state from URL parameters.
Feature Requests
34
Implemented
Readable URLs for product filters
Feature filters with colour swatches, images and column layouts
One-click module updates
Multilingual interface
Installation checks and repair
Curated filter landing pages
Friendly filter addresses
Search result filtering
Faster filter updates
Color and image filter choices
Localized filter links
Friendly pagination and sort addresses
Images on filter landing pages
Relevant search filters
Search category filter
Theme-aware filter styling
Responsive filtering
Friendly display-mode links
Automatic reindexing after product edits
Redirects for renamed filter values
Adjustable filter text size
Listing cache with content refreshes
Catalog-based crawl rules
Category filters for additional listings
Native mobile filter drawer
Listing-directory crawl protection
Cached category pagination
Faster direct filter page loading
Rapid filter selections
Immediate filter selection feedback
Configurable loading animation
Automatic product loading for direct filter links
Redirects for renamed landing pages
Linked pagination on indexable landing pages
Changelog
v2.8.102026-05-27
- AddedImprove responsive filter UX
- AddedUse shared theme style tokens
- AddedAdd localized listing sort URLs
- AddedAdd default-category filter on search result pages
- AddedRank search filters by relevance (distinct values + coverage)
- Addedcomplete FR/DE/ES/IT/PL translations
- ImprovedAvoid front-office filter metadata translation
- ImprovedPrecompute category filter facets
- ImprovedProcess filter SEO content through fragment hooks
- FixedRestore filter provider and diagnostics
- FixedCanonicalize core listing aliases
- FixedDefer mobile facet application
- FixedAlign listing pagination social urls
Older releases
v1.4.02026-04-20
- AddedUse theme's native from-xhr for product rendering
- AddedAdd fleet integrity summary panel
- AddedIntegrate ThemeDetector, fix updateFacets JS error
- AddedUnify SEO content rendering, let themes own category header layout
- Addedadmin menu management via MenuInstaller for streamlined module setup
- AddedLicense management tab with key management and renewal options
- Addedself-healing integrity checks for automatic diagnostics and repair
- Addedcomplete FR/DE/ES/IT/PL translations
- ImprovedMove language URL generation from HTML regex to data layer
- ImprovedFeat!: version 2.0.0 — major release
- Improvedsettings form organization with tabbed layout
- FixedSkip click handler for checkboxes inside labels
- FixedPrettify pagination URLs on all listing pages, not just filtered ones
- FixedPrevent dual updateFacets emission breaking filter clicks
- Fixedvarious stability and compatibility improvements (35 fixes total)
- Fixedadmin list filters — sorting, searching, and filtering now work correctly on all columns
v1.0.02026-02-10
- Initialrelease: AJAX-powered product filtering for category and search result pages
- InitialAttribute, feature, price, and availability filters out of the box
- InitialSEO-friendly URL mode with htaccess rule generator
- InitialConfigurable filter block ordering and label customisation per attribute
v1.3.02026-01-08
- Addedfull compatibility with PrestaShop 9.x and Hummingbird theme
- Rebuilt AJAX request pipeline — filter changes now batch-debounce to reduce server load by ~60%
- Addedsticky filter sidebar option for long product listings on desktop
- ImprovedSEO-friendly URL generation: multi-value filters now produce canonical slug ordering
- Fixedprice slider not rendering correctly when tax display was set to 'without tax'
- Added'Clear all filters' button with animated badge showing active filter count
v1.2.02025-09-17
- Addedsmart combination logic — incompatible filter values are greyed out, not hidden
- Addedin-stock filter toggle with real-time product count
- Improvedmobile filter panel: full-screen drawer with sticky Apply/Reset buttons
- Fixedattribute filters not updating product count after category change without page reload
- Addedsupport for custom feature filters with configurable display order
v1.1.02025-05-06
- Addedbrand/manufacturer filter widget with optional logo display
- Improvedprice range slider with dual handles and direct numeric input fallback
- Fixedcanonical tag not reflecting active filter combination in URL
- Addedfilter preset saving — customers can bookmark filtered views
Demo
Test the full module before you buy
Buy a licence later and keep your settings.
- Your 30-day demo Test it on your own shop for 30 days from the first install.
- Ready demo shop Explore a ready demo shop in your browser.
- No registration No account, email or store domain needed.
By downloading, you accept the demo terms and privacy policy.
By opening this demo you accept the demo terms and the privacy policy.