Lze se zbavit _fid parametru?
- Grelek
- Člen | 233
Zdravím,
na webu zjišťuji, odkud návštěvníci přišli přes parametr
utm_source
.
public function beforeRender()
{
parent::beforeRender();
$parameters = $this->request->getParameters();
if (isSet($parameters['utm_source'])) {
/** @todo Uložit do databáze */
$this->flashMessage($parameters['utm_source']);
$this->redirect('this');
}
}
Jenže po redirectu nedostanu „čistou“ URL, ale je tam právě ten
_fid
parametr. Jde se ho nějak zbavit?
Editoval Grelek (16. 1. 2013 19:40)
- Filip Procházka
- Moderator | 4668
_fid
je tam kvůli tomu, aby Nette poznalo, ve kterém okně má
zprávu zobrazit.
Koukni na tohle video: http://www.youtube.com/watch?…
Jediným řešením je použít history api prohlížeče a pomocí javascriptu v té url ten parametr skrýt.
- Šaman
- Člen | 2668
Jak píše Filip. Používám tohle v hlavním JS souboru.
<script>
/* Remove _fid from url */
$(function(){
if(window.history.replaceState) {
l = window.location.toString();
uri = l.indexOf('_fid=');
if(uri != -1) {
uri = l.substr(0, uri)+l.substr(uri+10);
if( (uri.substr(uri.length-1) == '?') || (uri.substr(uri.length-1) == '&') ) {
uri = uri.substr(0, uri.length-1);
}
window.history.replaceState('', document.title, uri);
}
}
});
</script>
Nevypne to úplně _fid, ale po načtení stránky to odstraní _fid z adresy. Jediné co, že při rychlém refreshi to napodruhé už flashmessage nezobrazí, zatímco pokud _fid neodstraníš, tak se ti ta flashmessage bude zobrazovat asi 3 vteřiny i po refreshi. Zjistil jsem, že mi to nijak nevadí.
Editoval Šaman (17. 1. 2013 14:01)
- ic
- Člen | 430
Šaman napsal(a):
Jak píše Filip. Používám tohle v hlavním JS souboru.
…
Není škoda, to nechat v jQuery čekat až na načtení celé stránky? Tohle může být první věc v HTML hlavičce a funguje to, URI je pro stránku přístupná hned.
To s těma 3s je nějaká novinka, nebo jsem si toho nikdy nevšiml? Ten script by na to mohl asi taky nějak reagovat.
- enumag
- Člen | 2118
Ty 3 vteřiny není žádná novinka. Myslím, že reagovat na to je zbytečné, připadá mi naopak lepší když se flashMsg zobrazí jen jednou.
- Vojtěch Dobeš
- Gold Partner | 1316
Dovolil jsme si převzít původní kód Ondry Mirtese a zařadit tuto
funkcionalitu jako volitelné rozšíření do nette.ajax.js
,
zatím jen v masteru. Můžete vyzkoušet, jestli je to ok. Zachovává to
podporu pro 3s pro refresh, protože podle mě tahle Nette feature má
své opodstatnění (tu a tam prostě omylem zmáčknu F5, a připravím se tak
o zprávičku). _fid tedy zmizí až po 3 vteřinách.
https://github.com/…move.ajax.js
Editoval vojtech.dobes (9. 2. 2013 6:37)
- iguana007
- Člen | 970
Taky mě tam před časem ten parametr vadil a to především kvůli Google Analytics – měl jsem tak ve statistikách jednu URL ale s tisícovkou různých _fid – vyřešil jsem to jednoduše přímo v Google Analytics, kde lze v nastavení profilu vypsat parametry URL, které mají analytics ignorovat a pak už to tam nepadá (je to v nastavení profilu – políčko: Exclude URL Query Parameters).