Změna měřené URL

Rozšířené měření Google Analytics.

Typickými příklady, kdy potřebujete změnit odesílanou URL, je na webech postavených na CMS. Drupal přesměruje uživatele po vyhledání na URL /search/node/hledane+slovo. Z této URL ale Google Analytics neumějí získat hledaný výraz a vy (analytik) jste připraven o cenné informace. Některé CMS nemění po odelsání formulářů měnit URL, takže dané pageview nemůžete měřit jako cíl.

Další výhodou tohoto řešení je, že umožňuje mít celou konfiguraci v jednom souboru a není třeba upravovat každou šablonu webu zvlášť.

Základ

Funkčnost změny URL zajišťují dva základní objekty:

  • Route - je je objekt, který reprezentuje změnu URL. V nejjednodušším případě má definovánu pouze „URL před“ změnou a „URL po“ změně. V případě, že se aktuální „URL shoduje“ s „URL před“, není na server Googlu odesílána skutečná URL, ale „URL po“. Funkčnost routy může být ale i složitější – např. může v „URL před“ vyhledat podřetězec a nahradit ho v „URL po“.
  • Router – slouží jako kontejner pro objekty typu route.

Jak to funguje

Do routeru můžete pomocí metody _ga.addRoute( route ) : void registrovat objekty route. Při odeslání trackPageview se postupně procházejí všechny registrované objekty route a zjišťuje se, jestli odpovídají aktuální URL. Jestli-že ano, odešle se změněná URL. Jestli-že neodpovídá, odešle se aktuální URL.

Příklad

Máme 2 definované routy. Jejich funkčnost je tato:

  • Jestli-že je aktuální URL /a, pak odešli jako pageview /b (namísto /a).
  • Jestli-že je aktuální URL /c, pak odešli jako pageview /d (namísto /c).

Obě tyto route předáme routeru. Uživatel přijde na URL /home. Router v této situaci dělá následující kroky:

  1. Shoduje se URL /home s URL /a (tj. odpovídá první route)? Ne -> pokračuji dál.
  2. Shoduje se URL /home s URL /b (tj. odpovídá druhé route)? Ne -> pokračuji dál.
  3. Další route již není registrovaná -> odesílám reálnou URL, tj. /home.

Odeslaná URL tedy nakonec bude /home.

Uživatel pak přejde na URL /c. Router na nové stránce provede tyto kroky:

  1. Shoduje se URL /c s URL /a (tj. odpovídá první route)? Ne -> pokračuji dál.
  2. Shoduje se URL /c s URL /c (tj. odpovídá druhé route)? Ano -> odesílám adresu /d.

Odeslaná URL tedy nakonec bude /d.

Přehled definovaných route

Definice vlastní route

Návod na to, jak vytvořit vlastní routy.