Skip to content

Regions: Header & Footer

Regions are site-wide section groups pinned around every template — the header above each page, the footer below it. Unlike page sections, which belong to a single template and go through draft → publish revisions, a region is stored once per site and shows up on every page the moment you save it.

Page sectionsRegions
ScopeOne templateThe whole site
VersioningDraft + published revisionsSingle stored state
Publish stepSave, then PublishSave applies immediately
Edited fromThe default editor viewThe pinned Header / Footer entries

How pinning works

The editor's left rail pins an edit entry for each enabled region around the page's own sections:

  • Regions placed above the body (header, announcement) are pinned at the top of the rail.
  • Regions placed below the body (footer) are pinned at the bottom.

Clicking a pinned entry switches the whole editor into region mode: the canvas shows just that region on the site's real theme tokens, the section rail edits the region's sections, and Save writes straight to the region (there is no separate Publish — regions have no revisions). A "Back to page sections" link returns to the template you came from.

The placement is fixed per region (a footer is always below the body); which regions exist is yours to configure.

Choosing which regions are pinned

The regions.enabled key in config/filamentcraft.php controls which regions render on the public site and which edit entries are pinned in the editor:

php
'regions' => [
    'enabled' => ['header', 'footer'],
],

Allowed values: announcement, header, footer.

  • Order matters — regions sharing a placement render in the order listed. Put announcement before header so the bar sits above the navigation.
  • Removing a region hides it everywhere: it stops rendering on the public site and its pinned entry disappears from the editor. Stored content is kept, so re-enabling the region brings it back intact.
  • A ?region= URL for a disabled region is ignored — the editor falls back to normal page editing.

Enabling the announcement bar

php
'regions' => [
    'enabled' => ['announcement', 'header', 'footer'],
],

This pins an Announcement bar entry above the Header entry in the editor rail and renders its sections above the site header on every page.

php
'regions' => [
    'enabled' => ['header'],
],

The footer entry disappears from the editor and nothing renders below the page body — useful when the host application owns the footer markup itself.

How regions are stored and rendered

Each region is a row in filamentcraft_regions — one per site per region name — holding a flat {order, sections} payload. On the public site, the renderer assembles the shell as:

announcement   ┐ regions placed above the body, in config order
header         ┘
{page body}    ← the template's own sections
footer         ← regions placed below the body

Custom dynamic pages built with the <x-filamentcraft::layout> component get the same enabled regions automatically — header, footer, and announcement wrap whatever you put in the slot.

Any section type can live in a region; the same catalog, settings, and live-preview behaviour apply as on a page. Saving a region flushes the site's fragment cache, so the change is visible on the live site immediately.

Next steps

  • The Editor — the full editor workspace tour.
  • Seeding & Blueprints — pre-fill region content (header, footer) when provisioning starter sites for new tenants.
  • Dynamic Pages — reusing the shell (with regions) on custom routes.
  • Custom Sections — building section types you can drop into a header or footer.

Proprietary — distributed via Anystack.