Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.

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

Powered by Fórum