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.
[
{ "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.
<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.
{
"genel": { "telif": "© {{ magaza }} — Zone ile çizildi" },
"karsilama": { "alt_yazi": "Bu sayfa en küçük örnek temadan çiziliyor." }
}
{{ '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.
{{ '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.