Odkedy som prekonvertoval blog na Zolu, začal som v príspevkoch trochu viac používať obrázky. Stále si nie som istý, či je to správne, ale zatiaľ mi pomáha sprostredkovať informácie nad rámec textu.

Na vloženie fotografie do príspevku sú v Zole k dispozícii aspoň dve hlavné možnosti: statické assety a kolokovanie assetov. Použitie statických assetov je vhodnejšie pre ikony a logá — všeobecne pre assety zdieľané medzi viacerými príspevkami — takže skúmame druhú možnosť, kolokovanie assetov.

Kolokovanie zhruba znamená, že stránka a assety, ktoré vyžaduje, sa nachádzajú v rovnakom adresárovom strome. Zvyčajne je príspevok súbor .md umiestnený niekde blízko vrcholu adresára content/. Znamená to, že by sme tam mali umiestniť aj fotografie? Nebolo by to zmätočné — toľko súborov Markdown a obrázkov pohromade? No práve preto sa vytvárajú dedikované adresáre. Presne tá istá stránka môže existovať na dvoch miestach (ale nie na oboch súčasne). Buď ako samostatný súbor:

content/je-emacs-lepsi-nez-vim.md

Alebo v dedikovanom adresári ako index.md:

content/je-emacs-lepsi-nez-vim/index.md

Kolokovanie assetu jednoducho znamená, že obrázok je umiestnený v dedikovanom priečinku príspevku vedľa neho a referencovaný z príspevku:

content/je-emacs-lepsi-nez-vim/index.md
content/je-emacs-lepsi-nez-vim/fotografía-flamewaru.jpg

Pod kapotou sa toho deje viac, ale dokumentácia Zoly to pokrýva. Chcem sa zamerať na proces prechodu od prvej možnosti k druhej. To sa mi stáva, keď chcem pridať obrázok do existujúceho staršieho príspevku pri jeho aktualizácii, alebo keď začnem písať príspevok a potom si uvedomím, že k nemu potrebujem pridať asset. V podstate sa to stáva celkom často.

Čo je potom potrebné urobiť, sú tieto tri kroky za sebou:

  1. Získajte názov súboru príspevku bez jeho prípony .md
  2. Vytvorte priečinok s názvom súboru (ak sa pre slugy používajú výstupné cesty)
  3. Presuňte príspevok do neho ako index.md

Prvýkrát, keď som to musel robiť ručne, ma to otravovalo, takže som napísal tento skript, ktorý za mňa vykoná kroky “folderize”:

#!/bin/bash

fullname=$(basename -- "$1")
filename="${fullname%.*}"

mkdir "$filename"
mv "$fullname" "$filename/index.md"

Uložte tento skript do adresára content/, kde sú všetky vaše súbory .md, ako folderize.sh a urobte ho spustiteľným cez chmod +x folderize.sh. Potom ho môžete spustiť takto:

./folderize je-emacs-lepsi-nez-vim.md

Zostáva jedna posledná vec — uistite sa, že sa tento skript pri spustení zola build nezkopíruje do priečinka public/. Na tento účel je k dispozícii konfiguračná možnosť ignored_content pre config.toml:

ignored_content = ["*.sh"]

A to je všetko!