Navigation audit — luhacovice.cz

Porovnání spec MD 20230419 luhacovice navigation.md vs. živý stav new2.luhacovice.cz · 2026-05-06

Souhrn (TL;DR)

A. Menu na live: porovnání se spec

A.1 Spec (požadovaný stav)

A.2 Live (skutečný stav)

Sekce A — porozumění strukturní mezery:

B. Konkrétní problémy v menu

#CoKdeZávažnost
B1/clanky/nejvetsi-lakadla linkovaná z menu, ale je to prázdná článková kategorie (žádné články). Spec žádá content stránku /lazensti-hoste s odrážkami.Menu → "Proč do Luhačovic"Tomášův hit
B2"Sloupec 1" s href="#"placeholder zapomenutý v produkci.Menu → "Kde se ubytovat"P0
B3"Plánování cesty" v menu zcela chybí, ačkoli všech 7 stránek existuje.Menu top-levelP0
B4"Proč do Luhačovic" má v dropdownu jen 1 položku ze 7 person.MenuP0
B5"Co dělat a vidět" je flat link, ne dropdown.Menu top-levelP1
B6"O Luhačovicích" dropdown obsahuje sport a výlety (Turistika, Sportovní vyžití, Výlety po okolí), které spec řadí do "Co v Luhačovicích".MenuP1
B7"O Luhačovicích" v menu nemá: Fotogalerie, Webkamery, Mapa, Informační centra, Významné kulturní akce, Historie, Statistiky — přitom všech 7 stránek existuje (kromě /mapa = 404).MenuP1
B8"Kde se ubytovat" zobrazuje jen 3 z 21 SEO landingů (chybí kempy, glamping, valentýnské, silvestrovské … ač všechny jsou live).MenuP1
Sekce B — seznam menu problémů:

C. Stránky 404 — dle spec mají být

SlugSekce ve specPlán
/lazensti-hoste2 — Persona🆕 napsat (Tomášovy odrážky)
/pro-rodiny-s-detmi2 — Persona📦 import z WP, rozšířit
/mlade-pary2 — Persona📦 z WP (379)
/wellness-host2 — Persona📦 z WP (407)
/seniori2 — Persona📦 z WP (377)
/jednodenni-navstevnici2 — Persona📦 z WP (368)
/mapa1.4 — top-level📦 z WP (367, předělat)
/pobyty/rodinne1.5 — Pobyty🆕
/pobyty/vikendove1.5 — Pobyty🆕
/adresar/sluzby4.2 — Adresář📄 SEO landing
/gastronomie/kavarny-s-prazirnou4.3📄 SEO
/gastronomie/cajovny4.3📄 SEO
/lazenske-divadlo4.5 — Kultura🆕 (v adresáři ✅)
/kongresove-centrum-elektra4.5 — Kultura🆕 (v adresáři ✅)
/sport-vodni4.6 — Sport📦 merged
Sekce C — 404 stránky a plán:

D. Falešné 200 (Lara wildcard)

URLCo se zobrazí
/procedury/koupeleIdentický obsah jako /procedury (catchall)
/procedury/masaze= /procedury
/procedury/obklady-inhalace= /procedury
/procedury/vodni= /procedury
Sekce D — falešné 200 (procedury catchall):

E. Tenké stránky (<1500 znaků)

URLDélkaAkce
/koupaliste-duha923c📦 ve spec značeno "rozšířit!"
/pocasi607cDoplnit widget
/verejne-toalety855cOK seznam, ale chudé
/organizovane-vylety1191c📦 značeno "rozšířit!"
/pobyty/lazenske449cSEO landing — rozšířit intro
Sekce E — tenké stránky:

F. Stránky live, ale nelinkované z menu

Existují s plným obsahem, jen je z menu nikdo nenajde — stačí přidat menu položku.

SekceURL
1.2-1.9 O Luhačovicích/fotogalerie, /webkamery, /infocentra, /infocentrum-luhacovice, /infocentrum-lazne, /vyznamne-kulturni-akce, /historie-mesta, /historie-lazenstvi, /serenyiove, /luhacovicke-osobnosti, /folklorni-tradice, /statistiky, /co-se-leci, /wellness-pobyty
2 Proč do Luhačovic/svatba-v-luhacovicich, /pro-firmy, /konference, /co-s-detmi, /pro-deti
4 Co v Luhačovicích/akce, /kultura, /slavnosti, /kino, /trhy-a-jarmarky, /sportovni-vyziti + 14 dalších, /vylety-po-okoli + 5 dalších
6 Plánování cesty/planovani-cesty, /doprava, /parkovani, /pocasi, /kontakty, /verejne-toalety, /bohosluzby — celá sekce!
Sekce F — nelinkované stránky:

G. Otázky, kde spec MD potřebuje rozhodnutí

U každé otázky můžeš odpovědět tlačítky nebo komentářem — uloží se na server.

Q1 Gastronomie do menu úrovně 1?

Sekce 5 ve spec: „Otázka, jestli dávat do menu 1. úrovně." — Tomášova vlastní pochybnost. Live: je v menu na úrovni 1. Necháváme tak?


Q2 Plánování cesty zařadit do menu?

Sekce 6 ve spec: „(jestli nechat nebo později??)". Live: chybí v menu, ale 7/7 stránek existuje.


Q3 "Zajímavá místa" — duplicitní v menu?

4.4 spec: „stejná URL, dva vstupní body v menu". Necháváme jako duplicitní položku, nebo jen v 1.1?


Q4 1.1 vs 4.4 — jaký výčet?

1.1: Lázeňský park, Léčivé prameny, Významné stavby, Přehrada, Aquapark, Muzeum, Architektura.
4.4: Lázeňský park, Léčivé prameny, Jurkovičovy stavby, Přehrada, Muzeum, Architektura.
"Kopie" znamená 1:1 stejné, nebo redukovaný výběr ve 4.4?


Q5 Aquapark Duha vs koupaliště?

Spec píše „Aquapark Duha", v DB existuje pouze /koupaliste-duha (923c). Brand sjednotit?


Q6 Pobyty — rodinné a víkendové dopsat?

Chybí /pobyty/rodinne a /pobyty/vikendove (404).


Q7 Folklorní tradice — patří do Historie?

/folklorni-tradice existuje (18 553c), spec ji NEUVÁDÍ pod 1.8 Historie. Patří tam, nebo někam jinam?


Q9 Adresář — přesunout pod "Co v Luhačovicích"?

Spec žádá pod 4.2. Live: na úrovni 1.


Q10 Procedury sub-pages — vytvořit reálné podstránky?

/procedury/koupele atd. zatím jen vrací rodičovskou stránku. Vytvořit reálné podstránky (Koupele, Masáže, Obklady, Vodní) nebo zůstat u jedné spojené?


H. Návrh konkrétních úprav (klikací) — každá změna se provede SQLem do nav_items

0 souhlas · 0 nesouhlas · 0 komentář · 0 nerozhodnuto z 0 položek
I. Quick fixes (žádný nový obsah, jen menu)
P1 Skrýt placeholder „Sloupec 1" v dropdownu „Kde se ubytovat"

Zmizí prázdná položka Sloupec 1 s href="#". Riziko: žádné (skrývá fake položku).

SQL
UPDATE nav_items SET enabled=0 WHERE id=23 AND name='Sloupec 1';

II. Přidat existující stránky do dropdownu „O Luhačovicích"
P2Přidat „Fotogalerie" → /fotogalerie

Stránka existuje (1916c, rozcestník fotogalerie). Spec ji žádá pod 1.2.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/fotogalerie', 'Fotogalerie', 11, 12, 0, 0);

P3Přidat „Webkamery" → /webkamery

Stránka existuje (1794c, 7 webkamer + 69 sub). Spec ji žádá pod 1.3.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/webkamery', 'Webkamery', 11, 13, 0, 0);

P4Přidat „Informační centra" → /infocentra

Stránka existuje (4456c, rozcestník 2 IC). Spec ji žádá pod 1.6.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/infocentra', 'Informační centra', 11, 14, 0, 0);

P5Přidat „Významné kulturní akce" → /vyznamne-kulturni-akce

Stránka existuje (5772c). Spec ji žádá pod 1.7.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/vyznamne-kulturni-akce', 'Významné kulturní akce', 11, 15, 0, 0);

P6Přidat „Historie" (rozcestník) → /historie-mesta

Spec 1.8 žádá rozcestník Historie. Existují /historie-mesta (9866c), /historie-lazenstvi (6615c), /serenyiove, /luhacovicke-osobnosti, /folklorni-tradice. Návrh: linkovat top na „Historie města" + sub-položky níže.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/historie-mesta', 'Historie', 11, 16, 0, 0);

P7Přidat „Statistiky a fakta" → /statistiky

Stránka existuje (1830c). Spec ji žádá pod 1.9.

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/statistiky', 'Statistiky a fakta', 11, 17, 0, 0);

III. Přidat existující persony/stránky do dropdownu „Proč do Luhačovic"
P8Přidat „Nabídka pro firmy" → /pro-firmy

Stránka existuje (2008c). Spec 2 — „Nabídka pro firmy".

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/pro-firmy', 'Nabídka pro firmy', 96, 38, 0, 0);

P9Přidat „Konference a kongresy" → /konference (pod Pro firmy)

Stránka existuje (2397c). Spec 2 — pod „Pro firmy".

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/konference', 'Konference a kongresy', /* TBD: parent = id P8 z výše */, 39, 0, 0);

P10Přidat „Svatba v Luhačovicích" → /svatba-v-luhacovicich

Stránka existuje (8544c, plné info o svatbě). Spec 2 — pod „Mladé páry". Pokud Mladé páry zatím nevzniknou (P14), zařadit přímo do „Proč do Luhačovic".

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/svatba-v-luhacovicich', 'Svatba v Luhačovicích', 96, 40, 0, 0);

P11Přidat „Co dělat s dětmi" → /co-s-detmi

Existuje (3312c). Spec 2 — pod „Pro rodiny s dětmi".

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '/co-s-detmi', 'Co dělat s dětmi', 96, 41, 0, 0);

IV. Nový top-level „Plánování cesty" (závisí na Q2)
P12Přidat top-level „Plánování cesty"

Nový top-level v menu. Pod ním 4 podpoložky (P13-P16).

SQL
INSERT INTO nav_items (language_code, enabled, link, name, parent_id, `order`, new_tab, translate)
VALUES ('cs', 1, '', 'Plánování cesty', NULL, 7, 0, 0);
-- ID nového záznamu se použije jako parent pro P13-P16

P13Pod-položka „Jak se dostat" → /doprava

Existuje (2462c, 5711 chars v DB).

SQL
INSERT INTO nav_items (...) VALUES ('cs', 1, '/doprava', 'Jak se dostat', /* parent = P12 */, 1, 0, 0);

P14Pod-položka „Parkování a MHD" → /parkovani

Existuje (1592c).

SQL
INSERT INTO nav_items (...) VALUES ('cs', 1, '/parkovani', 'Parkování a MHD', /* parent = P12 */, 2, 0, 0);

P15Pod-položka „Počasí a sezóny" → /pocasi

Existuje (607c, tenké — v rámci samostatného úkolu doplnit widget).

SQL
INSERT INTO nav_items (...) VALUES ('cs', 1, '/pocasi', 'Počasí a sezóny', /* parent = P12 */, 3, 0, 0);

P16Pod-položka „Praktické rady a kontakty" → /kontakty

Existuje (2453c).

SQL
INSERT INTO nav_items (...) VALUES ('cs', 1, '/kontakty', 'Praktické rady a kontakty', /* parent = P12 */, 4, 0, 0);

V. Vytvořit chybějící content stránky + přidat do menu
P17Vytvořit /lazensti-hoste (Tomášův příklad — odrážky ze spec)

Tomášovy odrážky ze spec: Lázně spjaté s Jurkovičem a Janáčkem · Lázeňské procedury a minerální prameny · Podpořte léčbu hudbou a tancem · Zvyšte si fyzickou kondici · Odměňte se dobrým jídlem a pitím. Po vytvoření obsahu nahradit menu link /clanky/nejvetsi-lakadla/lazensti-hoste.

SQL (po vytvoření obsahu)
-- 1) INSERT do pages (přes náš pipeline)
-- 2) UPDATE menu:
UPDATE nav_items SET link='/lazensti-hoste', name='Lázeňští hosté' WHERE id=97;

P18Vytvořit /pro-rodiny-s-detmi (persona)

WP draft existuje (427c). Rozšířit dle odrážek ze spec: Aquapark Duha, dětské atrakce, atrakce v okolí, naučné stezky.


P19Vytvořit /mlade-pary (persona)

WP draft (379c). Spec: Romantika a wellness, Selfie z parku, Gastronomie, Diskotéka Elektra, Sportovní aktivity, Atrakce v okolí, Svatba.


P20Vytvořit /wellness-host (persona)

WP draft (407c). Spec: Vodoléčba, Komfortní ubytování, Nordic walking + cyklistika, Zpestřete si wellness kulturou, Lázeňská zážitková gastronomie.


P21Vytvořit /seniori (persona)

WP draft (377c). Spec: Za zdravím a malebnou přírodou, Pohodlné ubytování, Luhačovická kultura, Nordic walking/pétanque/rybaření, Oplatky a gastro, Výlety do okolí.


P22Vytvořit /jednodenni-navstevnici (persona)

WP draft (368c). Spec: V objetí přírody, Hala Vincentky, Tipy na léto/zimu, Sport, Lázeňský výlet za kulturou, Oplatky a gastro.


P23Vytvořit /mapa (interaktivní mapa)

WP měl 367c. Spec 1.4 žádá interaktivní mapu — máme připraveny GeoJSON v luhacovice_map.geojson a map_preview.html. Importovat jako stránku na /mapa.


VI. Strukturální změny (větší zásah)
P24Přesunout Turistika / Sportovní vyžití / Výlety po okolí z „O Luhačovicích" do „Co dělat a vidět"

Spec tyto stránky řadí do sekce 4 (Co v Luhačovicích / Sport / Výlety), live je má pod O Luhačovicích.

SQL
UPDATE nav_items SET parent_id=146 WHERE id IN (89, 22);  -- Turistika, Sportovní vyžití
UPDATE nav_items SET parent_id=146 WHERE id=10;          -- Výlety po okolí

P25„Co dělat a vidět" = rozcestník (zapnout 3 sloupce + doplnit položky dle spec 4.1-4.7)

Existují kostry sloupců (id 146, 151, 152), všechny enabled=0. Zapnout + doplnit do nich: Akce (★), Adresář (★), Gastronomie (★), Zajímavá místa, Kultura, Sport, Výlety. Velký INSERT batch.

SQL (velký batch)
UPDATE nav_items SET enabled=1 WHERE id IN (146,151,152);
-- + sada INSERTů: /akce, /adresar/*, /kultura/*, /sportovni-vyziti/*, /vylety-po-okoli/*

P26Přesunout „Adresář" pod „Co dělat a vidět" (Q9)

Spec žádá Adresář pod 4.2. Live: úroveň 1.

SQL
-- závisí na Q9; pokud souhlas:
UPDATE nav_items SET parent_id=151, `order`=42 WHERE id=5; -- Adresář pod sloupec 2 Co dělat a vidět

P27Procedury sub-pages — vytvořit nebo skrýt (Q10)

/procedury/koupele, /procedury/masaze, /procedury/obklady-inhalace, /procedury/vodni = falešné 200, vrací rodičovskou stránku. Buď napsat reálný obsah, nebo nesít odkazy na ně z menu/sitemapy.


P28Doplnit chybějící Ubytování-SEO sloty do menu (kempy, glamping, valentýnské, silvestrovské, …)

21 SEO landing stránek od Ondřeje (jsou live), z nichž v menu jen 5. Přidat zbývajících ~16.

SQL
-- 16x INSERT do nav_items pod parent_id=24 (Sloupec 3 Kde se ubytovat)
-- + možná další sloupec, ať se vejde

Postup po odsouhlasení

  1. Tomáš proklikne všechny položky (Q1-Q10 + P1-P28). Rozhodnutí se průběžně ukládají na server (nav_decisions.json + nav_decisions.log).
  2. Z odsouhlasených položek vygenerujeme staged SQL (záloha nav_items → batch SQL).
  3. SQL se aplikuje přes rozšířený publish.php (akce nav_apply) — atomicky.
  4. Po každé batchi: ověření v menu na homepage.
  5. V případě problémů rollback ze zálohy.

⏮ Dashboard · 📋 nav_decisions.json (raw) · 📜 nav_decisions.log (history)