Přeskočit na obsah

A603 — Zola

Jak generátor rozhoduje o routách, co umí load_data a čtyři pasti šablonovacího jazyka, na které v tomhle repozitáři každý najede.

A603Inženýrství 12 minVývojář

Po téhle lekci

  • Vysvětlíte, jak vzniká routa a proč potřebuje soubor v content/.
  • Použijete load_data k načtení konfigurace do šablony.
  • Vyhnete se čtyřem známým pastím šablonovacího jazyka.

Zola je statický generátor. Podstatné pro tenhle projekt: routa vzniká ze souboru v content/. To je celý důvod, proč existují generované adaptéry — kanonická data jsou JSON a Zola z JSON routu neudělá.

Sekce a stránky

_index.md dělá sekci (má pages, subsections), ostatní soubory jsou stránky. Šablona sekce k nim přistupuje přes section.pages, stránka ke své sekci přes get_section(path=…).

load_data

Načte TOML/JSON přímo v šabloně:

{% set learning = load_data(path="data/learning.toml") %}

Díky tomu můžou být popisky, pořadí a ikony v datech, ne v markupu. Používá to navigace, metadata i tahle vzdělávací vrstva.

Čtyři pasti

Shortcodes

Komponenty použitelné uvnitř markdownu: soubory v templates/shortcodes/, volané jako {% nazev() %}…{% end %}. Tělo se předává jako body; markdown v něm se vykreslí filtrem markdown.

Tímhle způsobem jsou udělané prvky lekcí — a importují tatáž makra, jaká používají šablony, takže markup existuje jednou.

Ověř si, že to sedí

Přidáte novou stránku pod content/, ale na webu se neobjeví. Čím začít?

Zobrazit odpověď

Třemi věcmi, v tomhle pořadí:

  1. Šablona v hlavičce. Chybějící nebo překlepnutá template znamená, že se stránka vykreslí výchozí šablonou — nebo že sestavení spadne.
  2. Je nadřazená sekce sekcí? Bez _index.md v adresáři Zola stránky uvnitř nesbírá a section.pages je nenajde.
  3. Neskončila v generovaném rozsahu? Pokud jste ji položili pod content/dossiers/** nebo content/entities/, synchronizace ji při dalším sestavení smaže — tam patří jen generované adaptéry.

Když sestavení projde a stránka existuje v public/, ale není vidět v navigaci, je to jiný problém: navigační strom se generuje z dat a novou stránku musí zahrnout příslušný generátor.

Kanonické znění pojmů

Lekce pojem vysvětluje. Závazná definice je tady — když se rozejdou, platí tahle stránka.