Scope
page_seo is always present, so ${ page_seo.title ?? theme.settings.title }
resolves without an undefined.
Components and layouts receive everything above except the page’s {sections}.
In a block template, block.settings holds the block’s values and section
resolves outward to the enclosing section.
storefront
The complete object. It contains no products, cart or user.
Two fields duplicate information held elsewhere in the object:
presentment_rates_jsoncarries the rate table pre-serialised, since Slurp has nojsonfilter. Embed it with| jsand parse it withJSON.parse.oauth_googleandoauth_githubare flat booleans, since{if}cannot test array membership.oauth_providersremains the canonical list.
Fetching products
Products are not in the render context.- Server, at render
- Browser
{fetch} runs during the render pass, so the HTML arrives complete. Use it
for content that must be in the initial markup or indexed by a crawler.Money
Prices arrive as strings, since they are decimals on the server..toFixed()
on one throws.
These helpers are defined by the theme, not the platform. See
JavaScript.