Připravujeme
Rozšíření dokončujeme a zatím není v prodeji. Chystaná cena je 1 125 Kč ročně. Popis níž odpovídá připravované verzi 0.3.4.
XML sitemapa pro Joomlu a VirtueMart
Online generovaná sitemapa s cache na disku, jazykovými alternativami hreflang a kolektory pro VirtueMart
Jeden balíček. Deset tisíc produktů za deset sekund. Sdílený hosting stačí.
Sitemapa je první věc, kterou si Google od e-shopu přečte — a u větších katalogů na sdíleném hostingu často to jediné, co se nikdy nepostaví celé. Generátory, které skládají všechno v jednom požadavku, vyprší na časovém limitu, statické soubory stárnou a VirtueMart přidává adresy, které na webu vůbec neexistují. SemaSitemap staví mapu po krocích, ukládá ji na disk a robotovi vydá vždy jen hotový, ověřitelný soubor.
Proč to potřebujete
Vyhledávač indexuje jen to, co najde. Sitemapa mu říká, které adresy existují, v jakém jazyce a která je ta kanonická. Když ji web nemá, nebo v ní stojí adresy vracející 404 a přesměrování, přichází o část katalogu, aniž by to kdo poznal.
Co vyhledávače chtějí
- Úplný seznam adres, které web opravdu vrací s kódem 200
- U vícejazyčného webu alternativy
hreflangu každé adresy - Soubory do 50 000 adres a index, který je spojuje
- Mapu, která se obnovuje s obsahem — ne jednou za měsíc ručně
Kde běžná řešení selhávají
- Generátor skládá celý katalog v jednom požadavku — na sdíleném hostingu vyprší po 30 s
- Router VirtueMartu tvoří adresy s duplicitami a stavovými segmenty, které v mapě nemají co dělat
- Produkty skryté kvůli skladu nebo nepublikované v daném jazyce se do mapy dostanou stejně
- Index vypisuje soubory, které na disku ještě nejsou — robot dostane 404
Co SemaSitemap řeší
Nainstalujete jeden ZIP. Balíček zapne komponentu i oba pluginy, srovná jejich pořadí a založí naplánovanou úlohu. Zapnete zdroje, stisknete Build — a na /sitemap.xml stojí index se soubory pro každý jazyk.
Zdroje obsahu
- Joomla — položky menu, články a kategorie článků; každý zdroj se dá zapnout zvlášť
- VirtueMart — kategorie, produkty a výrobci, volitelně i varianty produktů
- Jen to, co web opravdu ukazuje — respektuje publikování, jazyk položky a skrývání produktů podle skladu
- Adresy z routeru webu — mapa obsahuje stejné adresy, jaké vidí návštěvník, včetně SEF přepisů
VirtueMart bez překvapení
- Kanonická kategorie — produkt zařazený do více kategorií dostane tutéž adresu, jakou VirtueMart vypisuje na stránce produktu
- Vzory pro strip stavu — segmenty řazení, stránkování a zobrazení se z adres odstraní, sitemapa obsahuje jen čisté cesty
- Velké katalogy — kolektory pracují po dávkách a čistí cache routeru VirtueMartu, takže paměť neroste s počtem produktů
- Ověření vzorku — jedním tlačítkem otestujete, že vzorek vygenerovaných adres odpovídá 200 a ne přesměrováním
Vícejazyčné weby a výstup
- Soubor na jazyk —
/cs/sitemap-menu.xml,/en/sitemap-vmprod-2.xml… a společný index na/sitemap.xml - hreflang — u každé adresy alternativy v ostatních jazycích podle asociací Joomly, volitelně s
x-default - Cache na disku — robot čte hotový soubor; platnost nastavíte v hodinách
- Dělení na soubory — počet adres v jednom souboru si zvolíte, index se skládá sám
- Hosting bez přepisu adres — pro servery, kde
.htaccessnepřepisuje.xml, existuje tvar přesindex.php
Jak to funguje
Cesta k robotovi
Sběr adres po krocích
Fronta projde zapnuté zdroje jazyk po jazyku a po dávkách. Každý krok se vejde do časového limitu sdíleného hostingu; když jeden selže, pokračuje se od něj, ne od začátku.
Soubory na disku
Z map všech jazyků se složí XML soubory s hreflang bloky a index. Skládání je levné — u deseti tisíc produktů zlomek sekundy na soubor.
Robot dostane hotový soubor
Požadavek na /sitemap.xml vrátí index jen s existujícími soubory. Malý web se dostaví přímo v požadavku; velký vrátí 503 Retry-After, dokud fronta neproběhne — nikdy 404.
Pro provozovatele webu
- Kontrola prostředí — Přehled hned po instalaci řekne, co chybí: přepis adres, jazykový filtr, zapisovatelná cache, VirtueMart. Žádný řádek nesmí být ERROR.
- Build s průběhem — Stavbu spustíte tlačítkem a sledujete krok, uplynulý čas a odhad zbývajícího. Po selhání pokračujete od místa, kde fronta stála.
- Naplánovaná úloha — Balíček založí úlohu v plánovači Joomly; spouští ji cron nebo webcron hostingu a mapa se obnovuje sama.
- Ověření vzorku — Vzorek adres z hotové mapy se otestuje HTTP požadavkem: 200 je OK, přesměrování varování, 404 chyba.
- Žurnál chyb — Co se při stavbě nepovedlo, vidíte v Přehledu, ne v logu, který nikdo nečte.
- Platné přepínače — Karta ukazuje každé nastavení i s tím, odkud hodnota pochází; neshoda s výchozími hodnotami se hlásí.
Co vše lze nastavit
| Nastavení | Popis |
|---|---|
| Zdroje | Menu, články, kategorie článků, kategorie / produkty / výrobci VirtueMart — každý zvlášť |
| Varianty produktů | Zahrnout i podřízené produkty VirtueMartu |
| Jazykové alternativy | Zapnout hreflang, volitelně odkaz x-default |
| Platnost cache | V hodinách; po vypršení se mapa přestaví |
| Počet URL v souboru | Velikost jednoho XML souboru, index se skládá sám |
| Velikost dávky dotazu | Kolik řádků se načte na jeden krok fronty |
| Limit pro generování v požadavku | Do kolika adres se mapa staví přímo v požadavku robota |
| Tvar adres sitemapy | Hezké cesty (/sitemap-menu.xml), nebo adresy přes index.php |
| Vzory pro strip stavu | Segmenty adres VirtueMartu, které se z mapy odstraní |
| Nesměrované adresy | Vypisovat i adresy, pro které router nemá položku menu |
| Priority a changefreq | Ve výchozím stavu vypnuté — vyhledávače je ignorují |
| Timeout kroku a rozpočet ticku | Ladění fronty podle limitů hostingu |
| Limit volání build endpointu | Ochrana proti zahlcení stavby (za minutu) |
Technické údaje
| Parametr | Hodnota |
|---|---|
| Typ rozšíření | Joomla Package (admin komponenta + system plugin + task plugin) |
| Kompatibilita | Joomla 4.4 / 5.x, PHP 8.1+ |
| VirtueMart | 4.2+ — volitelný; bez něj se stará o obsah Joomly |
| Výstup | Index /sitemap.xml + soubor na jazyk a zdroj, protokol sitemaps.org, hreflang |
| Cache | Soubory na disku, platnost v hodinách, index jen z existujících souborů |
| Stavba | Fronta ve dvou fázích, obnovitelná od místa selhání, plánovač Joomly |
| Změřeno | 10 028 produktů × 4 jazyky: celá stavba 10 s, špička 16 MB, 12 souborů + index |
| Hosting | Sdílený hosting bez SSH (PHP ~30 s / 128 MB) |
| Databáze | Tři vlastní tabulky, odinstalace je uklidí |
| Lokalizace | Čeština, angličtina |
| Instalace | Jeden ZIP přes instalátor rozšíření |
| Aktualizace | Přes správce aktualizací Joomly (SemaHub) |
| Licence | GPL v2+ |
Časté dotazy
Potřebuji VirtueMart?
Ne. Kolektory VirtueMartu se zapnou jen tam, kde VirtueMart je. Na běžném webu na Joomle SemaSitemap mapuje menu, články a kategorie článků.
Musím upravovat šablonu nebo .htaccess?
Šablonu ne. Standardní .htaccess Joomly s přepisem adres stačí — /sitemap.xml obslouží plugin. Když hosting .xml k PHP nepustí, přepnete tvar adres na index.php a ten zadáte do Search Console.
Proč sitemapa poprvé vrátila 503?
Index vypisuje jen soubory, které na disku jsou. Dokud první stavba neproběhne, vrací se 503 s hlavičkou Retry-After — robot se vrátí později a dostane celou mapu. Nikdy nedostane index s odkazy na neexistující soubory.
Jak se mapa obnovuje?
Naplánovaná úloha Joomly, kterou balíček založí, se spouští cronem nebo webcronem hostingu. Přehled vypíše přesný příkaz. Líný plánovač (spouštění návštěvou) podporovaný není — na velkém webu by stavbu nikdy nedokončil.
Zvládne to velký katalog na sdíleném hostingu?
Ano, přesně na to je fronta. Změřeno na 10 028 produktech ve čtyřech jazycích: stavba ze studena 10 sekund, špička paměti 16 MB. Každý krok se vejde do limitu hostingu a po selhání se pokračuje od něj.
Co s produkty ve více kategoriích?
Produkt dostane jednu adresu — tu, kterou VirtueMart sám vypisuje na stránce produktu. Duplicitní cesty přes ostatní kategorie se do mapy nedostanou.
Vícejazyčný web a hreflang?
Každý jazyk má vlastní soubory a u každé adresy jsou alternativy v ostatních jazycích podle asociací Joomly a VirtueMartu. Nepřeložený obsah zůstává jen v mapě výchozího jazyka, aby se neindexovaly duplicity.
Co když se vygeneruje špatná adresa?
Tlačítko Ověřit vzorek otestuje adresy z hotové mapy skutečným HTTP požadavkem a vypíše kód odpovědi. Přesměrování je varování, 404 chyba — poznáte to v administraci, ne až v Search Console.