PHPackages                             bright-cloud-studio/contao-isotope-cumulative-filter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. bright-cloud-studio/contao-isotope-cumulative-filter

ActiveContao-bundle[Security](/categories/security)

bright-cloud-studio/contao-isotope-cumulative-filter
====================================================

Extends Isotope's Cumulative Filter for Contao 4.13+ to replace session-based URL parameters with deterministic MD5 keys, preventing crawler URL explosion, and injects noindex/nofollow on filtered product list pages.

0361PHP

Since Mar 27Pushed 3mo agoCompare

[ Source](https://github.com/bright-cloud-studio/contao-isotope-cumulative-filter)[ Packagist](https://packagist.org/packages/bright-cloud-studio/contao-isotope-cumulative-filter)[ RSS](/packages/bright-cloud-studio-contao-isotope-cumulative-filter/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Contao Isotope Cumulative Filter
================================

[](#contao-isotope-cumulative-filter)

A drop-in Contao bundle that fixes Isotope's Cumulative Filter module to use deterministic, content-based URL parameters — preventing search engine robots from crawling an infinite stream of unique filter URLs. No reconfiguration required.

The Problem
-----------

[](#the-problem)

Isotope's native Cumulative Filter stores each unique filter combination as a row in `tl_iso_requestcache` and exposes the row's auto-increment integer ID in the URL as `?isorc=`. Because every unique filter combination produces a new, never-before-seen integer ID, search engine robots encounter an endless supply of distinct URLs and can crawl indefinitely — consuming crawl budget and potentially causing indexing issues.

The Solution
------------

[](#the-solution)

This bundle replaces the auto-increment integer in `?isorc=` with a deterministic MD5 hash of the filter configuration. The same combination of filters always produces the same hash, so robots never encounter a URL they haven't already seen. Pages with active filter parameters are also marked `noindex,nofollow` automatically.

The hash is resolved back to the corresponding database row ID transparently before Isotope's native lookup runs, so Isotope core requires no modifications and your existing frontend modules require no reconfiguration.

Requirements
------------

[](#requirements)

- PHP `^7.4 || ^8.0`
- Contao `^4.13 || ^5.3`
- Isotope eCommerce (with the `iso_cumulativefilter` frontend module)

Installation
------------

[](#installation)

```
composer require bright-cloud-studio/contao-isotope-cumulative-filter
```

After installation, run a Contao database update if prompted. Your existing Cumulative Filter modules will immediately use the new behaviour — no changes in the backend are needed.

How It Works
------------

[](#how-it-works)

### Module Override

[](#module-override)

The bundle registers its extended class against Isotope's existing `iso_cumulativefilter` key in `$GLOBALS['FE_MOD']`, replacing the default class transparently. Your existing Cumulative Filter frontend modules continue to work as-is — they just now go through the extended class instead of Isotope's original.

The extended class intercepts the filter save request, persists the filter state via Isotope's own `RequestCache::saveNewConfiguration()`, then reads the `config_hash` column and redirects to `?isorc=` instead of `?isorc=`.

### `InitializeRequestCacheListener` (Hook: `initializeSystem`)

[](#initializerequestcachelistener-hook-initializesystem)

Fires before Isotope initialises. When `?isorc=` contains a 32-character hex hash, it looks up the corresponding integer ID in `tl_iso_requestcache` and rewrites `$_GET['isorc']` in place. Isotope's unmodified `RequestCache::findByIdAndStore()` then proceeds normally. If the hash is not found (cache purged or stale URL), the parameter is removed entirely so Isotope does not mark the page as invalid.

### `GeneratePageListener` (Hook: `generatePage`)

[](#generatepagelistener-hook-generatepage)

Detects requests containing `isorc` or `cumulativefilter` query parameters and sets the page's robots directive to `noindex,nofollow`, keeping filtered pages out of search engine indexes.

License
-------

[](#license)

LGPL-3.0-or-later. See [LICENSE](LICENSE) for full terms.

Credits
-------

[](#credits)

Developed by [Mark St. Jean](mailto:mark@brightcloudstudio.com) at [Bright Cloud Studio](https://brightcloudstudio.com).

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance55

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/668894e0c020bf33db8ee7e3d1d80f864bb28e5ba7ed444eb9ba8770e9af2041?d=identicon)[BrightCloudStudio](/maintainers/BrightCloudStudio)

---

Top Contributors

[![bright-cloud-studio](https://avatars.githubusercontent.com/u/84467517?v=4)](https://github.com/bright-cloud-studio "bright-cloud-studio (86 commits)")

### Embed Badge

![Health badge](/badges/bright-cloud-studio-contao-isotope-cumulative-filter/health.svg)

```
[![Health](https://phpackages.com/badges/bright-cloud-studio-contao-isotope-cumulative-filter/health.svg)](https://phpackages.com/packages/bright-cloud-studio-contao-isotope-cumulative-filter)
```

###  Alternatives

[mews/purifier

Laravel 5/6/7/8/9/10 HtmlPurifier Package

2.0k18.0M137](/packages/mews-purifier)[paragonie/ecc

PHP Elliptic Curve Cryptography library

24772.0k35](/packages/paragonie-ecc)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
