# Dane sekcji: pola panelu, stare klucze i normalizacja

> Jak wygląda zapis treści sekcji, dlaczego część stron miała klucze niewidoczne w panelu i co robi komenda sections:normalize.

Opublikowano: 2026-08-04 · Aktualizacja: 2026-10-07
Źródło: https://kompasfirm.pl/dokumentacja/dane-sekcji-i-normalizacja

---
## Model danych

Treść podstrony to lista sekcji. Każda sekcja ma typ (np. `eq_product_detail`) i tablicę `data` z wartościami pól. Zestaw pól opisuje rejestr sekcji — to on decyduje, co edytor pokazuje w formularzu i jak zapisuje wartość: pojedynczy tekst, listę wierszy, powtarzalne grupy albo kwotę.

Zapis sekcji jest scalający: klucze nieobecne w żądaniu zostają nietknięte. Dzięki temu częściowy zapis (np. ze skryptu) nie kasuje treści, której nie dotyczył.

## Skąd biorą się „stare klucze"

Strony budowane wcześniej importerami miały w danych klucze pod inną nazwą, niż czyta je widok i formularz panelu. Skutek był podwójny: treści nie dało się poprawić w panelu, a część z nich w ogóle się nie renderowała — widok szukał nazwy kanonicznej.

Najczęstsze przypadki:

- pasek CTA z `text` zamiast `subheading` (gubił podtytuł),
- pasek CTA z `cta_label` / `cta_url` zamiast `button_label` / `button_url` (gubił oba przyciski),
- pola listowe zapisane jako jeden ciąg znaków zamiast listy,
- klucze po funkcjach, których już nie ma (`breadcrumb` w nagłówku strony i karcie produktu, `target` w kategoriach obrazkowych).

## Jak to działa teraz

Mapowanie starych nazw na kanoniczne dzieje się w trzech miejscach: przy renderowaniu strony, przy otwieraniu edytora i przy zapisie sekcji. Treść zapisana starym kluczem renderuje się więc od razu, a pierwszy zapis z panelu sprowadza ją do nazwy, którą rozumie formularz.

Klucze bez konsumenta są pomijane — nie dostają pola w panelu, bo nic ich nie czyta.

## Przepisanie danych na stałe

```bash
php artisan sections:normalize                 # wszystkie witryny
php artisan sections:normalize subdomena       # jedna witryna
php artisan sections:normalize --dry-run       # tylko policz zmiany
```

Komenda jest idempotentna: drugie uruchomienie nie zgłasza już nic do zmiany. Zapisuje wyłącznie sekcje, nie rusza dat publikacji ani historii wersji, i po zmianie czyści pamięć podręczną witryny.

## Kiedy jej użyć

Po zaimportowaniu strony ze starszego payloadu albo po migracji treści z zewnętrznego źródła. Przy zwykłej pracy w panelu nie jest potrzebna — panel od razu zapisuje nazwy kanoniczne.
