PageBuilder
Visual section builder for MODX 3. Draft and publish without overwriting resource content

The package ships six snippets. Chunk and section namespace: pagebuilder.
| Snippet | Purpose |
|---|---|
| PageBuilder | HTML of published sections for the current or given resource |
| PageBuilderResource | Sections from another resource (resource_id required) |
| PageBuilderSitemap | XML sitemap for pages with published sections |
| PageBuilderUtmSession | UTM from query string into session for section visibility rules |
| PageBuilderUtmUrl | Registry UTM appended to any URL |
| PageBuilderTableRows | Resource data table rows (JSON or chunk) |
data_table section.Use PageBuilderResource for a block from another page (hero from home, FAQ from a landing).
| Purpose | MODX | Fenom |
|---|---|---|
| Page sections | [[!PageBuilder]] | {'!PageBuilder' | snippet} |
| Section filter | [[!PageBuilder? §ion_types=hero,cta]] | {'!PageBuilder' | snippet : ['section_types' => 'hero,cta']} |
| Another resource | [[!PageBuilderResource? &resource_id=42]] | {'!PageBuilderResource' | snippet : ['resource_id' => 42]} |
| JSON for SEO | [[!PageBuilder? &return_values=1]] | {'!PageBuilder' | snippet : ['return_values' => 1]} |
| Sitemap | [[!PageBuilderSitemap]] | {'!PageBuilderSitemap' | snippet} |
| UTM session | [[!PageBuilderUtmSession]] | {'!PageBuilderUtmSession' | snippet} |
| URL with UTM | [[!PageBuilderUtmUrl? &url=/contacts/]] | {'!PageBuilderUtmUrl' | snippet : ['url' => '/contacts/']} |
| Table rows | [[!PageBuilderTableRows? &table_key=prices]] | {'!PageBuilderTableRows' | snippet : ['table_key' => 'prices']} |
Call PageBuilder and PageBuilderResource uncached ([[!...]] or {'!...' | snippet}). Otherwise MODX may serve stale HTML after publish.
Call PageBuilderUtmSession uncached too: the session is filled in the same HTTP request as the UTM landing.