[Intum Pomoc](https://intum.pl/pomoc.md) / [Szablony](https://intum.pl/pomoc/cms/szablony.md)

# [Edytor szablonu](https://intum.pl/pomoc/cms/edytor-szablonu-cms.md)

Pole **Zawartość** w formatce szablonu to zwykły HTML z domieszką Liquid - prostego języka
szablonów, w którym klamry `{{ }}` wstawiają zmienne, a `{% %}` warunki i pętle - oraz własnych znaczników `<cms ...>` na paragrafy i artykuły.

> [!PATH]
> [CMS → Szablony](app:/cms/layouts) → *wybrany szablon* → **Edycja**

## Zmienne {#zmienne}

Wymagana jest tylko jedna zmienna - `{{ content }}` - w to miejsce trafia treść bieżącej
strony. Bez niej treść strony po prostu dokleja się na końcu całego dokumentu, co zwykle
wygląda źle - dlatego warto ją zawsze wstawić.

Do dyspozycji jest też:

- dane bieżącej strony: `{{ name }}`, `{{ page.title }}`, `{{ page.path }}`, `{{ page.url }}`,
  `{{ html_title }}`, `{{ html_description }}`,
- dane witryny: `{{ site.name }}`, `{{ site.code }}`, `{{ site.description }}`,
  `{{ site.url }}`,
- pola szablonu (wspólne dla wszystkich stron z tym szablonem): `{{ layout.klucz }}` - patrz
  [Pola szablonu](#pola-szablonu),
- pomocnicze: `{{ base_path }}` (prefiks do budowania linków, np. `{{ base_path }}/kontakt`),
  `{{ year }}` (bieżący rok, przydatny w stopce przy prawach autorskich),
- pętla po stronach oznaczonych **W menu** (do budowy nawigacji):

```
<ul>
  {% for p in pages %}
    <li><a href="{{ base_path }}{{ p.path }}">{{ p.name }}</a></li>
  {% endfor %}
</ul>
```

Poza `{{ content }}` i tą pętlą po stronach, dostępne są też zmienne do wypisywania artykułów
i paragrafów - to opisuje osobno [Artykuły](cms/artykuly-cms) i
[Z czego składa się witryna](cms/cms-z-czego-sklada-sie-witryna).

## Wstawianie gotowych fragmentów {#wstawianie}

Nad edytorem są przyciski, które wklejają gotowy kod bez przepisywania go ręcznie:

- dla szablonu rodzaju **paragraf** - gotowe układy tekstu i listy/szczegółów artykułów
  (te same, których używa Szablon prezentacji paragrafu),
- dla szablonu rodzaju **strona** - **Wstaw szablon strony**: cały kod jednego z gotowych
  Szablonów systemowych (Bulma Fresh, BIP Prosty 1). Wstawienie ustawia też pole **Szablon
  systemowy** na wybrany plik.

## Pola szablonu {#pola-szablonu}

Tekst wpisany w klamrach, który nie jest poprawną zmienną Liquid (bo ma spacje, przecinki,
polskie litery), np. `{{ Rozwiązania internetowe dla firm }}`, po zapisie szablonu sam
zamienia się w pole. Z tekstu robi się krótki klucz (do 4 pierwszych słów, do 40 znaków,
bez krótkich spójników typu „z", „i", „w" na końcu) - dla przykładu wyżej będzie to
`rozwiazania_internetowe_dla_firm`, a w kodzie szablonu zostaje
`{{ layout.rozwiazania_internetowe_dla_firm }}`. Oryginalny tekst z klamr staje się
początkową wartością tego pola, widoczną potem w sekcji **Pola dodatkowe** formatki szablonu.

Wartość pola zmienia się albo tam, albo szybciej - klikając w napis na dowolnej stronie
w trybie edycji (patrz [Edycja wprost na stronie](cms/cms-edycja-na-stronie)); zmiana wchodzi
od razu na wszystkich stronach korzystających z tego szablonu.

## Podgląd {#podglad}

Przycisk **Podgląd** przy szablonie zachowuje się inaczej w zależności od tego, czy jakieś
strony już z niego korzystają:

- gdy tak - rozwija listę takich stron (od ostatnio zmienianej, do 10 pozycji) - klik otwiera
  podgląd szablonu z prawdziwą treścią tej strony, na osobnej karcie; na końcu listy jest
  dodatkowo **Tylko szablon**,
- **Tylko szablon** (jedyna opcja, gdy żadna strona jeszcze nie korzysta z szablonu) - pokazuje
  szablon z treścią wpisaną w polu **Przykładowa zawartość** zamiast prawdziwej strony. Ta
  przykładowa treść nigdy nie pojawia się na samej witrynie - służy tylko do podglądu.

## Gdy coś nie działa {#gdy-cos-nie-dziala}

**Zapisałem stronę na gotowym szablonie systemowym, a treść, którą napisałem, nigdzie się nie
pokazuje.** Sprawdź w kodzie szablonu (**Zawartość**), czy jest w nim `{{ content }}` - bez tej
zmiennej treść strony zwykle w ogóle się nie wyświetla (w najlepszym razie ląduje na samym końcu
dokumentu, poza widocznym układem). Pełna
lista przyczyn: [Strona wygląda pusto](cms/cms-problem-tresc-strony-niewidoczna).

**Dodałem stronę i zaznaczyłem „W menu", ale nie widzę jej w menu witryny.** Gotowe szablony
systemowe mają menu wpisane na sztywno w kodzie (linki do konkretnych adresów), a nie budowane
automatycznie z listy stron. Żeby nowa strona pojawiła się w menu takiego szablonu, trzeba
kliknąć **Dostosuj** i dopisać do niego link ręcznie - albo napisać własne menu pętlą
`{% for p in pages %}` (patrz [Zmienne](#zmienne)). Pełna lista przyczyn:
[Dodałem stronę, a nie ma jej w menu witryny](cms/cms-problem-strona-nie-w-menu).