Przejdź do głównej zawartości

Edytowalna sekcja = dane + schemat + render

Projektuj swobodnie. Ale zanim zgłosisz pracę, każda sekcja z treścią przechodzi panelizację. Edytowalna sekcja to zawsze trzy rzeczy naraz:

  1. Dane — klucz sekcji w src/content/<strona>/{pl,en}.json.
  2. Schemat — wpis w src/content/settings/<strona>-schema.json. Typy pól: text, textarea, image, objectArray, stringArray, group, odwołanie do rekordu (ref), wybór. Etykiety po polsku i angielsku.
  3. Render — komponent czyta wyłącznie z tych JSON-ów.

Panel sam rysuje formularz ze schematu. Klucz, którego nie ma w schemacie, jest w panelu niewidzialny, bez komunikatu. sc push wypisuje takie klucze, a kontrakt treści traktuje je jako naruszenie.

Nowa podstrona to jeszcze wpis w src/content/settings/pages.json (klucz, etykiety, katalog treści, opcjonalnie path). Strona sama pojawi się w panelu, a aktualizacje jej nie skasują.

Reguły, o których łatwo zapomnieć:

  • Obrazki. Każde pole obrazka deklaruje media.ratio (np. "16:9", także w grupach i listach) — bez tego kontrakt nie przejdzie. Wartość pola to baza drabinki rozmiarów, a render robi <Pic> z właściwym sizes. Obrazek jest wspólny dla wszystkich języków.
  • Reguły pól. maxLength, minLength, required, pattern z komunikatem. Panel pokazuje licznik i odmawia zapisu. Daj maxLength nagłówkom i przyciskom — to tańsze niż zgłoszenie „rozjechało się na telefonie”.
  • Sekcja powtarzana ma klucz typ--instancja.
  • Języki są dynamiczne (site.json, pierwszy jest domyślny). Nie wpisuj pl|en na sztywno. Kontrakt sprawdza też, że strona pod /en/ ma lang="en", a sekcje zgadzają się między językami.
  • Atomy wyglądu. Elementy oznaczone data-sc-atom (plakietka, przycisk, pole) muszą mieć regułę w arkuszu.

Jeśli schemat ma uszkodzoną sekcję, panel ją pominie i nazwie powód. Reszta działa.