Jak to funguje — princip
Stránka galerie.html se negeneruje ručně. Skládá se ze dvou částí:
- data/in/fotky/fotky.cfg — textový seznam fotek. Jeden řádek = jedna fotka (soubor, popis, kategorie, příp. umístění na hl. stránce).
- galerie-VZOR.html / index-VZOR.html — šablony se vším ostatním (hlavička, záložky, struktura stránky). Řešíš je jen při změně designu.
Skript tools/galerie-build.sh z configu a šablon složí galerie.html
i hlavní stránku index.html. Pro přidání nebo výměnu fotky tedy stačí
upravit řádek v fotky.cfg a skript spustit — žádné HTML.
fotky.cfg (fotky) nebo šablony galerie-VZOR.html / index-VZOR.html (design/struktura).
Připrav fotku — velikost
Fotky v galerii se zobrazují v mřížce, ne na celou obrazovku. Originál z foťáku (klidně 7 MB) je zbytečně velký a zpomalil by web hlavně na mobilu.
Pokud používáš vlastní úpravu (Lightroom, Photoshop…), exportuj rovnou na 1200 px. Jednorázově to zvládne i online nástroj na zmenšení obrázku.
Pojmenuj soubor a ulož do data/in/fotky/
Snímek ulož do zdrojové složky data/in/fotky/ (smí být i v podadresáři, např.
2026/cerven/fotka.jpg). Odtud ho build sám zkopíruje do
web/stage/fotky/ — ručně do fotky/ nic nedávej.
aikido-trenink-2026.jpgkeramicka-dilna-ruce.jpg
Vyber kategorii — hodnota data-cat
Každá fotka má atribut data-cat se slugem kategorie (krátký
kód bez diakritiky). Podle něj galerie fotku zařadí pod správný filtr. Slug je shodný
s hashtagem kategorie na hlavní stránce.
| data-cat (slug) | Kategorie |
|---|---|
| neviditelnypribeh | Příběh firmy a řemesla |
| nehranarodina | Rodinné focení (děti) |
| svedeknereziser | Fotografická reportáž |
| esencecloveka | Přirozený portrét |
| nastopecasu | Generační focení |
| sdilenacesta | Komunity a spolky |
| pametcasu | Dlouhodobý dokument |
| autorskedilo | Autorská tvorba |
| odlozenimasky | Osobní setkání |
| kdyzjsmespolu | Když se rodina sejde (rodinné události) |
data/in/fotky/fotky.cfg (komentář nahoře).
Přidej řádek do data/in/fotky/fotky.cfg
Otevři data/in/fotky/fotky.cfg a na konec (nebo kam chceš fotku v pořadí)
přidej jeden řádek. Tři pole oddělená svislítkem |:
soubor.jpg|alt text|hashtag1 hashtag2 @umisteni
Příklad:
keramicka-dilna-ruce.jpg|Ruce hnětou hlínu na hrnčířském kruhu|neviditelnypribeh
- soubor.jpg — cesta k souboru v
data/in/fotky/(přesně, i velikost písmen; smí mít podadresář). - alt text — krátký popis fotky (pro čtečky, SEO; ukáže se i pod zvětšenou fotkou).
- hashtagy — slug(y) kategorie z tabulky v kroku 3 (určují, kde je fotka v galerii).
- @umístění — nepovinné; kde se fotka objeví na hlavní stránce (viz box níže).
# je komentář
(skript ho přeskočí), prázdné řádky nevadí.
@, které řeknou, kde se fotka použije na index.html.
Fotka jen se značkou @ (bez slugu kategorie) je jen na hl. stránce, v galerii se neukáže.
| @umístění | Místo na hlavní stránce / počet fotek |
|---|---|
| @karusel | hero karusel nahoře — ~4 fotky (jiný počet = varování, méně než 2 = chyba) |
| @nahled | pruh „Výběr z portfolia" — násobek 3 (3/6/9…), ideálně 6 (jinak varování; ne-násobek 3 = chyba) |
| @okruh-firmy | náhled okruhu „Pro firmy a organizace" — právě 1 |
| @okruh-soukromi | náhled okruhu „Pro vás a vaše blízké" — právě 1 |
| @okruh-autorska | náhled okruhu „Volná tvorba" — právě 1 |
| @about | portrét v pruhu „O mně" — právě 1 |
@karusel-1, @karusel-2, … @nahled-1 …
(bez čísla = fotka jde na konec). Pořadí fotek v galerii to nemění — to dál určuje pořadí
řádků v cfg, takže karusel lze seřadit nezávisle na galerii.
# reportáž v galerii + 2. fotka v karuselu i v náhledu na_dune.jpg|Konverzace na duně|svedeknereziser @karusel-2 @nahled-2
@<slug> (slug kategorie z kroku 3, např. @esencecloveka).
Musí být u právě jedné fotky v rámci kategorie — když chybí nebo je víckrát, build se
zastaví. Titulní fotku změníš tak, že @<slug> přesuneš na řádek jiné fotky.
# tahle fotka uvádí kartu kategorie „Přirozený portrét" portret.jpg|Přirozený portrét|esencecloveka @esencecloveka
Více kategorií u jedné fotky
Fotka může patřit do víc kategorií zároveň (např. focení komunitní akce = reportáž i komunity). Slugy napiš do třetího pole oddělené mezerou:
akce.jpg|Společná oslava klubu|svedeknereziser sdilenacesta
Taková fotka se pak ukáže ve filtru Reportáž i ve filtru Komunity a spolky a samozřejmě i ve „Vše".
Spusť skript — složí galerii i hlavní stránku
Z kořene projektu spusť skript. Ten nejdřív zkontroluje celý config
a teprve když je vše v pořádku, přepíše galerie.html i index.html:
# jen kontrola configu (nic nezapíše) tools/galerie-build.sh --check # kontrola + složení galerie.html a index.html tools/galerie-build.sh
Vypíše počet fotek, kolik jich je v které kategorii a přehled @umístění. Pak fotku
dostaneš do produkce stejně jako každou jinou změnu ve stage —
přes tools/promote.sh --go a tools/deploy.sh --go.
web/stage/: python3 -m http.server 8000 →
otevři http://localhost:8000/galerie.html?kat=<slug> a zkontroluj,
že je fotka ve správném filtru.
Co skript hlídá — a co neměnit
Skript při každém běhu kontroluje a při jakékoli chybě nic nezapíše (vypíše, co je špatně a na kterém řádku):
- řádek má přesně tři pole oddělená
|; - soubor opravdu existuje v
data/in/fotky/(odchytí překlep ve jméně); - alt text není prázdný;
- každý hashtag je platný slug kategorie (jinak hlásí překlep);
- každé
@umístěníje platné a počty sedí (@okruh-*/@aboutprávě 1,@nahlednásobek 3,@karuselaspoň 2) — jinakindex.htmlnesloží; - každá kategorie má titulní fotku karty (
@<slug>) u právě jedné fotky.
js/galerie.js v mapě CATS (jeden zdroj pravdy, shodný
s hlavní stránkou). Přidání fotky se jich netýká.
Rychlý checklist
- Fotka zmenšená na 1600–2048 px delší strana, JPG, ~400–800 KB.
- Název souboru bez diakritiky a mezer, uložený do
data/in/fotky/. - Do
data/in/fotky/fotky.cfgpřidán řádeksoubor.jpg|alt|hashtagy @umístění. - Hashtag = slug kategorie z tabulky (víc kategorií oddělit mezerou);
@umístěníjen pokud má jít i na hl. stránku. - Spuštěn
tools/galerie-build.sh— bez chyb. - Ověřeno otevřením
galerie.html?kat=<slug>(a u homepageindex.html) — fotka je na správném místě.
Galerie projektů — samostatná galerie
Někdy chceš galerii, která nepatří do hlavního portfolia: grafika pro sociální
sítě, dlouhodobý projekt, nebo galerie k jednomu blogu. To je galerie projektů (ad-hoc):
žije samostatně na vlastní adrese /g/<slug>/, ale je dosažitelná z webu
(pruh na hlavní stránce, odkaz na stránce Galerie, rozcestník /g/, patička).
Princip je stejný jako u hlavní galerie — složka s configem → build složí stránku — jen je každá galerie ve své vlastní složce a má vlastní jednoduchou stránku (mřížka + lightbox).
data/in/galerie/). Hlavní galerie,
fotky.cfg ani index.html se jich netýkají.
Vytvoř složku galerie
Pro každou galerii jedna složka v data/in/galerie/. Jméno složky je slug
(malá písmena bez diakritiky a mezer) — objeví se i v URL.
# např. galerie pro grafiku na sociální sítě data/in/galerie/socialni-grafiky/
Do složky nahraj obrázky — klidně do podsložek (např. 2025/leto/akce.jpg).
Vytvoř galerie.cfg a nastav meta
Do složky přidej textový soubor galerie.cfg. Nahoře meta — řádky
#! klíč: hodnota. Hodnota je celý zbytek řádku (žádné komentáře za hodnotou):
# meta galerie #! titul: Sociální grafiky #! intro: Grafiky pro Facebook, Instagram a Threads. #! slug: socialni-grafiky #! verejne: ano #! homepage: ano #! cover: ukazka-1.jpg
| klíč | význam |
|---|---|
| titul | název galerie (nadpis stránky i karta v rozcestníku) |
| intro | jedna věta pod nadpisem |
| slug | jméno v URL /g/<slug>/ — nepovinné (default = jméno složky) |
| verejne | ano = je v rozcestníku /g/; ne = jen draft ve stage (nikam neodkazuje) |
| homepage | ano = galerie patří i na hlavní stránku (zatím rezerva — na homepage je společný pruh „Galerie projektů" na rozcestník) |
| cover | náhledová fotka do rozcestníku — nepovinné (default = 1. fotka) |
Přidej řádky s fotkami
Pod meta přidej řádky cesta|popis (třetí pole „tagy" je u galerie projektů
nepovinné). Pořadí řádků = pořadí v galerii. Cesta je relativně ke složce galerie.
ukazka-1.jpg|Popisek grafiky 2025/leto/akce.jpg|Z letní akce
data/in/fotky/), použiješ cestou
../../fotky/<soubor>. Build ji nekopíruje — galerie na ni jen ukáže.
# sdílená fotka z hlavní galerie ../../fotky/bar.jpg|Sdílená fotka z hlavní galerie
Slož galerii
# jen tahle galerie (rychlé) tools/galerie-adhoc-build.sh socialni-grafiky # nebo všechno najednou (hlavní web + všechny galerie projektů) tools/galerie-build.sh # jen kontrola, nic nezapíše tools/galerie-adhoc-build.sh --check
Vznikne web/stage/g/<slug>/index.html (+ složka fotky/ s kopiemi
vlastních fotek) a přestaví se rozcestník web/stage/g/index.html. Skript zkontroluje
existenci fotek a neprázdné popisky; upozorní na velké soubory.
web/stage/g/… je generované — ruční změny příští build přepíše. Měň galerie.cfg
(fotky/meta) nebo šablony galerie-adhoc-VZOR.html / galerie-projekty-VZOR.html (design).
Kde se galerie objeví
Galerie je samostatná, ale ne skrytá — vede na ni:
- Rozcestník
/g/— karty všech galerií sverejne: ano. - Hlavní stránka — pruh „Galerie projektů" (odkaz na rozcestník).
- Stránka Galerie — odkaz „Galerie projektů →" nad patičkou.
- Patička (na index i galerii) — tichý odkaz na
/g/.
#! verejne: ne — galerie se postaví do stage, ale nikam se neodkazuje.
Až bude hotová, přepni na ano a spusť build.
Pomocné skripty (volitelně)
Stejné nástroje jako u hlavní galerie, jen jim dáš složku galerie jako argument — hodí se při více grafikách najednou:
# doplní nové obrázky do galerie.cfg jako prázdné řádky tools/fotky-scan.sh data/in/galerie/socialni-grafiky # tabulka s náhledy → vyplníš popisky v SeaMonkey → zpět tools/fotky-html.py to-html data/in/galerie/socialni-grafiky tools/fotky-html.py to-cfg data/in/galerie/socialni-grafiky
fotky.html vznikne přímo ve složce galerie (vedle galerie.cfg); sdílené fotky
../../fotky/… v ní needituj.
Checklist — galerie projektů
- Složka
data/in/galerie/<slug>/s obrázky. galerie.cfg: meta (aspoňtitulaverejne: ano) + řádkycesta|popis.- (volitelně) fotky z hlavní galerie přes
../../fotky/<soubor>. - Spuštěn
tools/galerie-adhoc-build.sh— bez chyb. - Ověřeno otevřením
web/stage/g/<slug>/a rozcestníkuweb/stage/g/.