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.

URL do proměnné

30. dub 2016 19:28 #126838
URL do proměnné od Ernst
Joomla Expert
Pomocí
Code:
$jdoc = \JFactory::getDocument(); $jdoc->getBase()
Dostanu do proměnný URL aktuální stránky.

Dostanu se ale nějak k URL předchozí stránky?

01. kvě 2016 22:26 #126846
Odpověď od Cony
Moderátor
Base není aktuální url, ale URL úvodni stránky.
Pro aktuální URL je lépe použít
Code:
JUri::current();
Předchozí URL už z principu fungování protokolu HTTP jen tak jednoduše nezískáte. Můžete použít hodnotu
Code:
$_SERVER['HTTP_REFERER'];
nebo "Joomlovsky"
Code:
JFactory::getApplication()->input->server->get('HTTP_REFERER');
ale ne vždy bude tato hodnota vyplněná, a ne vždy musí obsahovat to co by jste čekal (např. může obsahovat URL stránky vyhledávače, kde uživatel klikl na odkaz na Vaše stránky).
Pokud tedy z nějakého důvodu potřebujete URL předchozího zobrazení Vašich stránek, můžete použít ukládání do Session, tedy např. něco jako
Code:
$app =JFactory::getApplication(); // Zjištění poslední uložené url $lastUrl = $app->getUserState( "last_url"); if (empty($lastUrl)) { // url ještě nebylo, uloženo, je to první stránka, kterou uživatel otevřel } else { // url již bylo vyplněno } // uložení aktuální url do session $app->setUserState( "last_url", JUri::current() );

bližší info např. v dokumentaci .
Poděkovali: Ernst

02. kvě 2016 15:59 #126851
Odpověď od Ernst
Joomla Expert
díky za vyčerpávající info

jen ale $jdoc->getBase() mi dalo opravdu aktuální stránku

02. kvě 2016 20:31 #126855
Odpověď od Cony
Moderátor
Nevím, nestudoval jsem dokumentaci, ale JUri::base vrací homepage, předpokládal jsem, že je to stejné.

03. kvě 2016 12:52 - 03. kvě 2016 12:55 #126858
Odpověď od Ernst
Joomla Expert
tak jsem se dostal k testování:
Code:
JFactory::getApplication()->input->server->get('HTTP_REFERER');
vrací něco jako : 'httplocalhostindex.phpcz', tedy v podstatě nepoužitelné
Code:
$_SERVER['HTTP_REFERER'];
vrací správně 'http://localhost/index.php/cz/' (úvodní stránku uvádím jen pro ilustraci, jinak to vrací správně předchozí stránku)

celé to dělám hlavně kvůli chronoforms, protože tam neexistuje možnost vrátit se na stránku, ze které byl formulář volán.
takže na začátku načtu do formuláře předchozí url jako skryté pole.
Na konci ho chci zavolat.
Není to však jednoduché a řeším to částečně i s jejich podporou.

Pokud se mi řešení podaří, zveřejním ho zde. Nebude samozřejmě dokonalé , vzhledem možnosti použití "zpět" v prohlížeči, ale to je vždy po odeslání formuláře problematické

PS ještě mě napadlo, nešlo by to nějak vytáhnout také z drobečkové navigace?

03. kvě 2016 13:09 #126859
Odpověď od Ernst
Joomla Expert
PS2 jo to nejde

03. kvě 2016 14:51 #126863
Odpověď od Cony
Moderátor
Aha, zapomněl jsem na filtry, správně třeba
Code:
JFactory::getApplication()->input->server->get('HTTP_REFERER', '', 'raw');
Více o filtrech zde
Poděkovali: Ernst

07. kvě 2016 16:37 #126944
Odpověď od Ernst
Joomla Expert
To poslední bylo ono.
Celé řešení problému jsem popsal zde: www.joomlaportal.cz/forum/71-joomla-3-0-...o-chronoforms#126943

07. kvě 2016 16:51 #126945
Odpověď od Ernst
Joomla Expert
ještě by možná stálo za to zakázat prohlížeči použít poté tlačítko zpět a vrátit se tak na předvyplněný formulář.
Budu nad tím přemýšlet nebo napadá někoho nějaké elegantní řešení?

Powered by Fórum