logo Czechitas HTML a CSS 2

Data v Eleventy

Front Matter

V ukázce níže ukládáme do proměnné nadpis hodnotu Kontakt a do adresa Václavské náměstí 11. Tyto proměnné jsou dostupné jen na dané stránce.

---
layout: zakladni
nadpis: Kontakt
adresa: Václavské náměstí 11
---

Výpis

Hodnoty proměnných vypisujeme pomocí {{ nazev_promenne }}.

<h1>{{ nadpis }}</h1>
<address>{{ adresa }}</address>

Společná data pro více stránek

Data v souborech ve složce src/data/ ve formátu .json můžeme vypisovat na všech stránkách.

src/data/pobocky.json

[
{
"nazev": "Praha",
"adresa": "Václavské náměstí 837/11"
},
{
"nazev": "Brno",
"adresa": "Škrobárenská 511/3"
},
{
"nazev": "České Budějovice",
"adresa": "Lipová 1789/9"
}
]

Názvy hodnot a textové hodnoty musí být obalené ve dvojitých uvozovkách "…".

Hranaté závorky […] značí kolekci více položek.

Složené závorky {…} obalují podrobnosti položky.

Všechna data v souboru pobocky.json jsou k dispozici za tečkou {{ pobocky.* }}.

Výpis kolekce

V JSON ukázce výše máme kolekci. Pro výpis všech položek za sebou použijeme smyčku for.

<h1>Pobočky</h1>
{% for pobocka in pobocky %}
<section>
<h2>{{ pobocka.nazev }}</h2>
<address>{{ pobocka.adresa }}</address>
</section>
{% endfor %}

Více stránek podle jedné šablony

Kolekci můžeme využit pro vytvoření několika stránek podle jedné šablony. Vytvoříme novou stránku, třeba pobocka.njk, které do Front Matter dáme následující:

---
layout: zakladni
pagination:
data: pobocky
size: 1
alias: pobocka
permalink: '/pobocka/{{ pobocka.nazev | slug }}/'
---

<h1>{{ pobocka.nazev }}</h1>
<address>{{ pobocka.adresa }}</address>

Eleventy pro každou pobočku vytvoří vlastní HTML soubor.

Pokud bychom na jednotlivé stránky chtěli odkazovat, použijeme formát ze sekce permalink.

<a href="/pobocka/{{ pobocka.nazev | slug }}/">{{ pobocka.nazev }}</a>

Úkol na teď

Postupuj podle zadání na github.com/…/Cviceni-Eleventy-galerie.