Souhlas s cookies — archivované znění v2Účinné od 28. 9. 2026 · kontrolní součet 50296fd05161e36cTohle je uložená kopie pro doložení, s jakým zněním byla uzavřena smlouva. Aktuální znění ;
// Po půl roce se zeptáme znovu — tak dlouho se souhlas ještě dá brát jako aktuální.
var PLATNOST = 182 * 24 * 60 * 60 * 1000;
/* ---------- souhlas ---------- */
/* Cookie:
se čtou dál, ať nikdo nemusí volit znovu. */
/* Verze souhlasu. 19. 9. 2026 přibyl do marketingu remarketing (naše reklama na jiných webech).
Kdo dřív souhlasil s marketingem, souhlasil s užším účelem — na marketing se lišta zeptá znovu.
Souhlas s měřením se tím nemění, takže platí dál (příznak doptat = zeptat se jen na marketing).
Odmítnutí marketingu platí dál, to se neptáme. */
var VERZE =
;
function volba() {
var m = document.cookie.match(/(?:^|;\s*)tl_souhlas=([^;]*)/);
var v = m ? decodeURIComponent(m[1]) :
= souhlas s měřením i marketingem. Měření platí, marketing se doptáme.
if (v ===
) > -1 };
if (s.marketing && v.indexOf(VERZE) < 0) { s.marketing = false; s.doptat = true; }
return s;
}
function uloz(s) {
var d = new Date(Date.now() + PLATNOST);
document.cookie = COOKIE +
);
}
function nic() { return { mereni: false, marketing: false }; }
/* ---------- zdroj návštěvy pro objednávku ----------
Katalog běží v Astru, košík a pokladna ve WordPressu, takže WooCommerce vidí jako vstupní stránku
až /kosik/ a každou objednávku hlásí jako „direct“. Zdroj si proto uložíme sami do cookie tl_zdroj
a WordPress si ji při objednávce přečte (mu-plugin tl-atribuce.php).
Zapisujeme jen se souhlasem s měřením. Poslední nepřímý zdroj vyhrává, přímá návštěva nic nepřepíše. */
var ZDROJ_COOKIE =
};
}
}
return null;
}
function ulozZdroj() {
var z = zdrojZAdresy();
if (!z) return; // přímá návštěva dřívější zdroj nepřepisuje
z.l = location.pathname;
z.t = new Date().toISOString();
var d = new Date(Date.now() + ZDROJ_PLATNOST);
document.cookie = ZDROJ_COOKIE +
);
}
function smazZdroj() {
document.cookie = ZDROJ_COOKIE +
};
}
// Výchozí stav je odmítnuto — pro všechny, ne jen pro EHP. Chybná detekce
// země by měřila lidi, kteří k tomu nedali souhlas; jednotný bezpečný stav
// takovou chybu udělat nemůže.
var v = volba();
if (v && v.mereni) { ulozZdroj(); }
/* Adresa stránky, kterou hlásíme Googlu.
Na potvrzení objednávky je v URL klíč key — kdo ho má, zobrazí si
celou objednávku i s adresou zákazníka. Do měření nepatří. Ladicí
parametr taky ne, jinak by se stránka v přehledech tříštila.
Zbytek adresy zůstává nedotčený, aby dál fungovaly utm značky i gclid. */
function adresaProMereni() {
try {
var u = new URL(location.href);
// Do měření nesmí jít nic, čím se dá přihlásit nebo co identifikuje člověka.
[
].forEach(function (p) {
u.searchParams.delete(p);
});
return u.toString();
} catch (e) {
return location.href;
}
}
/* ---------- Basic Consent Mode ----------
Rozhodnutí z 28. 9. 2026: bez souhlasu neodchází třetí straně nic, ani
stav souhlasu. Dřív to byl Advanced režim — gtag.js se načítal vždycky
a i po odmítnutí posílal Googlu cookieless ping s identifikátorem,
rozlišením, údaji o zařízení, adresou a titulkem stránky.
Proto se gtag.js nenačte, dokud nemáme souhlas alespoň s jednou
kategorií, a příkazy pro gtag se do dataLayeru nedostanou dřív —
jinak by Google zpracoval událost bez consent default před ním.
Do té doby čekají v gaFronta. Naše vlastní vrstva v dataLayeru
(objekty {event, ecommerce} z tl-mereni.php) se nemění, stejně jako
názvy událostí.
Gating je po účelech, ne „souhlas s čímkoli = spustit všechno“:
měření → GA4 s analytics_storage granted, ad_* zůstává denied
marketing → ad_* granted, navíc GTM, Seznam SEM a Heureka
Pozor na ladění: ?tl_debug=1 i =2 teď taky potřebují souhlas, protože
i suchý běh by načetl gtag.js z googletagmanager.com. Kdo chce ladit,
dá si ve vlastním prohlížeči souhlas. */
var gaFronta = [];
var gaSpusteno = false;
function ga() {
if (gaSpusteno) gtag.apply(null, arguments);
else gaFronta.push(arguments);
}
function spustGa(s) {
if (gaSpusteno || REZIM ===
) return;
if (!s || (!s.mereni && !s.marketing)) return; // bez souhlasu se nenačítá nic
gaSpusteno = true;
var vychozi = stav(s);
vychozi.functionality_storage =
);
document.head.appendChild(sc);
}
while (gaFronta.length) gtag.apply(null, gaFronta.shift());
}
spustGa(v);
/* ---------- Seznam: Sklik a Zboží.cz (SEM) ----------
Jeden skript Seznamu na PageView i nákupy. Souhlas stejný jako u Googlu:
bez „Přijmout“ jde Seznamu consent denied (žádné reklamní cookies), po
souhlasu granted. Volání před načtením skriptu čekají ve frontě.
Sklik tag NEVKLÁDAT do GTM — nákupy by se počítaly dvakrát.
Suchý běh ladění (?tl_debug=2) Seznam vůbec nenačítá. */
var semFronta = [];
var semNacteno = false;
function semSouhlas(s) {
var h = s.marketing ?
;
// Seznam chce všech pět polí. Když jedno chybí, celé updateConsent zahodí
// a události odcházejí bez souhlasu (nespárují se s kliknutím na reklamu).
// functionality_storage je nezbytné stejně jako u Googlu výše.
return { consent_mode: { ad_storage: h, ad_user_data: h, ad_personalization: h,
analytics_storage: m, functionality_storage:
&&
o.body.indexOf(semKlic) > -1) {
var o2 = {};
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) o2[k] = o[k];
o2.body = semBezKlice(o.body);
return semPuvodniFetch.call(window, u, o2);
}
} catch (e) { }
return semPuvodniFetch.apply(window, arguments);
};
}
/* Skript Seznamu je reklamní měření (Sklik, Zboží.cz, retargeting), takže
se načítá jen se souhlasem s marketingem. Dřív se načítal vždycky se
signály denied a i tak odcházel požadavek na sem.seznam.cz/rtgconv.
Souhlas jen s měřením Seznam nespustí — analytickou vrstvu tu nemáme. */
function nactiSem(s) {
if (REZIM ===
) return;
semNacteno = true;
// Pořadí podle Seznamu: nejdřív souhlas, pak PageView, pak čekající události.
window.SEM(
, semSouhlas(volba() || nic()));
window.SEM(
, nazev, p);
}
/* ---------- Heureka: měření konverzí ----------
Skript Heureky si z adresy prokliku (parametr hgtid) uloží cookie hg_ocm_id
a na děkovací stránce podle ní spáruje objednávku s proklikem z Heureky.
Je to reklamní cookie, proto se skript načte až se souhlasem s marketingem,
stejně jako GTM. Když souhlas přijde později na téže stránce, načte se
v rozhodni(). Volání do té doby čekají ve frontě window.heureka.q a bez
souhlasu nikam neodejdou. Jen koruny (máme jen Heureka.cz). ID produktu
= ITEM_ID ve feedu Heureky (tl-123), ceny s DPH, celkem včetně dopravy —
„cena celé objednávky“ podle Heureky. Suchý běh (?tl_debug=2) Heureku nenačítá. */
var heurekaStranka =
;
} catch (e) { }
heurekaNacti();
var kurzor = 0, bezi = false;
function projdi() {
if (bezi) return; // posli() sám zapisuje do dataLayeru — nesmí se zacyklit
bezi = true;
try { while (kurzor < window.dataLayer.length) posli(window.dataLayer[kurzor++]); }
finally { bezi = false; }
}
projdi();
var puvodniPush = window.dataLayer.push;
window.dataLayer.push = function () {
var r = puvodniPush.apply(window.dataLayer, arguments);
projdi();
return r;
};
// gtag.js si dataLayer.push přebaluje sám a může nám ho nahradit. Kurzor
// do pole si držíme vlastní, takže i pak žádnou událost neztratíme.
setInterval(projdi, 2000);
/* ---------- Google Tag Manager ----------
Kontejner s marketingovými tagy. GA4 v něm schválně NENÍ (měří přímo tenhle
soubor) a Sklik taky ne (měří se přes SEM výš, jinak by se nákupy počítaly dvakrát).
Načte se až po souhlasu s marketingem. Samotné načtení kontejneru spustí tagy,
které o Consent Mode nemusí vědět, takže u odmítnutého souhlasu se nespouští vůbec. */
function nactiGtm() {
if (window.__tlGtm) return;
window.__tlGtm = true;
window.dataLayer.push({
;
f.parentNode.insertBefore(j, f);
}
/* ---------- lišta se souhlasem ---------- */
/* box-sizing musí sedět i tady: vnitřní odsazení se jinak přičte k šířce
a lišta na 320px displeji přetáhne stránku o 4 px do strany. */
var CSS =
.tl-souhlas{position:fixed;left:0;right:0;bottom:0;z-index:9990;background:#fff;max-width:100%;
.tl-souhlas[hidden]{display:none}
.tl-souhlas-in{max-width:1180px;margin:0 auto;padding:18px 20px;display:flex;gap:24px;
.tl-souhlas-text{flex:1 1 400px;min-width:0}
.tl-souhlas-text strong{display:block;font-size:15px;color:var(--ink,#1a1a2e);margin-bottom:5px}
.tl-souhlas-text p{margin:0;font-size:13.5px;line-height:1.6;color:var(--g-700,#4b5563)}
.tl-souhlas-text a{color:var(--blue,#2563eb)}
.tl-souhlas-tl{display:flex;gap:10px;flex-shrink:0}
.tl-souhlas-tl button{min-width:154px;min-height:44px;padding:11px 22px;border-radius:var(--r,6px);
.tl-souhlas-tl button[data-tl="ano"]{background:var(--ink,#1a1a2e);color:#fff}
.tl-souhlas-tl button:hover{opacity:.88}
.tl-souhlas-volby{flex:1 1 100%;margin:2px 0 0;padding:14px 0 0;
.tl-souhlas-volby[hidden]{display:none}
.tl-souhlas-radek{display:flex;gap:12px;align-items:flex-start;font-size:13.5px;
.tl-souhlas-radek b{display:block;color:var(--ink,#1a1a2e);font-size:14px}
.tl-souhlas-radek input{width:20px;height:20px;margin:2px 0 0;flex-shrink:0;
.tl-souhlas-radek input:disabled{opacity:.55;cursor:default}
@media(max-width:640px){.tl-souhlas-in{padding:16px;gap:14px}
.tl-souhlas-tl{width:100%}.tl-souhlas-tl button{flex:1 1 40%;min-width:0;padding:11px 8px;font-size:13.5px}}
Cookies. Bohužiaľ nie tie k pivu.
a či sa nám reklama oplatí, a občas sa ti pripomenieme reklamou aj na iných weboch.
Google Ads, Sklik, Zboží.cz a Heureka: či sa reklama oplatí a pripomenutie našej ponuky aj na iných weboch (remarketing). Načítajú sa až s tvojím súhlasom.
Cookies. Bohužel ne ty k pivu.
Ty nutné drží pohromadě košík, jazyk i platbu kartou. Se souhlasem k tomu měříme, jak web používáš
a jestli se nám reklama vyplatí, a občas se ti připomeneme reklamou i na jiných webech.
Bez souhlasu neukládáme nic navíc a obchod šlape stejně.
Souhlas se soubory cookie
Google Ads, Sklik, Zboží.cz a Heureka: jestli se reklama vyplatí a připomenutí naší nabídky i na jiných webech (remarketing). Načtou se až s tvým souhlasem.
<label class="tl-souhlas-radek">
<div class="tl-souhlas-in">
<div class="tl-souhlas-text">
<div class="tl-souhlas-tl">
<div class="tl-souhlas-volby" hidden>
<div class="tl-souhlas-tl"><button type="button" data-tl="ulozit">
).hidden = false;
}
// Po odmítnutí nemá smysl nechávat v prohlížeči cookies z dřívějšího souhlasu.
function smazMericiCookies(s) {
var host = location.hostname.replace(/^www\./,
);
var vse = document.cookie.split(
;
if ((mereni && !s.mereni) || (marketing && !s.marketing)) {
document.cookie = n +
;
document.cookie = n +
, semSouhlas(s)); } else { nactiSem(s); }
smazMericiCookies(s);
if (s.mereni) { ulozZdroj(); } else { smazZdroj(); }
if (s.marketing) nactiGtm();
if (s.marketing) heurekaNacti();
if (lista) lista.hidden = true;
}
if (!v || v.doptat) {
// Bez rozhodnutí, nebo se ptáme na marketing — měření mezitím běží podle uloženého souhlasu.
if (document.readyState ===
, otevri);
else otevri();
}
if (v && v.marketing) {
nactiGtm();
}
// Změna volby — jakýkoli odkaz s atributem data-tl-souhlas lištu znovu otevře.
window.tlSouhlas = { otevri: otevri, volba: volba };
document.addEventListener(