Storefront zones — extension blocks in any theme
A CLOSED enum of places on the storefront where an extension's block (a kit-tree) can appear. Zones are rendered by the platform's sections and page renderer, so every zone exists in every theme; the block is drawn through the ACTIVE theme's element kit, never with its own CSS or JS. Placement is owner-driven: installing an extension never injects anything; the owner (or an agent via design.zone.place) places a block, and it lives in the store bundle (layout.zones). Nothing renders inside the checkout enclave or on /siparis (ADR 0021).
| zone | where |
|---|---|
header.utility | header actions row, before the cart button |
header.below | under the header row (above the page) |
home.top | home page, above the first section |
home.bottom | home page, after the last section |
product.gallery.after | product page, under the gallery |
product.below-buybox | product page, under the add-to-cart box |
product.after-description | product page, after the description |
product.bottom | product page, after the last section |
collection.before-grid | collection page, above the product grid |
collection.after-grid | collection page, under the product grid |
cart.top | cart page, above the lines |
cart.bottom | cart page, after the summary |
footer.above | footer, above the columns |
page.top | static + extension pages, above the first section |
page.bottom | static + extension pages, after the last section |
Limits: ≤ 4 fills per zone, fill config ≤ 4096 bytes. A fill of a disabled or uninstalled extension is simply absent (never broken). Commands: design.zone.place, design.zone.remove, design.extpage.add, design.extpage.remove (all proposal-able for Ajan tokens).