
Chybné zpracování multijazyčné podpory menu v Joomla! 3.x
Pokud používáte multijazyčné menu v Joomla!, může se vám stát, že i přes to, že máte správně nastavené menu a také komponentu, tak se ve veřejné části objeví chyba 404 - Nenalezeno.
if ($length > 0 && JString::strpos($route_lowercase . '/', $item->route . '/') === 0 && $item->type != 'menulink' && (!$app->getLanguageFilter() || $item->language == '*' || $item->language == $lang_tag)) { // We have exact item for this language if ($item->language == $lang_tag) { $found = $item; break; } // Or let's remember an item for all languages elseif (!$found) { $found = $item; // MISSING BREAK break; } }
Chybka se ukrývá v nastavení jazyků u položek menu Joomla!. Joomla! totiž neumožnuje nastavení podpoložek menu na jazyk "Vše" (*) pokud má nadřazená položka již nějaký konkrétní jazyk přiřazený. Joomla! se pak snaží použít nadřazenou položku menu, ale neumí pro ní již získat její správné nastavení.
V souboru libraries/cms/router/site.php ve funkci parseSefRoute kolem řádku 276 chybí break;. Na chybku jsme také upozornili vývojový tým Joomla!.