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

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

## Czym są paragrafy?

Paragrafy to wielokrotnie używane bloki treści, które można wstawiać do różnych stron. Zamiast kopiować tę samą treść na wielu stronach, tworzysz paragraf raz i osadzasz go za pomocą tagu CMS.

## Kluczowe funkcje

- **Kod paragrafu** — unikalny identyfikator, którym odwołujesz się do paragrafu w szablonach i stronach
- **Kod pudełka (box_code)** — opcjonalny identyfikator pozwalający wstawiać paragraf tagiem `<cms type="box" id="kod"></cms>`
- **Treść Markdown lub HTML** — system automatycznie wykrywa format treści (GitHub Flavored Markdown lub HTML)
- **Szablon Liquid** — treść paragrafu obsługuje zmienne i logikę Liquid
- **Przypisanie do witryny** — paragraf może być globalny lub przypisany do konkretnej witryny
- **Własny szablon** — paragraf może mieć dedykowany szablon renderowania

## Wstawianie paragrafu na stronę

W treści strony lub szablonu użyj tagu:

```html
<cms type="box" id="moj-paragraf"></cms>
```

System zastąpi tag zawartością paragrafu o podanym `box_code`. Dzięki temu możesz centralnie zarządzać powtarzalnymi blokami (np. stopka, baner, informacja prawna) — zmiana w paragrafie automatycznie aktualizuje wszystkie strony.

## Podgląd

Każdy paragraf ma dostępny podgląd renderowanego HTML, aby sprawdzić jak będzie wyglądał na stronie.

---

## 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 — Paragrafy (Paragraphs)

### Endpointy

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

### Pola

| Pole | Typ | Wymagane | Opis |
|------|-----|----------|------|
| `code` | string | tak | Unikalny kod (zalecany format: `{site_code}-{nazwa}`) |
| `name` | string | tak | Nazwa |
| `kind` | string | tak | Typ — `text` |
| `content` | string | nie | Treść (HTML lub Liquid) |
| `markup` | string | nie | Format treści: `html` lub `markdown` (auto-detect jeśli puste) |
| `site_code` | string | nie | Code witryny |
| `page_code` | string | nie | Code strony (podłącza paragraf do strony) |
| `box_code` | string | nie | Kod boxa do grupowania (np. `"sidebar"`, `"footer"`) |
| `priority` | decimal | nie | Priorytet sortowania (wyższy = pierwszy) |
| `fields` | jsonb | nie | Własne pola (dostępne w Liquid jako `{{ pole }}`) |

### Grupowanie paragrafów (box_code)

Paragrafy z tym samym `box_code` mogą być wyświetlane razem na stronie przez tag CMS:

```html
<cms type="box" id="sidebar"></cms>
```

Wstawia wszystkie paragrafy z `box_code = "sidebar"`, posortowane po `priority`.

### Wielojęzyczne pola

Paragrafy obsługują wielojęzyczne pola w `fields`:

```json
{
  "paragraph": {
    "fields": {
      "pl": { "title": "O nas" },
      "en": { "title": "About us" }
    }
  }
}
```

System automatycznie wybiera pola na podstawie `locale` strony lub parametru `?locale=en`.

### Filtrowanie

- `?q=fraza` — szuka w name, code, box_code
- `?site_id=1` — filtrowanie po witrynie
- `?layout_id=2` — filtrowanie po szablonie