Co to je?
Plná cesta ke kliknutému viděnému prvku v HTML, jednoznačně určující daný prvek.
K čemu to je?
- Pěkné popisky kliknutí.
- Použití ve vlastních proměnných a podmínkách
Námitky:
Ano, když si v podmínce vyberete „click element“ tak máte možnost použít „CSS selector“. Lze to použít, ale nejde si v tom tolik hrát ještě s reguláry etc. a už vůbec to nemůžete použít jako vstup do RegEx vyhledávací tabulky etc.
Postup tvorby proměnné:
- Jít do Google tag manageru a zvolit příslušný GTM kontejner.
- Proměnné (variables)
- Povolit základní proměnnou Click element.
- .Založit novou proměnou.
- Vlastní javascript a vložit následující kód.
- Hotovo
function() { if ({{Event}}=="gtm.click"||{{Event}}=="gtm.linkClick" ||{{Event}}=="gtm.elementVisibility"){ var el = {{Click Element}}; var stack = []; while ( el.parentNode != null ) { var sibCount = 0; var sibIndex = 0; for ( var i = 0; i < el.parentNode.childNodes.length; i++ ) { var sib = el.parentNode.childNodes[i]; if ( sib.nodeName == el.nodeName ) { if ( sib === el ) { sibIndex = sibCount; } sibCount++; } } if ( el.hasAttribute('id') && el.id != '' ) { stack.unshift(el.nodeName.toLowerCase() + '#' + el.id); } else if ( sibCount > 1 ) { stack.unshift(el.nodeName.toLowerCase() + ':eq(' + sibIndex + ')'); } else { stack.unshift(el.nodeName.toLowerCase()); } el = el.parentNode; } return (stack.slice(1)).join(' > '); } }
Příklady výstupu této proměnné:
Řekněme, že bych chtěl měřit třeba kliknutí na obrázek v pravém sloupci.
Asi nejjednoduší je kliknou na daný obrázek pravým tlačítkem a dát „prozkoumat “ ¨(inspect chrome)
Následovně vybrat prvek v HTML a dát zase pravé tlačítko > kopírovat > kopírovat Seletor.
Výsledek takto získané cesty bude zkrácená verze selectoru.
#text-3 > div > div > img
Určující dostatečně unikátně o který prvek se jedná na stránce.
Pokud bych chtěl měřit jen tento jeden obrázek, mohu to udělat pravidlo, přes zmíněný „Click element“ v kombinaci CSS selectoru v GTM.
Pokud použijete mou GTM proměnou získáte celou cestu CSS selectoru a na konci bude předešlí krátký selector.
body > div#page > div#content > div:eq(1) > div > div#secondary > div > aside#text-3 > div > div > img
Pokud bych však chtěl šetřit množství značek a pravidel a chtěl přitom měřit více obrázků a chtěl je třeba i pěkně popsat nastane problém. CSS selector je jen v podmínce a nejde použít nikde jinde a proto jsem napsal i tento skript.
Tímto způsobem si můžete třeba vytvořit jednoduché podmínky v pravidlech kliknutí a kliknutí na odkazy. Zvláště to je super pokud máte více stejně pojmenovaných tlačítek a chce je navzájem rozlišit.
Jedno z použití je třeba vytváření pěkných popisků pro eventy dle bloku obsahu.
Třeba u mě wordpresu to bude, pokud obsahuje selector:
- #footer-area je to odkaz z patičky
- #secondary pravý sloupec
- article#post odkaz z článku
- etc.
To vložíte do RegEx tabulky, vypnete plnou shodu a hurá do toho. U interních odkazů to posílám místo evetnAction, kde normálně mívám doménu externího odkazů.
Můžete si tak třeba třídit interní odkazy… rozlišíte, které kliknutí na odkaz bylo z patičky, menu, přes logo etc. Možností je nepočítaně.
Napište mi na sociálních sítích, jestli se vám takové scripty hodí / libí.
Komentáře jsem vypnul, diskuzi prosím směrovat na Facebook či Twitter
Update 2021-10-22
Detailní css selector:
Může se hodit, když původní verze nestačí a potřebujete se dostat k většímu detailu, propisuje vždy element class a ID.
Tato verze dělá soupis všeho a nic nevynechává.
function() { var e= {{Click Element}}; var s = "", t, i, c, p, n; do{ t = e.tagName.toLowerCase(); i = e.hasAttribute("id") ? "#" + e.id : ""; c = e.hasAttribute("class") ? "." + e.className.split(/\s+/).join(".") : ""; p = e.parentNode; n = Array.prototype.filter.call(e.parentNode.childNodes,function(x){ return x.nodeType == Node.ELEMENT_NODE; }).indexOf(e) + 1; s = t + i + c + ":nth-child(" + n + ") > " + s; }while( !p || !(e = p).tagName.match(/^HTML$/i) ); return s.slice(0,-3); }