Schema i ustawienia
Typy kontrolek, wartości domyślne i stabilne identyfikatory.
Sekcja i schema
Każdy plik sections/*.html i blocks/*.html ma osobny plik o tej samej nazwie z rozszerzeniem .schema.json. Przykład: sections/hero.html oraz sections/hero.schema.json. Schema nie pojawia się w HTML strony.
<section>
<h1 data-text-field="[[ section.settings_path ]].title">
[[ section.settings.title ]]
</h1>
<template gs-slot="blocks"></template>
</section>*.schema.json:
{
"name": "Sekcja powitalna",
"settings": [
{
"type": "text",
"id": "title",
"label": "Nagłówek",
"default": "Witaj"
}
],
"blocks": [
{
"type": "@theme"
}
],
"max_blocks": 12,
"presets": [
{
"name": "Sekcja powitalna"
}
]
}section.settings i block.settings zawierają zapisane wartości, a dla brakujących pól wartości default. Pusty tekst, false oraz 0 są pełnoprawnymi wartościami i nie zostają zastąpione domyślnymi. Otwarcie formularza nie zapisuje zmian.
Dostępne kontrolki
| Typ | Dane / zachowanie |
|---|---|
text, textarea |
Tekst; wybór własnej wartości lub dynamicznego źródła |
url |
Adres HTTP(S), względny, kotwica, mailto: lub tel: |
image_picker |
Adres obrazu; obecnie pole URL, nie przeglądarka plików |
color |
Wspólny custom picker i HEX; także transparent |
range |
Suwak oraz liczba; wymagane min, max, step, default; opcjonalne unit |
number |
Pole liczbowe |
select, radio |
Wspólna custom lista opcji value / label |
checkbox |
Wartość logiczna |
font_picker |
Inter, Arial lub Georgia |
header, paragraph |
Informacja w panelu, bez zapisywanej wartości; wymagane content |
Identyfikator ustawienia pozostaje stabilny między wersjami. Nie używaj constructor, prototype ani __proto__. HTML wpisany przez klienta jest wyświetlany jako tekst, nie wykonywany.
Typy związane z produktami, kolekcjami, metaobiektami, materiałami wideo i edytorem HTML nie są obecnie częścią tego kontraktu. Istniejący bogaty edytor tekstu GrowSite działa przez powiązania data-text-field.
Przykłady kontrolek
[
{"type":"header","content":"Wygląd"},
{"type":"range","id":"radius","label":"Zaokrąglenie","min":0,"max":48,"step":1,"default":16,"unit":"px"},
{"type":"color","id":"background","label":"Tło","default":"#ffffff"},
{"type":"checkbox","id":"show_link","label":"Pokaż link","default":true},
{"type":"select","id":"alignment","label":"Wyrównanie","default":"left","options":[{"value":"left","label":"Do lewej"},{"value":"center","label":"Do środka"}]}
]Liczbę zapisuj jako 16, nie "16px". Jednostkę dodaj przy renderowaniu: border-radius:{{ block.settings.radius }}px. Sama etykieta unit nie tworzy stylu CSS.
Każde ustawienie powinno mieć sensowną wartość początkową. Preset określa stan nowo dodanej instancji, nie migruje zapisanych danych. Zmiana wartości domyślnej może wpłynąć na wcześniej nieustawione pola; jawnie zapisane wartości pozostają.
ID zaczyna się literą lub podkreśleniem; dalej dopuszcza litery, cyfry, podkreślenia i myślniki, maksymalnie 80 znaków. Tablica ustawień ma limit 100 pozycji. Nie dodawaj komentarzy ani końcowych przecinków do JSON. Schema nie wykonuje wyrażeń Loom.
Kontrolka schema nie oznacza automatycznie, że każdy element HTML można kliknąć. Podłącz edycję na podglądzie.