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

# [Artykuły](https://intum.fr/aide/cms/artykuly.md) | [API](#api)

## Czym są artykuły?

Artykuły to wpisy blogowe lub newsowe, które można wyświetlać na stronach CMS. W odróżnieniu od stron, artykuły mają datę publikacji, autora i mogą być automatycznie publikowane i wygaszane według harmonogramu.

## Kluczowe funkcje

- **Planowanie publikacji** — ustaw datę *Publikuj od* i opcjonalnie *Publikuj do*, aby artykuł pojawiał się i znikał automatycznie
- **Kategorie** — pole *Kod kategorii* pozwala grupować artykuły (np. `aktualnosci`, `blog`, `poradniki`)
- **Streszczenie** — krótki opis artykułu wyświetlany na listach
- **Obrazek** — URL obrazka artykułu do miniaturki na liście
- **Autor** — imię i nazwisko autora artykułu
- **Akceptacja** — artykuł wymaga akceptacji przed publikacją (pole *Zaakceptowany*)
- **Ścieżka URL** — generowana automatycznie z tytułu lub ustawiona ręcznie
- **Meta SEO** — tytuł HTML, opis i słowa kluczowe
- **Markdown** — treść obsługuje GitHub Flavored Markdown, automatycznie wykrywany

## Wyświetlanie artykułów na stronie

Aby wyświetlić listę artykułów na stronie CMS, wstaw tag w treści strony:

```html
<cms type="article" category_code="aktualnosci" per_page="10">
  <list>
    <h2>{{ article.title }}</h2>
    <p>{{ article.abstract }}</p>
    <a href="{{ article.url }}">Czytaj więcej</a>
  </list>
  <show>
    <h1>{{ article.title }}</h1>
    <div>{{ article.content }}</div>
  </show>
</cms>
```

Tag `<list>` definiuje szablon listy artykułów z paginacją, a `<show>` — widok pojedynczego artykułu.

---

## 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 — Artykuły (Articles)

### Endpointy

| Metoda | Ścieżka | Opis |
|--------|---------|------|
| GET | `/cms/articles.json` | Lista artykułów |
| GET | `/cms/articles/:id.json` | Szczegóły artykułu |
| POST | `/cms/articles.json` | Utworzenie |
| PATCH | `/cms/articles/:id.json` | Aktualizacja |
| DELETE | `/cms/articles/:id.json` | Usunięcie |

### Pola

| Pole | Typ | Wymagane | Opis |
|------|-----|----------|------|
| `title` | string | tak | Tytuł artykułu |
| `published_at` | datetime | tak | Data publikacji (domyślnie: teraz) |
| `path` | string | auto | Ścieżka URL (auto-generowana z tytułu jeśli pusta) |
| `category_code` | string | nie | Kod kategorii do grupowania |
| `author` | string | nie | Autor |
| `abstract` | text | nie | Streszczenie/lead |
| `content` | text | nie | Pełna treść |
| `markup` | string | nie | Format: `html` lub `markdown` (auto-detect) |
| `image_url` | string | nie | URL obrazka głównego |
| `publish_to` | datetime | nie | Data zakończenia publikacji |
| `published` | boolean | nie | Opublikowany (domyślnie: true) |
| `accepted` | boolean | nie | Zaakceptowany (domyślnie: true) |
| `site_id` | integer | nie | ID witryny |
| `html_title` | string | nie | Meta tytuł SEO |
| `html_description` | text | nie | Meta opis SEO |
| `html_keywords` | string | nie | Meta słowa kluczowe |
| `fields` | jsonb | nie | Własne pola |

### Logika publikacji

Artykuł jest widoczny publicznie gdy spełnione są **wszystkie** warunki:
- `published = true`
- `published_at <= teraz`
- `publish_to` jest puste LUB `publish_to >= teraz`

Gdy `accepted = false`, system automatycznie ustawia `published = false`.

### Wyświetlanie na stronie CMS

Artykuły wyświetla się na stronie przez tag CMS w treści strony:

```html
<cms type="article" category_code="news" per_page="10">
  <list>
    <h3><a href="{{ path }}">{{ title }}</a></h3>
    <time>{{ published_at_date }}</time>
    <p>{{ abstract }}</p>
  </list>
  <show>
    <h1>{{ title }}</h1>
    <div>{{ content }}</div>
    <a href="{{ back_url }}">Powrót</a>
  </show>
</cms>
```

System automatycznie rozpoznaje listę (`/blog`) i widok artykułu (`/blog/tytul-artykulu`).

### Filtrowanie

- `?q=fraza` — szuka w title, abstract, content
- `?published=true` — tylko opublikowane
- `?accepted=true` — tylko zaakceptowane