[Intum](https://intum.fr/aide.md) / [CMS](https://intum.fr/aide/cms.md)

# [Szablony](https://intum.fr/aide/cms/szablony.md) | [API](#api)

## Czym są szablony?

Szablony (layouty) definiują wygląd i strukturę HTML stron oraz paragrafów. Szablon zawiera szkielet strony (nagłówek, nawigacja, stopka, style CSS) z miejscem na treść — oznaczonym tagiem `{{ content }}`.

## Rodzaje szablonów

- **Szablony stron** (`kind: page`) — opakowują całą stronę w layout HTML (np. `<html>`, `<head>`, nawigacja, stopka)
- **Szablony paragrafów** (`kind: paragraph`) — definiują wygląd pojedynczych bloków treści

## Kluczowe funkcje

- **Placeholder `{{ content }}`** — wymagany tag w szablonie strony, w który system wstawia treść strony
- **Kod szablonu** — unikalny identyfikator do odwoływania się z poziomu stron
- **Przypisanie do witryny** — szablon może być globalny lub przypisany do konkretnej witryny
- **Szablony systemowe** — gotowe presety (np. Bulma Fresh) do szybkiego startu
- **Obraz podglądu** — miniatura szablonu widoczna na liście szablonów
- **Przykładowa treść** — pole demo content do podglądu szablonu z przykładową zawartością

## Hierarchia szablonów

System wybiera szablon dla strony w następującej kolejności:

1. **Szablon strony** — jeśli strona ma przypisany własny szablon
2. **Szablon witryny** — domyślny szablon ustawiony w witrynie
3. **Sama treść** — jeśli brak szablonu, renderowana jest tylko treść strony

## Zmienne Liquid w szablonach

Szablony obsługują zmienne Liquid, m.in.:

- `{{ page.name }}`, `{{ page.path }}` — dane aktualnej strony
- `{{ site.name }}`, `{{ site.code }}` — dane witryny
- `{{ pages }}` — lista stron widocznych w menu
- `{{ year }}` — aktualny rok
- `{{ content }}` — treść strony

---

## API

### Ogólne API

# Intum API

Dokumentacja API platformy [Intum](https://intum.pl) - system operacyjny firmy.

## Host

Host jest zawsze taki sam jak adres konta: `xxxx.intum.com` lub `xxx.intum.pl` (w zależności od ustawień konta)

## Autoryzacja

Wszystkie requesty API wymagają `api_token`:
- header: `Authorization: Bearer TOKEN`

Token możesz wygenerować w **Ustawienia Konta** → **Tokeny API**

## API — Szablony (Layouts)

### Endpointy

| Metoda | Ścieżka | Opis |
|--------|---------|------|
| GET | `/cms/layouts.json` | Lista szablonów |
| GET | `/cms/layouts/:code.json` | Szczegóły (po code lub id) |
| POST | `/cms/layouts.json` | Utworzenie |
| PATCH | `/cms/layouts/:code.json` | Aktualizacja |
| DELETE | `/cms/layouts/:code.json` | Usunięcie |

### Pola

| Pole | Typ | Wymagane | Opis |
|------|-----|----------|------|
| `code` | string | tak | Unikalny kod (zalecany format: `{site_code}-layout`) |
| `name` | string | tak | Nazwa |
| `kind` | string | tak | Typ — `page` (szablon strony) lub `paragraph` (szablon paragrafu) |
| `content` | string | tak | Szablon HTML z `{{ content }}` jako placeholder na treść strony |
| `example_content` | string | nie | Przykładowa treść do podglądu szablonu |
| `site_id` | integer | nie | ID witryny |
| `system_template` | string | nie | Kod systemowego szablonu (np. `"bulma_fresh"`) |
| `image` | file | nie | Obrazek szablonu (załącznik) |
| `fields` | jsonb | nie | Własne pola |

### Ważne

- Szablon **musi** zawierać `{{ content }}` — w tym miejscu wstawiana jest treść strony
- Szablony używają **Liquid** — dostępne zmienne: `{{ site.name }}`, `{{ page.name }}`, `{{ pages }}` (lista stron menu), `{{ year }}`, `{{ paragraphs }}`
- Szablon typu `page` stosuje się do stron, typu `paragraph` do paragrafów

### Filtrowanie

- `?q=fraza` — szuka w name, code
- `?site_id=1` — filtrowanie po witrynie
- `?kind=page` — filtrowanie po typie