
mFilter
Faceted filtering for MODX 3 with SEO URL support


All settings use the mfilter. prefix and live in the mfilter namespace.
| Setting | Default | Description |
|---|---|---|
mfilter.core_path | {core_path}components/mfilter/ | Path to component core |
mfilter.assets_path | {assets_path}components/mfilter/ | Path to assets |
mfilter.assets_url | {assets_url}components/mfilter/ | Assets URL |
| Setting | Default | Description |
|---|---|---|
mfilter.seo_urls_enabled | true | Enable SEO-friendly URLs |
mfilter.url_separator | _ | Separator between key and value in URL (brand_apple) |
mfilter.values_separator | -or- | Separator for multiple values (red-or-blue) |
mfilter.trailing_slash | true | Add trailing slash to URL |
With default settings:
/catalog/brand_apple/color_red-or-blue/price_1000-5000/With url_separator = - and values_separator = ,:
/catalog/brand-apple/color-red,blue/price-1000-5000/| Setting | Default | Description |
|---|---|---|
mfilter.default_limit | 20 | Default items per page |
mfilter.max_limit | 100 | Maximum items per page |
mfilter.default_sort | pagetitle | Default sort field |
mfilter.default_sortdir | ASC | Default sort direction |
| Setting | Default | Description |
|---|---|---|
mfilter.seo_noindex_filtered | false | Add noindex for all filtered pages |
mfilter.seo_noindex_multiple | true | Add noindex when multiple values of one filter are selected |
mfilter.seo_canonical_base | true | Canonical points to the category base page |
mfilter.seo_max_filters | 3 | Maximum active filters for indexing |
seo_noindex_filtered = true → noindex for any filtering
seo_noindex_multiple = true → noindex for color_red-or-blue (multiple selection)
seo_max_filters = 3 → noindex if more than 3 filters are active| Setting | Default | Description |
|---|---|---|
mfilter.cache_enabled | true | Enable caching |
mfilter.cache_lifetime | 3600 | Result cache lifetime (seconds) |
mfilter.cache_router_lifetime | 86400 | URL router cache lifetime (seconds) |
Cache is cleared automatically when:
Manual clear: mFilter → Maintenance → Clear cache
| Setting | Default | Description |
|---|---|---|
mfilter.morpher_api_key | `` | Morpher API key for automatic word form generation |
mfilter.wordforms_auto_generate | true | Auto-generate word forms |
For automatic declension you can use Morpher API:
mfilter.morpher_api_keyFree tier: 1000 requests per day.
| Setting | Default | Description |
|---|---|---|
mfilter.slugs_auto_generate | true | Auto-generate slugs for values |
mfilter.slugs_transliterate | true | Transliterate Cyrillic to Latin |
| Value | slugs_transliterate | Slug |
|---|---|---|
| Red | true | red |
| Value in Cyrillic | true | krasnyj (transliterated) |
| Value in Cyrillic | false | (value unchanged in URL) |
| Apple iPhone | true | apple-iphone |
| Setting | Default | Description |
|---|---|---|
mfilter.debug_profiler | false | Enable profiler for performance debugging |
When the profiler is on, the AJAX response includes a profiler section:
{
"success": true,
"data": { ... },
"profiler": {
"total_time": 0.045,
"queries": 12,
"memory": "2.5 MB"
}
}| Setting | Default | Description |
|---|---|---|
mfilter.register_frontend | true | Auto-register CSS/JS on the frontend |
mfilter.auto_submit | true | Submit form automatically when filters change |
mfilter.auto_submit_delay | 300 | Auto-submit delay (ms) |
| Setting | Description |
|---|---|
mfilter.frontend_assets | JSON array of CSS/JS files to load |
Default:
[
"[[+cssUrl]]web/mfilter.css",
"[[+jsUrl]]web/core/ApiClient.js",
"[[+jsUrl]]web/core/FilterAPI.js",
"[[+jsUrl]]web/modules/hooks.js",
"[[+jsUrl]]web/mfilter.headless.js",
"[[+jsUrl]]web/ui/FilterUI.js",
"[[+jsUrl]]web/mfilter.slider.js",
"[[+jsUrl]]web/mfilter.js"
]To load scripts manually:
mfilter.register_frontend = false<link rel="stylesheet" href="/assets/components/mfilter/css/web/mfilter.css">
<script src="/assets/components/mfilter/js/web/mfilter.headless.js"></script>
<script src="/assets/components/mfilter/js/web/ui/FilterUI.js"></script>
<script src="/assets/components/mfilter/js/web/mfilter.js"></script>mfilter.seo_urls_enabled = true
mfilter.seo_noindex_multiple = true
mfilter.seo_max_filters = 2
mfilter.seo_canonical_base = truemfilter.cache_enabled = true
mfilter.cache_lifetime = 7200
mfilter.cache_router_lifetime = 86400
mfilter.default_limit = 24
mfilter.max_limit = 48mfilter.seo_urls_enabled = false
mfilter.auto_submit = true
mfilter.auto_submit_delay = 500