
Filterable grid
Section filterable_grid shows rows with filters in the URL. Chunk: pagebuilderpro_filterable_grid. Requires PageBuilder Pro and capability datasources.
- Pick a datasource:
modx-resources,pagebuilder-tables, orminishop3. - For tables set the
tablekey. - On the site the filter form updates the URL (
pb_fg_{sectionId}_*). Pagination keeps search, sort, andf_*.
Pagination in the chunk uses range and foreach. Fenom {for} is not supported here.
Query operators match the dynamic list: eq, contains, in, gte, lte, between, empty, not_empty. contains is case-insensitive, including Cyrillic. Keys sql, php, snippet, and class are rejected. Page size is at most 100.
Filter labels come from the table schema column label, not from the field key. An image column is excluded from filters and sorting. After submit the form stays on #pb-{id}. A page number past the last page is clamped to the last page.
The section is part of the page context so the HTML cache does not freeze the filter.
Fields
| Field | Type | Required | Purpose |
|---|---|---|---|
title | text | no | Section title |
datasource | datasource | yes | Provider and query |
limit | number | no | Page size |
Render
The form uses method="get". Parameter prefix is pb_fg_{id}_. DatasourceSectionEnricher writes it to filter_param_prefix. Names: search, sort, dir, f_{field}, page. Field id is skipped in the filter inputs.
Pagination is drawn when page_count is greater than 1. An empty result uses lexicon pagebuilder_fe_filter_empty, fallback No items. Errors match dynamic list.
Section data
{
"title": "Catalog",
"datasource": {
"provider": "modx-resources",
"table": "",
"filters": [],
"sort": [{ "field": "menuindex", "direction": "asc" }],
"search": "",
"limit": 12
},
"limit": 12
}Similar sections
- Dynamic list without a filter form
- Products grid for a miniShop3 storefront via
msProducts
