Skip to content

Theme architecture

Sellerlane themes use the Liquid template language with a structure familiar to anyone who has worked with Shopify themes.

Directory layout

FolderContents
layout/theme.liquid — the wrapper for every page (<head>, header/footer, {{ content_for_layout }})
templates/JSON templates per page type (index.json, product.json, collection.json, cart.json, blog.json, article.json, page.json, search.json, password.json, 404.json, plus customers/* and policy)
sections/Reusable section files (.liquid) with a {% schema %} describing settings and blocks
snippets/Partials included with {% render %}
assets/CSS, JS, images — referenced with asset_url
config/settings_schema.json (global theme settings) and settings_data.json (their values)
locales/Translation files used by the t filter

Sections and blocks

A JSON template lists sections in order; each section’s schema defines its settings and the block types it accepts. Merchants edit all of this visually in the theme editor — sections can be added, reordered, and configured without touching code.

{% schema %}
{
"name": "Featured products",
"settings": [
{ "type": "text", "id": "heading", "label": "Heading" },
{ "type": "collection", "id": "collection", "label": "Collection" }
],
"blocks": [
{ "type": "product", "name": "Product", "settings": [] }
],
"max_blocks": 12,
"presets": [{ "name": "Featured products" }]
}
{% endschema %}

Setting types

Themes can use: text, textarea, richtext, html, liquid, number, range, checkbox, select, radio, color, color_background, color_scheme, font_picker, image_picker, video, url, link_list, page, blog, article, collection, collection_list, product, product_list, metaobject, and more.

Many text and resource settings support dynamic sources — binding the value to product fields or metafields so the right content renders per page automatically.

Editing code

Online store → Themes → Edit code opens the file editor. Themes can also be imported as a ZIP. Every change is versioned: drafts are previewed safely and applied to the live store only on publish.