Liquid tags
Sellerlane themes use liquidjs with a set of Shopify-parity theme tags layered on top. Standard control flow works as expected, plus the tags below for sections, snippets, blocks, and section-scoped assets.
Standard Liquid tags
All standard liquidjs control-flow and variable tags are available, so you have the full Liquid surface:
if · unless · case / when · for · tablerow · assign · capture · increment · decrement · cycle · liquid · echo · raw · comment / #.
The legacy {% include %} tag is not allowed inside snippets rendered with {% render %} — use render instead.
Sellerlane theme tags
| Tag | Description |
|---|---|
form | Builds localized, CSRF-protected storefront forms for cart, product, contact, passwordless customer, address, language, comment, quote, and stock workflows. |
section | Renders a single section file from sections/. |
sections | Renders a section group (e.g. the header or footer group). |
render | Renders a snippet with an isolated scope. |
paginate | Splits a large list into pages and exposes the paginate object. |
schema | Defines a section’s settings, blocks, and presets as JSON. |
javascript | Section-scoped JavaScript, loaded once per section type. |
stylesheet | Section-scoped CSS, loaded once per section type. |
style | Inline <style> block that supports Liquid — ideal for settings-driven CSS. |
content_for | Renders a section’s theme blocks. See the two forms below. |
doc | Inline documentation block — stripped from output. |
content_for has two forms
The content_for tag renders theme blocks inside a section (or a theme block file). It takes a required first argument that must be the string literal 'blocks' or 'block':
{% content_for 'blocks' %}renders all of the section’s theme blocks in their saved order — the merchant adds, removes, and reorders them in the visual editor.{% content_for 'block', type: 'name', id: 'unique-id' %}renders a single static block of a given type at a fixed position. Bothtypeandidmust be plain string literals (no embedded{{ }}), and theidmust be unique within the same parent.
{% content_for 'block' %} is only valid inside section files and theme block files, and the requested type must be targeted by the current schema’s blocks definition (or @theme). 'blocks' only renders theme blocks — sections that define local blocks must iterate over section.blocks instead.
Apps are not supported
This storefront runtime does not run app blocks or app sections. Block or section types of @app (or any type containing ://) raise an “Apps are not supported” error, and {% sections %} of an app section group is unavailable. Build with native theme sections and blocks only.
render scope semantics
{% render %} runs a snippet in an isolated scope: it cannot see the variables of the calling template. Pass everything it needs explicitly.
{% render 'card' %}— renderssnippets/card.liquidwith no inherited locals.{% render 'card', title: product.title, badge: 'New' %}— passes named arguments as locals.{% render 'card' with product as item %}— passes a single value under an alias (defaults to the snippet name ifasis omitted).{% render 'card' for products as item %}— renders the snippet once per item, exposing aforloopobject.
For Shopify parity, the snippet name must be a quoted string literal — dynamic {% render variable %} names are disabled.
Next steps
form— supported form types, field shapes, CSRF, native/Ajax behavior, and rich product configuration.renderandcontent_for— full reference for each tag.- Theme blocks — how theme blocks are defined and targeted.
- Section schema — define a section’s settings, blocks, and presets.
- Liquid objects and Liquid filters.