Cookies 2022: konkrétní řešení, která jsem na webech použil

Konec roku se blíží, zítra začínají Vánoce, ale stále je ještě řada těch, kdo nevyřešili cookies na svých webech. Alespoň dle dotazů a ohlasů k mému minulému článku. Než obalíme kapry a rozbalíme dárky, tak se ještě s vámi podělím o několik konkrétních řešení, která jsem použil nejen na webech s Drupalem a WordPressem.

Můj nedávný článek o cookies měl být především zamyšlením nad řešením cookies obecně. Nad tím, že na webech má spousta provozovatelů přebytečný balast, který ani nepoužívá. Remarketingové skripty, aniž by platili reklamu. Facebook Pixel, který neumí využít. Google Analytics do kterých nekoukají.

Přestože jsem si jej střihnul jen tak v rychlosti, tak jsem dostal k článku spoustu ohlasů do mailu a pokud dobře koukám, stal se tím nejčtenějším na Maxiorlovi, co jsem letos napsal.

Spousta z vás se ptá na stále se opakující věci:

  • Jak poznám, jaké cookies web ukládá a zda vůbec?
  • Jaký plugin mi to vyřeší ve WordPressu?
  • Jak řeší cookies Drupal?
  • Je nějaká free služba pro cookies lištu?
  • Co když mám na webu Google Tag Manager?

Zkrátka samé otázky. Já určitě nemám patent na rozum, řadu věcí jsem vstřebával z různých článků u nás i v zahraničí, kde cookies už řeší „správně“ delší dobu. Poslouchal jsem videa, podcasty, rozhovory, konference. Bylo toho zkrátka přehršel. Od listopadu jsem začal u svých klientů a na svých webech s implementací a zastavil se vlastně až včera. Tímto článkem za tím vším snad udělám pomyslnou tečku a pro příště se mi bude zdát o mnoho příjemnějších věcech než virtuálních sušenkách.

Pojďme na to.

Ukládá můj web cookies? Jak to poznám?

Pokud jste si web objednali u nějaké agentury či vývojáře na volné noze, tak by měl být schopen to zařídit sám a relevantně vám odpovědět. V trochu horší situaci je každý, kdo si web naklikal na nějakém stavebnicovém řešení nebo si jej prostě ve volných chvílích pro zábavu tvoří na WordPressu či jiném redakčním systému. Nepoužívá cookies náhodou nějaký plugin? A co CMS samotné?

Poradím vám dva způsoby. Ten více profi znamená otevřít si ve webovém prohlížeči lištu pro vývojáře. V Chrome i ve Firefoxu stačí stisknout klávesu F12. V liště si rozbalte Application > Cookies v případě Chrome, respektive Úložiště > Cookies v případě Firefoxu.

Jednodušší řešení je použít nějaké rozšíření webového prohlížeče. Ve Firefoxu mám doinstalované List-all-cookies.

A ze všeho nejjednodušší je nějaká online služba. Mně se líbí Cookieserve. Zadáte do něj URL adresu a hned uvidíte použité cookies, obvykle i se zařazením do nějaké kategorie popiskem, co je to zač.

Důležité upozornění: Že váš web neuloží cookie na domovské stránce, neznamená, že je neukládá jinde. Typicky třeba po přihlášení do administrace nějakým návštěvníkem nebo poté, co dotyčný odešle komentář. Projděte si těmi nástroji více stránek. Stejně tak pozor na články s videem z YouTube, lajkovacím tlačítkem nebo vloženou mapou. To jsou prvky, které nejsou na webu všude a přesto cookie generují.

Cookie pluginy pro WordPress, moduly pro Drupal

Ze začátku jsem měl poněkud naivní představu, že v Drupalu jen přenastavím doposud používaný modul EU Cookie Compliance. Dával jsem jej na weby v podobě s dosud tak nějak vyhovující hláškou o cookies a odkazem na další informace. Tento modul umí i zobrazení kategorií cookies a sběr k nim. V nastavení určíte, které skripty se mají spouštět při kterém souhlasu.

Problém je, že toto se mi povedlo rozběhat jenom v případě, že v Drupalu jsou veškeré skripty, které pracují s cookies, napojovány ve formě modulu či nějakým API. Ruku na srdce. Děláte to? Já i většina dalších webařů, po kterých jsem přebíral práci, prostě vloží nějaký marketingový skript do twigové šablony do <head> nebo <body> a jsou hotovi. Na víc ani není rozpočet. To se ani nebavím o skriptech napojených přes Google Tag Manager.

Zmíněný modul také umí mazat cookies, ke kterým není souhlas, ale to není úplně správně. Cookies by se neměla vůbec uložit a ne se automaticky po pár sekundách mazat.

Takže má prvotní představa vzala v praxi rychle za své. Našel jsem pro Drupal ještě jiný modul, konkrétně COOKiES Consent Management. Měl by si rozumět s moduly pro Google Analytics a Tag Manager, ale zase je to stejný problém. Ne všechno na webech je vloženo jako best practice přes moduly a API. A předělávat to? Na to není čas, chuť ani finance.

Co se týče WordPressu, tam jsem to vzdal už na začátku. Stejný problém, jako v Drupalu. Řada pluginů cookies řeší stylem – uloží se to a pokud není souhlas, hned ji JavaScriptem smažeme. To nechcete.

Já se vydal cestou řešení nezávislých na konkrétní platformě a pluginu či modulu pro redakční systém. Ale pokud bych měl něco doporučit, tak vím, že kolega Martin Domes používá plugin Complianz.

Free Cookie Consent

Zakotvil jsem u dvou řešení. Každé má svoje přednosti i nedostatky. Z pohledu implementace jsem na vážkách. Záleží asi na konkrétním webu, co musíte všechno pořešit. Nejprve ale mrkněme na řešení Free Cookie Consent.

Pomocí průvodce si naklikáte cookie hlášku ve čtyřech možných podobách a světlém nebo tmavém vzhledu. Zvolíte výchozí jazyk, případně přidáte odkaz na Zásady ochrany soukromí, pokud je na webu máte. Vespod ve čtvrtém kroku vám vypadne kód, který vložíte na svůj web a cookie hláška se začne zobrazovat.

Tak jednoduché to samozřejmě není, hotovi v tu chvíli rozhodně nejste. Nyní musíte projít všechny značky <script> na svém webu a doplnit jim atribut type="text/plain". Tím vlastně ošálíte webový prohlížeč, který ty skripty nebude spouštět. Jen budou v kódu nachystány.

Dále doplníte atribut cookie-consent="kategorie", kde slovo kategorie změníte na jedno ze čtyř označení pro kategorie cookies. Viz návod na spodu stránky Free Cookie Consent.

Poslední krok, který musíte doplnit, je odkaz, který vyvolá okno s podrobnostmi o cookies. To je sice dostupné přímo z hlášky, ale v momentě, kdy někdo udělá souhlas či nesouhlas, už hlášku nevidí. A vy mu musíte nabídnout možnost svůj souhlas či nesouhlas změnit. Free Cookie Conset čeká, že na webu bude odkaz s id="open_preferences_center". Jakmile na něj někdo klikne, hláška se zobrazí.

Free Consent Cookie

Výhodou tohoto řešení je, že neplatíte žádné další poplatky za provoz služby, které by byly závislé na velikosti webu nebo jeho návštěvnosti. Umí to více jazyků. Na webu s Drupalem jsem tak bych schopen vložit kód do šablony html.html.twig a pak jenom Twigem propsat do JavaScriptu aktuální jazyk zvolený na webu. Barvy v hlášce a dialogu lze snadno změnit pomocí CSS.

Nevýhody? Neřeší to iframy. Typicky video nebo mapu, která při zobrazení ukládá cookies. Stejně tak toto řešení pravděpodobně nenapojíte na Google Tag Manager, aby vám v něm fungovaly kategorie souhlasů. A ano, tahá to skript z třetí adresy, ale nevšiml jsem si dopadů na rychlost webu. Musíte ručně vytvořit stránku s popisem všech cookies, k čemu slouží a do jaké patři skupiny.

V praxi k vidění například na webu SvětCMS.cz.

Můj oblíbenec CookieHub

Druhou kategorií jsou specializované služby, kterých v minulosti vyrostlo jako hub po dešti. Jednou z novějších je CookieHub. Myslím, že je to firma někde z Islandu. Je to typická freemium služba, která nabízí většinu své funkcionality pro menší weby zadarmo.

Princip implementace je podobný jako u Free Cookie Consent. Vložíte na web nějaký skript, upravíte atributy u JavaScriptů tak, aby si prohlížeč myslel, že jde jenom o text a CookieHub je bude spouštět až po příslušném souhlasu se všemi cookies nebo s danou kategorií.

CookieHub navíc ale ošetřuje i iframy. U nich rovněž doplníte atribut s kategorií a změníte src za data-src. Iframe se tak načte až po příslušném souhlasu.

Dále je tu jednoduchý UI builder, ve kterým si zvolíte, zda cookie hláška bude v podobě lišty, popupu nebo plochy s tlačítky někde v rohu. Lišty i popup mohou být nahoře, dole či uprostřed. Změníte si barvy tlačítek i jejich pořadí.

CookieHub UI Builder

Líbí se mi, že CookieHub automaticky projde váš web a detekuje použité cookies. Při zadání domény projde domovskou stránku, na vyžádání následně asi stovku podstránek. Spoustu cookies zná, takže je automaticky roztřídí do příslušných kategorií a doplní k nim popisky.

Ty popisky jsou jenom anglicky, nicméně cokoli, co CookieHub zobrazuje, je plně editovatelné. Není problém popisek přepsat do češtiny. Z marketingového pohledu je tak prima, že si pohrajete nejenom s umístěním tlačítek, ale i jejich textací a zněním celé hlášky. Cokoli, co vám pomůže získat souhlas, se počítá.

Dialog CookieHubu za vás zpracuje i prohlášení o cookies, kde jsou jednotlivé položky rozepsané do kategorií s určením a délkou platnosti. Nemusíte tak vyrábět podobnou stránku ručně.

Prohlášení o cookies generované nástrojem CookieHub

Placená verze umí navíc přepínání mezi jazyky, což oceníte u vícejazyčného webu. Rovněž web kontroluje čas od času automaticky a zobrazí vám informaci, zda vám nějaká neošetřená cookie neutíká. Z pohledu marketingu bude zajímavá analýza, kolik lidí souhlas udělilo.

Opravdu jednoduchá je integrace pomocí Google Tag Manageru. Vyexportujete si recepis, jeho JSON nahrajete do správce značek, vložíte kód CookieHubu a u ostatních skriptů si naklikáte spouštění jen po příslušných souhlasech v liště. Jak ten Tag Manager nemám rád, tak jsem se překonal a zjistil, že je to vlastně nejjednodušší možná implementace cookies souhlasu.

Plusem je bezesporu i dokumentace, kde je popsáno vše od implementace v kódu přes nasazení v Tag Manageru až k vytvoření tlačítka pro znovunastavení souhlasu.

Nevýhody? Ano, tahá se skript třetí strany, ale ani tady jsem nepozoroval zpomalení webu. Možná naopak. Díky jakémukoli cookie řešení totiž odsouváte natažení dalších skriptů. Trochu problém je u vícejazyčných webů, které chtějí bezplatný tarif CookieHubu. Pokud máte jazyky na subdoménách, tak v pohodě, prostě si vygenerujete více kódů. Co se týče jazyků podle prefixu v URL adrese, zde už musíte mít placenou verzi.

Implementace je k vidění tu na Maxiorlovi.

Tip: pokud byste využili placený tarif CookieHubu, po zadání kódu NZMZNTAY dostanete slevu 10 %.

Co s videem z YouTube?

Jsou dvě možnosti řešení. Pokud je to pro daný web schůdné a použijete řešení pracující s iframy jako je zmíněný CookieHub, tak prostě upravíte iframy a video se nezobrazí, dokud návštěvník webu nedá souhlas.

Druhou možností je upravit veškeré iframy z youtube.com na youtube-nocookies.com. Video pak sledovací cookies neukládá a tu jednu, která vzniká, bych zařadil pro nezbytně nutné. Jak na to v Drupalu?

  • V případě modulu Media a obsahu Remote Video přímo v jádře dost blbě
  • V případě modulu YouTube Field jenom zapněte v Nastavení > Média > YouTube Field Settings volbu Enable privacy-enhanced mode.
  • U videa vloženého jako iframe rovnou do textu použijte nějakou automatickou náhradu adresy iframu. Modul jsem nenašel, tak jsem si nachystal jednoduchý vlastní. Stačí jej zapnout a pak aktivovat u nastavení formátu textu.

Jak řešit vložené mapy nebo Page Plugin od Facebooku?

Ostatní iframy, jako jsou Mapy Google, Page Plugin od Facebooku a podobné věci, řeším nejčastěji ve spojení se souhlasy přes CookieHub. Pokud jiné cookies na webu nemáte, tak se pro mapy nabízí dvě možnosti:

  • Skript 2Click-Iframe-Privacy, který místo iframe zobrazí hlášku a po jejím potvrzení se mapa načte
  • Nahradit iframe Google Mapy voláním přes API, které je ovšem placené. Případně využít velice snadno implementovatelné API Mapy.cz. S jejich návodem to zvládnete během chvilky.

A co cookies odjinud, než z JavaScriptu?

Zatím jsem řešil jenom cookies vznikající činností nějakého JavaScriptu, například měřidla návštěvnosti či remarketingovým skriptem. Ale cookies samozřejmě mohou vznikat i činností skriptu spouštěného na serveru (např. PHP). Typicky přihlašovací cookies po vstupu do administrace redakčního systému.

Naštěstí jsem nemusel nic takového řešit pro jiné případy, než je pouze to přihlašování. A tady se ty cookies dají spláchnout pod nezbytně nutné, protože bez nich přihlašování nefunguje. Stačí tedy do stránky s přehledem cookies jejich název dopsat, případně takovou cookie ručně dokliknout do přehledu v CookieHubu.

Cookies a Google Analytics. Alternativa?

Jak jsem zmínil v předchozím článku o cookies, i ten nejmenší web dnes používá Google Analytics, protože je to prostě zadarmo nebo že je na to SEO specialista daného webu zvyklý. Řada mých klientů si v hrůze z cookies legislativy uvědomila, že do Google Analytics vlastně nechodí a nepotřebuje je. Ač se bez nich na začátku prý nemohli obejít.

To je naprosto správně. Už jsem to říkal. Ukliďte si. Udělejte na webu vánoční úklid (no jo, už je trochu pozdě). Data z Analytics nahradíte třeba analýzou prodejů. Mám to od více klientů z eshopů a vlastně jsem to zaslechl i myslím na záznamu nějakého povídání s Pavlem Ungrem. E-shopy přece řeší prodeje, ne návštěvnost. Stejně, jako neřešíte lajky.

Je alternativou Google Analytics 4? Z řady zdrojů jsem slyšel, že ano. Dobře, dopočítá si chybějící statistiky z díry vzniklé tím, že ne každý vám dá souhlas. Ale neberte to jako alternativu, která funguje bez cookies. I Google Analytics 4 momentálně cookies ukládají.

Já si zaplatil Plausible. Pro naprostou většinu mých webů naprosto stačí. Umí všechny základní statistiky, vyhodnocení kampaní i propojení na data o klíčových slovech pomocí Google Search Console. Neukládá ani jednu sušenku. Jen za to zaplatíte pár drobných.

A co třeba český TOPlist? Ne, nesmějte se. Někomu prostě stačí jednoduché statistiky a do Google Analytics chodil jen kvůli orientačnímu povědomí o návštěvnosti webu. TOPlist nedávno oznámil, že od ledna bude komplet bez cookies.

Další otázky a odpovědi

Na závěr si dovolím ještě několik odpovědí na různé další otázky, na které jste se v souvislosti s cookies ptali. Upozorňuji ale, že nejsem právník, není to konzultováno s právníkem a rozhodně to neberte za berou minci.

Nemůžu obarvit tlačítko souhlasu výrazněji? Ne, nebylo by to v souladu s legislativou.

Co použít v Google Analytics místo cookies localStorage? Ne, legislativa mluví o ukládání do koncového zařízení návštěvníka a je jedno, jestli v podobě cookies nebo jinak. Nicméně můžete to v Analytics potlačit úplně, pak bude fungovat dál, jenom každé zobrazení stránky započte jako novou unikátní návštěvu.

Co překryvné okno, které zabrání zobrazení webu, dokud návštěvník neudělí souhlas s cookies? Nesmíte tím podmínit zobrazení webu. Jestli lze podmínit zobrazení kliknutím na cokoli, třeba i nesouhlas, to si nejsem jistý, ale nedělal bych to.

Pomoc, propadly se mi příjmy z reklamy. Naprosto vám rozumím. Zkuste do implementace cookie řešení přidat reload stránky po souhlasu s reklamními cookies. Případně Tag Manager by měl být schopen reklamy spustit po souhlasu i bez reloadu. Hodí se to na webech, kde většina lidí přijde z vyhledávače jen na jeden článek.

Mrkněte ještě na Často kladené otázky ohledně souhlasu s cookies uděleného prostřednictvím tzv. cookie lišty na webu Úřadu pro ochranu osobních údajů.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Díky za super článek s praktickým řešením!
Cookies v Drupalu 7 jsou posílány (nebo nastavovány) jen pomocí JavaScriptu? Žádné pomocí PHP?

návštěvník

Jó, čtu nepozorně... :-D

Profile picture for user Jan Polzer

Ještě doplním, že Drupal 7 ukládal cookie has_js, kterou nastavoval info, zda prohlížeč podporuje JavaScript. Existuje modul Force JS, který to potlačuje. Případně Drupal 7.83 a novější tuto cookie už taky nevytváří.

návštěvník

Super článek ušetřil čas a urychlil práci. není nutno vymýšlet vymyšlené! Díky moc
Bobo

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru