Přihlásit se

Joomla 6.0

Dne 14. října 2025 bylo oficiálně vydáno Joomla 6.0 (kódové jméno Kuimarisha) společně s Joomla 5.4 (Kutegemea). Joomla 5.1 přinesla zabezpečené TUF aktualizace, ale s Joomla 5.4 / 6.0 přichází automatické aktualizace jádra, které budou probíhat bezpečně a bez nutnosti manuálního zásahu.

routování v joomle

15. říj 2025 15:49 - 15. říj 2025 15:50 #150736
routování v joomle od Ernst
Joomla Expert
rád bych se zeptal, zda někdo znáte možnost jak změnit routovávání v joomla. joomla si sama vybere vybere poslední položku menu která má dané view a tu použije a to jak v sef tak v nesef. Pokud routeru pošleš jinou položku menu, on si ji automaticky přepíše na to svou vybranou položku menu.
tím vznikne že z /list-clanku se po kliknutí na článek dostaneš na url /blog/obchodni-podminky-cz ale logické by se bylo dostat na / list-clanku /obchodni-podminky-cz

pokoušel jsem se přepsat router komponenty a nepodařilo se mi to. Pokusím se ještě o systémový plugin.

Tohle řešení není nikde popsáno (nebo jsem nenašel)

řeší to někdo nějak?

máte k tomu nějaké info?

15. říj 2025 20:49 #150737
Odpověď od H13
Admin
Osobně doporučuji vytvářet jednu hlavní menu položku a pokud potřebuju další menu položku ve stejné části, pak z té hlavní menu položky najedu ve frontendu a vytvořím menu s absolutním odkazem. Tím pádem mi odkaz nemá kam odskočit (odskočit k jinému menu id), vždy existuje jen jeden menu odkaz pro tvorbu odkazu.

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

16. říj 2025 11:09 #150740
Odpověď od Ernst
Joomla Expert
tohle chápu, ale to routování v joomle mi přijde nelogické a nevidím v něm žádnou výhodu. Dle mě by měl zůstat na položce z které to volám. a navíc to změní i v nesef, když zadáš itemid v odkazu tak ho joomla přepíše (pokud ho dáš přes route)

16. říj 2025 13:41 - 16. říj 2025 13:41 #150741
Odpověď od H13
Admin
Ono je to těžký, představ si strom nějakého zobrazení:


1. zobrazení kategorií -> 2. zobrazení položek kategorií -> 3. zobrazení detailu položky

a) uděláš jeden menu odkaz na "zobrazení kategorií" - pak procházíš nahoru a dolu a vše má jednotné URL

b) uděláš dva menu odkazy, na "zobrazení kategorií" a "zobrzení položek kategorií"

No a teď jdeš stromem a systém musí určit, že když naviguješ do nejvyšší úrovně - do "zobrazení kategorií", jaký menu odkaz použít - ten, ze kterého vycházíš (zobrazení položek kategorií), nebo ten, do kterého vcházíš (zobrazení kategorií). Má porušit to, že jsi si definoval, že pro toto zobrazení chceš vlastní menu odkaz? 

Navíc se pak se vše komplikuje, pokud se jde z externího zdroje (vyhledávače).

Otázka je, co má systém dělat? Má použít menu odkaz z míst, odkud vycházíš, aby jsi měl jednotné URL, nebo tě má poslechnout a použít tvůj definovaný druhý odkaz?

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

16. říj 2025 16:23 - 16. říj 2025 16:26 #150742
Odpověď od Ernst
Joomla Expert
vím, že je to složitý ale takhle procházím jedním stromem dolů a až skočím na položku přehodí mě to do jiného stromu. to není logický, nemohu se nahoru vracet třeba drobečkovkou ale jen šipkou zpět. to přeci není ok

vem si že máš dvě menu, blog a list článků. v blogu klikneš na článek a on je zařazen pod list a ne blog

16. říj 2025 19:40 - 16. říj 2025 19:40 #150743
Odpověď od H13
Admin
Tak to nevím, není pro to někde nějaké nastavení?

Např. v Phoca Cart upřednostňujeme aktivní menu item id před případnou alternativou stejného view:

Code:
if ((int)$activeId > 0 && $option == 'com_phocacart' && $view == 'category') { // 2) if there are two menu links, try to select the one active $itemId = $activeId; }

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

16. říj 2025 23:04 #150745
Odpověď od Cony
Moderátor
Já myslím, že podstatná informace chybí, a to o jakou se jedná komponentu (a verzi Joomly). Pokud se nepletu, tak standardní router Joomla přebírá předané Itemid, a jen pokud chybí, tak se jej snaží dohledat, nebo použít aktivní.
Stará se o to v Routeru řádek 
Code:
$this->attachRule(new MenuRules($this));

17. říj 2025 06:35 - 17. říj 2025 06:39 #150746
Odpověď od Ernst
Joomla Expert
postupně:
konkrétně jde o joomlu 5, ale toto chování má joomla minimálně od verze 3
Je to čistá joomla a komponenta obsah ale platí to pro vše. je jeden článek a dvě položky menu, list článků z kategorie a blog kategorie. Mám tedy 2 url (při zapnutém sef). web.cz/list a web.cz/blog. když v každém tom menu kliknu na článek, očekával bych že budou 2 url  web.cz/list/clanek a  web.cz/blog/clanek. ale ono to z obou menu skončí na  web.cz/list/clanek.
router joomly si prostě najde sám itemid, které se mu líbí (to které je poslední s daným view (view=category) na layout se nedívá. 

ano v routeru se o to stará 
Code:
        // Pravidla routeru         $this->attachRule(new MenuRules($this));         $this->attachRule(new StandardRules($this));         $this->attachRule(new NomenuRules($this));
Ale strávil jsem úpravami routeru spoustu času a nepodařilo se mi to v něm ovlivnit vždy mi to joomla přepsala zpět na její itemid.
Pokud někdo ví jak to v routeru udělat budu rád za radu

Nakonec jsem si napsal systémový plugin, který to zařídí aby se článek otevřel pod nadřazenou položkou menu, ale přesto bych to raději udělal v routeru, to by bylo spolehlivější.

Platí to pro SEF i ne SEF url

17. říj 2025 14:02 - 17. říj 2025 14:29 #150747
Odpověď od Cony
Moderátor
Bez jakýchkoliv úprav v Joomle, v blog_item.php 
Code:
n3tDebug::barDump(Route::_(RouteHelper::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language)), 'RouteHelper'); n3tDebug::barDump(Route::_('index.php?option=com_content&view=article&id=' . $this->item->slug . '&catid=' . $this->item->catid .'&Itemid=298'), 'Item ID natvrdo'); n3tDebug::barDump(Route::_('index.php?option=com_content&view=article&id=' . $this->item->slug . '&catid=' . $this->item->catid .'&Itemid=' . Factory::getApplication()->getMenu()->getACtive()->id), 'Item ID a active');





Tzn. poprvé podle aktivní menu položky, podruhé podle Itemid, který tam pošlu, potřetí to stejné za použití aktivního Itemid. Pokud tedy budu chtít vždy podle aktivního Itemid, tak jen upravím blog_item.php na něco jako 
Code:
$link = Route::_('index.php?option=com_content&view=article&id=' . $this->item->slug . '&catid=' . $this->item->catid .'&Itemid=' . Factory::getApplication()->getMenu()->getACtive()->id);

A mělo by být vyřešeno, do Routeru není třeba zasahovat.
Poděkovali: Ernst

17. říj 2025 14:31 #150749
Odpověď od Cony
Moderátor
Jinak ještě poznámka - rozdělení na 2 Itemid pak samozřejmě vede k duplicitnímu obsahu, což z hlediska SEO není ideální.

17. říj 2025 17:11 - 17. říj 2025 17:21 #150751
Odpověď od Ernst
Joomla Expert
no a tady bych se rád poradil. jak moc je to velký hřích.

vezmu si třeba virtuemart a tam, pokud je zboží ve více kategoriích tak se také jedná o duplicitní obsah (je vidět pod url každé kategorie). 

Jak se má něco takového řešit?

17. říj 2025 18:04 #150753
Odpověď od Ernst
Joomla Expert
tak to tak bohužel není, reálně jsem to teď otestoval a nefunguje to, jak ty píšeš.

například mám itemid 714 list a itemid 715 - blog 
když dám tvoji variantu natvrdo menu a udělám 
tohle - <a href="<?php echo Route::_('index.php?option=com_content&view=article&id=' . $article->slug . '&catid=' . $article->catid .'&Itemid=690');?>"> dostanu se sem /?option=com_content&view=article&id=3:podminky-zpracovani-osobnich-udaju-cz&catid=2&Itemid=690&lang=cs

ale když udělám tohle <a href="<?php echo Route::_('index.php?option=com_content&view=article&id=' . $article->slug . '&catid=' . $article->catid .'&Itemid=714');?>">  dostanu se sem - ?option=com_content&view=article&id=3:podminky-zpracovani-osobnich-udaju-cz&catid=2&Itemid=715&lang=cs tedy ne tam kam jsem to směroval

a ta aktivní položka menu je přesně to samé

opravdu nevím co to přesně směruje, ale rád bych to nějak ovládal.

klidně ti to někam nainstaluji, abys to viděl v reálu, jestli to máš chuť řešit. podotýkám, že je to na čisté joomle, nic jiného to nemůže ovlivnit a je to strašná záhada.

můžeš mu dát jinou položku menu a on to tam pošle. ale pokud mu dáš jinou položku menu se stejným view, tak si vybere sám kterou a pošle to tam

18. říj 2025 16:54 #150754
Odpověď od Cony
Moderátor

Ernst napsal: no a tady bych se rád poradil. jak moc je to velký hřích.

vezmu si třeba virtuemart a tam, pokud je zboží ve více kategoriích tak se také jedná o duplicitní obsah (je vidět pod url každé kategorie). 

Jak se má něco takového řešit?


No vyhledávače to rádi nemají. Stejná stránka s různými URL je pro ně duplicitní obsah. Pokud už musí být (např. ten eshop, kdy jeden produkt je ve víc kategoriích, a v rámci URL je potřeba zachovat i cestu na kategorii), je potřeba do určit kanonické URL , tedy "hlavní" URL té dané stránky.

18. říj 2025 16:56 #150755
Odpověď od Cony
Moderátor

Ernst napsal: tak to tak bohužel není, reálně jsem to teď otestoval a nefunguje to, jak ty píšeš.

No já to právě taky testoval, a funguje to přesně jak píšu :) Ale u tebe je to trochu jinak, ty tam máš navíc zaplou vícejazyčnost, takže s tím ještě zamíchá ta. Zkontroluj si, jak máš napárovaný položky v menu v rámci vícejazyčnosti. Když vypneš plugin pro vícejazyčnost, tak ti to IMHO bude fungovat tak jak píšu.

18. říj 2025 17:11 #150756
Odpověď od Ernst
Joomla Expert
ne, fakt se s tebou nerad přu, ale i když vypnu oba jazykové pluginy, tak se to chová přesně tak jak píšu. Dnes nebo zítra si najdu chvilku udělám úplně nový web, jednojazyčný web a udělám dvě menu a jeden článek. ukážu ti na tom, že to funguje přesně jak popisuji.

Powered by Fórum