Theme settings, locales and assets

Theme-wide settings, text translations and stylesheet/script files are managed through these three mechanisms.

settings_schema.json

config/settings_schema.json is the theme's own settings schema. It is an array; each element is a settings group with a name and settings. The group named theme_info is only the theme's identity card and carries no settings. Settings use the same types and validation as section schemas.

config/settings_schema.json
[
  { "name": "theme_info", "theme_name": "İlk Tema", "theme_version": "1.0.0" },
  {
    "name": "Renkler",
    "settings": [
      { "type": "color", "id": "vurgu_rengi", "label": "Vurgu rengi", "default": "#00fdc7" }
    ]
  }
]

Where values live

A setting is read through settings by its id in a template. It resolves as: the schema default first (or the type's natural default), then the value the merchant picked in the editor. Merchant values are stored by the platform; the config/settings_data.json file is not read at render time, so do not put values there, give a default in the schema instead. The old value of a setting removed from the schema is ignored.

Zone
<body style="--vurgu: {{ settings.vurgu_rengi }}">

Colour schemes are supported: up to 10 schemes, each carrying background, text, button and button_label colours.

Locales

Translation files live in the locales/ folder. The file whose name ends in .default.json is the base; the locales/LANGUAGE.json file for the store's language is laid over it key by key. In templates the t filter reads them by dotted key.

locales/tr.default.json
{
  "genel": { "telif": "© {{ magaza }} — Zone ile çizildi" },
  "karsilama": { "alt_yazi": "Bu sayfa en küçük örnek temadan çiziliyor." }
}
Zone
{{ 'genel.telif' | t: magaza: shop.name }}

Variables are written in double curly braces in the translation text and passed to the filter as named parameters. If a key is missing, the key itself is printed so the gap stays visible. Plural forms are not supported. The active language is the store's default language.

Assets

The URL of a file in the assets/ folder is produced with the asset_url filter; it carries a version parameter that changes when the file changes. stylesheet_tag and script_tag turn that URL into a ready tag.

Zone
{{ 'tema.css' | asset_url | stylesheet_tag }}
{{ 'tema.js' | asset_url | script_tag }}
<img src="{{ product.featured_image | image_url: width: 600 }}" alt="">

Only assets with the css, js, mjs, svg and txt extensions are served from the store domain; subfolders are not allowed and asset files are not processed as templates. For images, use the store's files and product images with the image_url filter rather than the assets folder; the filter appends width, height and crop parameters to the URL.