Novinka: Vizuální editor pro éru AI webů. Poslední dílek skládačky, když chcete upravovat web a ne psát e-maily. www.directedit.dev

💬

Zobrazení (ne)souhlasu v cookie liště

Jak zobrazit stav souhlasu v cookie liště? S kouskem Javascriptu jednoduše.

Aby uživatel zjistil, jaký souhlas udělil, musí se podívat na stránku o zpracování cookies (nebo musí do konzole prohlížeče). Následujícím skriptem můžete zobrazit (ne)udělení souhlasu o zpracování cookies přímo na lištu. Jeho použití můžete vidět i na tomto webu.

Poznámka: Skript žádná data nikam neukládá ani neposílá, pouze přečte hodnoty z cookies prohlížeče, pokud tam jsou, a zobrazí je v cookie liště.

Jak najít cookies v prohlížeči

Jak vlastně cookies v prohlížeči zobrazit?

  • Otevřete vývojářskou konzoli prohlížeče (většina jich funguje na povel klávesy F12, případně pravým kliknutím na nějaký prvek stránky a “prozkoumat prvek”).
  • Otevře se okno vývojářské konzole, nahoře je menu (Elementy, Kontrole, Zdroje…) – najděte tu Aplikace.
  • Najděte Uložiště a název webu, na kterém jste – po kliknutí se zobrazí cookies, které má stránka uložené (můžete si je vyfiltrovat).
image 1

Úprava cookie lišty

Omezení řešení

  • v prohlížeči musí běžet JS,
  • řešení je pouze pro 1 jazyk (račte si překlady v kódu upravit dle libosti),
  • řešení bylo otestováno na verzi WP 6.1.1 + Complianz 6.4.0.
Úprava cookie lišty

CSS

Zobrazený souhlas je potřeba trochu naformátovat, aby zapadl do patičky (měl by reflektovat nastavení z Complianz, ale račte si ho upravit, jak je třeba). Ideální místo je pro ně v nastavení šablony (Vzhled -> přizpůsobit), aby se aplikovaly na každé stránce webu.

.jk-cmplz-consents {
    font-size: var(--cmplz_text_font_size);
    line-height: var(--cmplz_text_line_height);
    color: var(--cmplz_text_color);
    margin-bottom: 5px;
    text-align: center;
    width: 100% ;
    grid-column: span 3;
    overflow-y: auto;
    overflow-x: hidden;
}

Javascript

Kód se bude volat vždy, když se načte stránka (můžete si ho upravit, aby se volal kdykoli jindy). Ideální místo je pro něj patička nebo tělo stránky (přinejhorším jde i do hlavičky, skriptu je to jedno).

  • např. pro DIVI je to DIVI -> Nastavení -> Integrace -> <body> sekce.
<script>

/**
 * return value of the cookie or empty string ""
 * @cname cookie name
 * @returns {string}
 */
function jkGetCookieValue(cname) {
    let name = cname + "=";
    let decodedCookie = decodeURIComponent(document.cookie);
    let ca = decodedCookie.split(';');
    for (let i = 0; i < ca.length; i++) {
        let c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}


/**
 * return language value of the cookie
 * @cname cookie name
 * @returns {string}
 */
function jkGetCookieString(cname) {
    let jk_allow = "povoleno";
    let jk_deny = "zakázáno";
    let jk_no_response = "bez odpovědi";

    if(cname == "cmplz_functional"){ ////WTF? Cmlpz stored function cookies as deny, even if they're essential? 
        return jk_allow;
    } else {
        let cookieValue = jkGetCookieValue(cname);
        if (cookieValue == "allow") {
            return jk_allow;
        } else if (cookieValue == "deny") {
            return jk_deny;
        } else {
            return jk_no_response;
        }
    }
}


/**
 * Add cookie translations to the HTML to the Complianz banner 
 * @returns {string}
 */
function jkProceedCookiesToCmplz(){
    let jk_cmplz_consent = document.getElementById("cmplz-cookiebanner-container").getElementsByClassName("cmplz-cookiebanner")[0];

    if (jkGetCookieValue("cmplz_functional") != "") { // call only when allow or deny
        if (jk_cmplz_consent.getElementsByClassName("jk-cmplz-consents").length < 1) {
            let jk_cmplz_html = "<div class=\"jk-cmplz-consents\">";
            jk_cmplz_html += "<span class=\"\">Nezbytné: " + jkGetCookieString("cmplz_functional") + "</span> | ";
            jk_cmplz_html += "<span class=\"\">Marketingové: " + jkGetCookieString("cmplz_marketing") + "</span> | ";
            jk_cmplz_html += "<span class=\"\">Statistické: " + jkGetCookieString("cmplz_statistics") + "</span>";
            jk_cmplz_html += "</div>";

            jk_cmplz_consent.innerHTML += jk_cmplz_html;            
        }
    }
}


/**
 * Call when DOM is ready
 * @returns {string}
 */
document.addEventListener("DOMContentLoaded", () => {
    jkProceedCookiesToCmplz();
});

</script>

Líbil se vám článek? Pošlete ho dál:

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Vaše komentáře

Zanechte první komentář

Zpět k tipům

Pravidelná dávka užitečných tipů až do schránky