Skip to content
  1. Extras
  2. PageBuilder
  3. Frontend output
  4. Snippets

PageBuilder snippets

The package ships six snippets. Chunk and section namespace: pagebuilder.

SnippetPurpose
PageBuilderHTML of published sections for the current or given resource
PageBuilderResourceSections from another resource (resource_id required)
PageBuilderSitemapXML sitemap for pages with published sections
PageBuilderUtmSessionUTM from query string into session for section visibility rules
PageBuilderUtmUrlRegistry UTM appended to any URL
PageBuilderTableRowsResource data table rows (JSON or chunk)

Typical page order

  1. PageBuilderUtmSession in the site layout when section UTM rules apply (once per request, before section render).
  2. PageBuilder in the template or resource content field.
  3. PageBuilderTableRows separately when a table is rendered outside the data_table section.

Use PageBuilderResource for a block from another page (hero from home, FAQ from a landing).

MODX / Fenom reference

PurposeMODXFenom
Page sections[[!PageBuilder]]{'!PageBuilder' | snippet}
Section filter[[!PageBuilder? &section_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']}

Caching

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.

See also