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:
- Získajte názov súboru príspevku bez jeho prípony
.md - Vytvorte priečinok s názvom súboru (ak sa pre slugy používajú výstupné cesty)
- 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!