Kategorie¶
Stav k 2026-06-21.
Kde žijí kategorie — tabulka menu¶
Kategorie nejsou ve vlastní tabulce. Jsou součástí obecné tabulky menu, která slouží zároveň pro navigaci, statické stránky i kategorie e-shopu. E-shopové kategorie se filtrují přes nazev = 'E-shop (kategorie)' a web_id.
menu obsahuje i záznamy typu Stránka, Hlavička, Odkaz — při migraci je nutné filtrovat správně, jinak se nemigrují jen kategorie ale celé menu.
Stromová struktura¶
Adjency list model — každý záznam má rodic_id. Žádné nested sets ani closure table.
| Pole | Popis |
|---|---|
rodic_id |
FK na menu.id rodiče (0 = kořen) |
guroven |
globální hloubka stromu |
gporadi |
globální pořadí (přes celý strom) |
poradi |
lokální pořadí v rámci rodiče |
Slugy — dva systémy¶
Každá kategorie má dva typy URL:
| Pole | Popis |
|---|---|
odkaz |
plná CS URL cesta (např. rc-modely-a-prislusenstvi/auta) |
odkaz_sk |
plná SK URL cesta |
odkaz_zkraceny |
krátký alias (např. auta) — používá se jako kanonická URL |
odkaz_zkraceny_sk |
krátký alias pro SK |
Migrace: Sylius má jeden slug per locale. Nutno rozhodnout, co se mapuje — odkaz_zkraceny (krátký) nebo odkaz (plná cesta). Při kolizi krátkého aliasu bylo historicky přidáváno -{id}.
Překlady — tabulka menu_jazyky¶
| Pole | Popis |
|---|---|
jazyk |
cs, sk, en, de, pl, hu |
polozka |
název kategorie (navigace, breadcrumb) |
titulek |
H1 / nadpis stránky kategorie |
seo_titulek |
<title> stránky |
seo_klicova_slova |
meta keywords |
seo_popis |
meta description |
text |
marketingový text zobrazený na stránce kategorie (HTML) |
Pole seo_* a text jsou obsah zobrazovaný na frontendu na URL dané kategorie — jde o marketingové / SEO texty, ne jen interní metadata.
Nevyřešená architektura
Sylius Taxon tyto pole nativně nemá. Nejpřímější cesta je rozšířit Taxon o custom pole (seo_title, seo_description, atd.) přes Sylius resource customization — ale je to nutno záměrně rozhodnout.
Otázky k zodpovězení: Bude existovat jiná vrstva pro správu obsahu kategoriových stránek, nebo vše bude v Taxonu? Kdo a kde bude texty editovat po spuštění?
Speciální pole¶
| Pole | Popis | Sylius ekvivalent |
|---|---|---|
aktivni |
kategorie je aktivní / viditelná | enabled |
prislusenstvi |
jde o kategorii příslušenství — ovlivňuje filtrování | custom příznak |
vychozi_druh_trideni |
výchozí řazení produktů — raw SQL ORDER BY string, např. novinka DESC, sleva_procent DESC |
Sylius sorting options — nutno mapovat |
razeni_stitky |
0/1 — řadit produkty v kategorii podle štítků (labels na produktu) | custom sort logika |
remarketing_fb, remarketing_google |
kategorie je zahrnuta do remarketingových feedů | custom nebo feed konfigurace |
gpc |
Google Product Category ID (číselný kód) — tahá XML feed přes prvni_kategorie produktu |
custom atribut kategorie |
foto |
obrázek kategorie | Sylius media |
vazba_astra, vazba_pelikan |
vazba na dodavatele — v cron skriptech se nepoužívá, pravděpodobně archiv | — |
extra |
neznámé využití | — |
li_id, li_class, a_id, a_class |
HTML atributy pro renderování menu — prezentační vrstva | nevracet do Sylius modelu |
Přiřazení produktů — eshop_produkty_kategorie¶
Jednoduchá vazební tabulka produkt_id + kategorie_id. Obsahuje také aktualizovano (flag, pravděpodobně pro inkrementální sync).
Jeden produkt může být ve více kategoriích.
menu_cz2sk — dvě jazykové stromy?¶
Tabulka mapuje CS kategorie na SK kategorie (cz_id → sk_id). Naznačuje, že CZ a SK strom nejsou totožné záznamy — mohou mít jinou strukturu nebo pořadí. Nutno ověřit před migrací.
Rozsah a výkon¶
1 600 kategorií, 5 úrovní zanoření.
Sylius používá pro taxony nested sets (ne adjacency list jako starý e-shop). Import 1 600 kategorií s přepočtem nested set indexů bude časově náročný — nutno řešit dávkově nebo jednorázovým přímým zápisem lft/rgt hodnot bez průběžného přepočtu.
Hledání kategorie: ID vs. URL¶
Starý systém hledá kategorii primárně přes id (rychlý index). URL slug (odkaz_zkraceny) je sekundární — používá se pro routování, ale interně se pracuje s id.
V Syliusu je standardní hledání přes slug. Při 1 600 kategoriích a 5 úrovních musí být slug indexován a dotaz nesmí procházet celý strom. Pokud frontend nebo importy budou potřebovat lookup přes id (legacy), musí taxon nést legacy_id jako extra pole.
Virtuální kategorie¶
Vedle standardního stromu existují virtuální kategorie — URL adresy, které nejsou součástí navigačního stromu, ale fungují jako plnohodnotné stránky kategorie. Do virtuálních kategorií se produkty přiřazují ručně (stejná vazební tabulka eshop_produkty_kategorie) a na tyto URL lze odkazovat z jiných kategorií nebo obsahu.
Proč vznikly: jako náhrada za parametrické filtrování. Pokud nebyla k dispozici parametrizace produktů, kolega vytvořil virtuální kategorii pro daný průřez katalogu (např. "Stavebnicové sady Eduard limitované edice") — produkty tam ručně přidal a URL lze sdílet nebo prolinkovat.
Technicky: pravděpodobně záznamy v tabulce menu s nazev = 'E-shop (kategorie)', ale s příznakem nebo strukturou mimo hlavní navigaci. Nutno ověřit přesnou podmínku, která je odlišuje.
Migrace: Sylius Taxons virtuální kategorie nativně nerozlišuje — každý Taxon může být viditelný nebo skrytý z navigace (enabled). Virtuální kategorie lze migrovat jako Taxony s enabled = false v navigaci, ale s vlastní URL a přiřazenými produkty. Nutno rozhodnout, zda se budou po migraci spravovat takto, nebo zda je nahradí parametrické filtrování Meilisearch.
Co potřebuje rozhodnutí při migraci¶
- SEO / marketing texty — nebudou na taxonu. Kde budou žít a jak se napojí na URL kategorie?
- Slug strategie — krátký (
odkaz_zkraceny) nebo plná cesta (odkaz)? Přesměrování starých URL? - Nested set import — jak importovat 1 600 kategorií bez O(n²) přepočtu stromu.
- Lookup výkon — slug musí mít index; zvážit
legacy_idna taxonu pro zpětné mapování. vychozi_druh_trideni— raw SQL ORDER BY string nelze přenést přímo. Nutno zmapovat na Sylius sort options.gpc— musí zůstat na kategorii, protože Google feed ho tahá zprvni_kategorieproduktu.menu_cz2sk— ověřit, zda CZ a SK mají shodný strom, nebo je SK samostatný.prislusenstviflag — jak se projevuje ve frontendu a zda Sylius potřebuje ekvivalent.- Virtuální kategorie — migrovat jako skryté Taxony, nebo nahradit Meilisearch facety? Nutno projít seznam s kolegou a rozhodnout per-kategorie.