Neu Cookie Manager zum EuGH Urteil zum selbsteinbau

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.271
135
Küps
Hallo Leute ich habe mal ein wenig GitHub durchsucht und was gefunden was genau unser Problem beheben sollte. Die 2 anderen Systeme die ich noch fand waren nicht mit den JQuery von JTL kompatibel oder nicht so Feature reich.

Habe also diesen gefunden und seit gestern Nacht läuft er bei mir: https://klaro.kiprotect.com/
Dies ist ein OpenSource Cookie Manager der leicht im Template untergebracht werden kann!
Der Standardmäßig sich öffnet und den Usern alles aufzeigt und sich danach nur noch über einen Link öffnet und den Usern ermöglicht die Einstellungen zu ändern.

Ich möchte hier versuchen den "normalen Shopbetreibern" zu zeigen wie man das Teil einbaut und passend konfiguriert. Ich selbst bin auch noch dabei es passen einzustellen und werde daher zwischendurch einen "Status updaten".

Wer diesen Manager mal sehen will. Mein eigener kleiner Webshop und Testobjekt sollte dafür genügen. https://www.magisches-laedchen.de/

Das ganze Teil braucht nur 2 Dateien, ok die eine ist ein wenig sehr groß (91KB) aber für die schnelle wie wir es ja brauchen ist es OK.

1. Schritt (download der 2 Dateien)
Direkt auf der Startseite ( https://klaro.kiprotect.com/ ) findet ihr diese beiden gelben Buttons. Diese 2 Dateien sind nur nötig und die config.js davon ist anzupassen!
DeepinBildschirmfoto_Bereich auswählen_20191005071726.pngDeepinBildschirmfoto_Bereich auswählen_20191005071752.png

2. Schritt (so war meine Vorgehensweise es kann man auch anders machen wenn man sich auskennt)
In deinen Templates Ordner per FTP einen Ordner "cookies" anlegen.

In diesen Ordner die beiden Dateien reinkopieren bzw hochladen.

Also sollte dein Templates Ordner zum Schluß so aussehen.
DeepinBildschirmfoto_Bereich auswählen_20191005073834.png

3 Schritt Template anpassen
Sollte in deinen "eigenen Template und aktiven" im kein Ordner layout oder in diesen die Datei header.tpl nicht geben dann diese erzeugen)
in die header.tpl im Ordner layout in den Block (block name="head-resources")

folgendes mit reinschreiben
PHP:
        <!--Cookie consent banner-->
            <script defer type="text/javascript" src="https://www.deine-domain.de/templates/dein-Template-Name/cookie/config.js"></script>
            <script defer type="text/javascript" src="https://www.deine-domain.de/templates/dein-Template-Name/cookie/klaro.js"></script>
        <!-- End Cookie consent banner-->

deine header.tpl sollte dann zum Schluß aussehen wie meine. Es kommt halt darauf an was du so noch in dieser Datei verändert hast.

Code:
{extends file="../../Evo/layout/header.tpl"}

{block name="head-resources"}
    {$smarty.block.parent}
    {if !empty($Artikel->Bilder)}
        <meta property="og:image" content="{$ShopURL}/{$Artikel->Bilder[0]->cPfadNormal}" />
    {/if}
    {include file="layout/TagManager.tpl"}
        <!--Cookie consent banner-->
            <script defer type="text/javascript" src="https://www.magisches-laedchen.de/templates/ML2019/cookie/config.js"></script>
            <script defer type="text/javascript" src="https://www.magisches-laedchen.de/templates/ML2019/cookie/klaro.js"></script>
        <!-- End Cookie consent banner-->
{/block}

4. Schritt anpassen der config.js im Ordner cookie
Ich habe zum Zeitpunkt dieses kleinen Tutorials schon folgendes eingestellt.
  • Sofortiges aufklappen des Managers (als Cookie-Banner)
    Hierzu musst du in Zeile 32 mustConsent auf true stellen
    JavaScript:
        mustConsent: true,
  • Alle Gruppen (die wir noch einrichten auf false)
    Hierzu Zeile 27 default auf false stellen
    JavaScript:
        default: false,
  • Darüber in Zeile 24 der Link zur Datenschutzerklärung
    JavaScript:
        privacyPolicy: '/Datenschutz',
Ich schaue mir gerade die Cookie an. Ich nutze verschiedene System redundant (will es mal so nennen) und daher gebe ich euch später nochmal ein Feedback. Hoffe das wir hier vielleicht zusammen eine Lösung für uns finden.

Gruß und einen schönen Tag

Christian
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
4.784
926
Morgen Christan,

danke mal fürs herumschauen!

Das unterbinden ja wirklich sofort Piwik (darf meiner Meinung nach nicht automatisch auf JA stehen), sofern noch nicht ausgewählt.
Könntest du da mal Ama Pay bitte auch aufnehmen und testen, ob das auch alle Ama Pay Cookies blockiert.
 

WAWI-USER321

Sehr aktives Mitglied
26. Dezember 2013
250
34
Welche Cookies man hat, sollte man wohl über einen Website Scan rausfinden.

Wenn man dafür keinen externen Dienstleister verwenden möchte, hilft hier das Firefox Plugin Cookie Editor, das einem alle Cookies die mit der aktuellen Seite zusammenhängen anzeigt.
Geht man auf advanced wird einem auch die Herkunftsdomain des Cookies (z.b. google.com, deshop.de,...) und die Gültigkeitsdauer des Cookies angezeigt.

Dann muss man nur noch rausfinden welcher cookie für was ist.
 

WAWI-USER321

Sehr aktives Mitglied
26. Dezember 2013
250
34
Cookies:
JTLSHOP
Session Cookie des JTL Shop
Gültigkeitsdauer kann im Backend frei eingestellt werden

JTLCRON
Steuert wohl autocron Funktionen (Notwendig)

DBUID
Kommt vom Dash.bar Plugin (Vermutlich trakcing)
Laufzeit 117 Monate

eSIdAdm
Dropper Sessioncookie (Notwendig)
Laufzeit: Session

Übrigens mit dem Cookie Editor Plugin kann die Cookieliste auch exportiert werden, was durchaus hilfreich werden, kann wenns ein paar mehr werden....


Danke übrigens für das Script, Cookiebot fliegt bei mir gleich wieder raus.
 

Anhänge

  • Bildschirmfoto vom 2019-10-05 10-13-37.png
    Bildschirmfoto vom 2019-10-05 10-13-37.png
    30,7 KB · Aufrufe: 198

bigloopfan

Sehr aktives Mitglied
20. Februar 2010
712
32
Vielen Dank für die genaue Auflistung. Wird auch iwo dokumentiert welche IP wann zugestimmt hat?

VIele Grüße
Stefan
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.271
135
Küps
So wieder daheim vom Umzug fahren.

Da das Script nicht Datenbank gestützt ist und keine Textfiles anlegt. Sag ich nein

Ist das laut Urteil notwendig?
 

bigloopfan

Sehr aktives Mitglied
20. Februar 2010
712
32
Da bin ich mir nicht sicher. Habe auch leider nichts gefunden diesbezüglich.

Ich habe noch folgendes auf https://datenschutz-generator.de/eugh-cookie-einwilligung-banner-detailinformationen-pflicht/ gelesen:

Wo muss ein Opt-Out (Widerspruch) platziert werden?
Nutzer müssen dem Cookie-Einsatz widersprechen können. Platzieren Sie daher die Möglichkeit, die Einstellungen zu ändern, deutlich. Ich empfehle die Platzierung in der Datenschutzerklärung und im Fußbereich Ihrer Webseite.
Ferner sollten Nutzer schon im Cookie-Einwilligung-Banner über die Freiwilligkeit und die Widerspruchsmöglichkeit belehrt werden.

Auf der Webseite werden Nutzer darauf hingewiesen, dass sie eine Opt-Out-Möglichkeit im Fußbereich der Webseite finden (die Schaltfläche findet sich so auch in den Hinweisen zu Cookies in der Datenschutzerklärung).

VIele Grüße
Stefan
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.271
135
Küps
Ok gerade bei IT-Recht-Kanzlei gelesen:

3.) Protokollierung und Speicherung von Einwilligungen
Weil für die Erfüllung der einwilligungsbezogenen Nachweispflichten eine sog. „indirekte Nutzeridentifizierung“ genügt, sollte die Entscheidung eines Betroffenen für oder gegen alle individuellen Cookie-Einwilligungen auf dessen Endgerät gespeichert werden. Die Verwendung einer User-ID oder einer sonstigen eindeutigen Identifizierung ist hierfür nicht erforderlich.
Die Speicherung der Einwilligungseinstellungen auf dem jeweiligen Endgerät genügt als Nachweis für vorliegende Einwilligungen und hat zudem den Vorteil, dass dem Betroffenen bei einem erneuten Seitenaufruf das Banner oder Tool nicht erneut angezeigt wird.

Soweit ich sehe muss das nur auf den Besucher Gerät Protokolliert sein.

Das kann das Skript und zwar in der Console:
console. log(
'User consent for app ' + app.name + ': consent=' + consent
);

Das Protokoliert dies in der Browser Konsole und sollte somit reichen.
 

Garnelengarten

Aktives Mitglied
25. Januar 2016
57
8
Für alle die das Problem haben das die Umlaute nicht richtig dargestellt werden

Speichert die 2 Javascript-Dateien z.B. in Notepad++ in UFT-8-BOM ab und dann passt dass. ;)
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.271
135
Küps
Ich poste hier mal meine derzeitige config.js

JavaScript:
// By default, Klaro will load the config from  a global "klaroConfig" variable.
// You can change this by specifying the "data-config" attribute on your
// script take, e.g. like this:
// <script src="klaro.js" data-config="myConfigVariableName" />
// You can also disable auto-loading of the consent notice by adding
// data-no-auto-load=true to the script tag.
var klaroConfig = {
    // You can customize the ID of the DIV element that Klaro will create
    // when starting up. If undefined, Klaro will use 'klaro'.
    elementID: 'klaro',

    // You can customize the name of the cookie that Klaro uses for storing
    // user consent decisions. If undefined, Klaro will use 'klaro'.
    cookieName: 'klaro',

    // You can also set a custom expiration time for the Klaro cookie.
    // By default, it will expire after 120 days.
    cookieExpiresAfterDays: 365,

    // You can customize the name of the cookie that Klaro will use to
    // store user consent. If undefined, Klaro will use 'klaro'.

    // Put a link to your privacy policy here (relative or absolute).
    privacyPolicy: '/Datenschutz',

    // Defines the default state for applications (true=enabled by default).
    default: false,

    // If "mustConsent" is set to true, Klaro will directly display the consent
    // manager modal and not allow the user to close it before having actively
    // consented or declines the use of third-party apps.
    mustConsent: true,

    // You can define the UI language directly here. If undefined, Klaro will
    // use the value given in the global "lang" variable. If that does
    // not exist, it will use the value given in the "lang" attribute of your
    // HTML tag. If that also doesn't exist, it will use 'en'.
    //lang: 'en',

    // You can overwrite existing translations and add translations for your
    // app descriptions and purposes. See `src/translations.yml` for a full
    // list of translations that can be overwritten:
    // https://github.com/DPKit/klaro/blob/master/src/translations.yml

    // Example config that shows how to overwrite translations:
    // https://github.com/DPKit/klaro/blob/master/src/configs/i18n.js
    translations: {
        // If you erase the "consentModal" translations, Klaro will use the
        // defaults as defined in translations.yml
        de: {
            consentModal: {
                title:'Cookies die wir setzen!',
                description:
                    'Seit dem EuGH Urteil vom Dienstag den 01.10.2019 sind wir verpflichtet von unseren Besuchern eine "AKTIVE" Cookie abfrage zu stellen. Leider sind Urteile nicht immer Userfreundlich auch wenn wir das Urteil als einen richtigen Schritt sehen.',
            },
            inlineTracker: {
                description: 'Mautic',
            },
            externalTracker: {
                description: 'Facebook + AdWords Retargeting',
            },
            adsense: {
                description: 'Anzeigen von Werbeanzeigen (Beispiel)',
            },
            matomo: {
                description: 'Sammeln von Besucherstatistiken, nur interner Gebrauch',
            },
            camera: {
                description: 'Eine �berwachungskamera (nur ein Beispiel zu IMG-Tags)',
            },
            cloudflare: {
                description: 'Schutz gegen DDoS-Angriffe',
            },
            intercom: {
                description: 'Zammad',
            },
            mouseflow: {
                description: 'Echtzeit-Benutzeranalyse (nur ein Beispiel)',
            },
            googleFonts: {
                description: 'Web-Schriftarten von Google gehostet',
            },
            purposes: {
                analytics: 'Besucher-Statistiken',
                security: 'Sicherheit',
                livechat: 'Live Chat',
                advertising: 'Anzeigen von Werbung',
                styling: 'Styling',
            },
        },
        en: {
            consentModal: {
                description:
                    'Here you can see and customize the information that we collect about you. Entries marked as "Example" are just for demonstration purposes and are not really used on this website.',
            },
            inlineTracker: {
                description: 'Example of an inline tracking script',
            },
            externalTracker: {
                description: 'Example of an external tracking script',
            },
            adsense: {
                description: 'Displaying of advertisements (just an example)',
            },
            matomo: {
                description: 'Collecting of visitor statistics',
            },
            camera: {
                description: 'A surveillance camera (just a silly example for an IMG tag)',
            },
            cloudflare: {
                description: 'Protection against DDoS attacks',
            },
            intercom: {
                description: 'Chat widget & collecting of visitor statistics (just an example)',
            },
            mouseflow: {
                description: 'Real-Time user analytics (just an example)',
            },
            googleFonts: {
                description: 'Web fonts hosted by Google',
            },
            purposes: {
                analytics: 'Analytics',
                security: 'Security',
                livechat: 'Livechat',
                advertising: 'Advertising',
                styling: 'Styling',
            },
        },
        tr: {
            consentModal: {
                description:
                    'Hakkınızda topladığımız bilgileri burada görebilir ve özelleştirebilirsiniz. "Örnek" olarak belirtilenler sadece gösterim amaçlıdır ve gerçekte bu site için kullanılmazlar.',
            },
            inlineTracker: {
                description: 'Satıriçi takip kodu için bir örnek',
            },
            externalTracker: {
                description: 'Dışarıdan çağırılan bir takip kodu için örnek',
            },
            adsense: {
                description: 'Reklam görüntüleme (sadece örnek)',
            },
            matomo: {
                description: 'Ziyaretçi istatistiklerini toplama',
            },
            camera: {
                description: 'İzleme kamerası (IMG tag icin saçma bir örnek daha)',
            },
            cloudflare: {
                description: 'DDoS saldırılarına karşı koruma',
            },
            intercom: {
                description: 'Sohbet aracı ve ziyaretçi istatistiklerini toplama (sadece bir örnek)',
            },
            mouseflow: {
                description: 'Gerçek zamanlı kullanıcı istatistiği (sadece bir örnek)',
            },
            googleFonts: {
                description: 'Google tarafından barındırılan Web Yazıtipi bilgileri',
            },
            purposes: {
                analytics: 'Analitik',
                security: 'Güvenlik',
                livechat: 'Canlı Sohbet',
                advertising: 'Reklam',
                styling: 'Biçimlendirme',
            },
        },
    },

    // This is a list of third-party apps that Klaro will manage for you.
    apps: [
        {
            name : 'onlineshop',
            default: true,
            title : 'Shopsystem',
            purposes : ['security'],
            cookies : ['JTLSHOP','language'],
            callback : function(consent, app){
            },
            required: true,
            optOut: true,
            onlyOnce: false,
        },
        {
            // Each app should have a unique (and short) name.
            name: 'matomo',

            // If "default" is set to true, the app will be enabled by default
            // Overwrites global "default" setting.
            // We recommend leaving this to "false" for apps that collect
            // personal information.
            default: false,

            // The title of you app as listed in the consent modal.
            title: 'Matomo / Piwik',

            // The purpose(s) of this app. Will be listed on the consent notice.
            // Do not forget to add translations for all purposes you list here.
            purposes: ['analytics'],

            // A list of regex expressions or strings giving the names of
            // cookies set by this app. If the user withdraws consent for a
            // given app, Klaro will then automatically delete all matching
            // cookies.
            cookies: [
                // you can also explicitly provide a path and a domain for
                // a given cookie. This is necessary if you have apps that
                // set cookies for a path that is not "/" or a domain that
                // is not the current domain. If you do not set these values
                // properly, the cookie can't be deleted by Klaro
                // (there is no way to access the path or domain of a cookie in JS)
                [/^_pk_.*$/, '/', 'analyse.lichte-kraft.eu'], //for the production version
                'piwik_ignore',
            ],

            // An optional callback function that will be called each time
            // the consent state for the app changes (true=consented). Passes
            // the `app` config as the second parameter as well.
            callback: function(consent, app) {
                // This is an example callback function.
                console.log(
                    'User consent for app ' + app.name + ': consent=' + consent
                );
            },

            // If "required" is set to true, Klaro will not allow this app to
            // be disabled by the user.
            required: false,

            // If "optOut" is set to true, Klaro will load this app even before
            // the user gave explicit consent.
            // We recommend always leaving this "false".
            optOut: false,

            // If "onlyOnce" is set to true, the app will only be executed
            // once regardless how often the user toggles it on and off.
            onlyOnce: false,
        },

        // The apps will appear in the modal in the same order as defined here.
        {
            name: 'mautic',
            default: false,
            title: 'Mautic (Newsletter)',
            purposes: ['analytics'],
            cookies: ['inline-tracker'],
            optOut: false,
            onlyOnce: false,
        },
        {
            name : 'google-analytics',
            default: false,
            title : 'Google Analytics',
            purposes : ['statistics'],
            cookies : [/^ga/i],
            callback : function(consent, app){
            },
            optOut: false,
            onlyOnce: false,
        },
        {
            name: 'adwords-facebookpixel',
            default: false,
            title: 'Google Adwords + Facebook',
            purposes: ['analytics'],
            cookies: ['external-tracker'],
            optOut: false,
            onlyOnce: false,
        },
        {
            name: 'payment',
            default: false,
            title: 'Amazon Payment',
            purposes: ['analytics','security'],
            cookies: ['amazon-pay-connectedAuth','apay-session-set','amazon-pay-abtesting-new-widgets','amazon-pay-abtesting-apa-migration','lpa_redirect'],
            optOut: false,
            onlyOnce: false,
        },
    ],
};

So hier mal ein paar Codeschnippsel zu den sogenannten APPS!!

JTL- Shop
JavaScript:
        {
            name : 'onlineshop',
            default: true,
            title : 'Shopsystem',
            purposes : ['security'],
            cookies : ['JTLSHOP','language'],
            callback : function(consent, app){
            },
            required: true,
            optOut: true,
            onlyOnce: false,
        },

Google Analytics
JavaScript:
        {
            name : 'google-analytics',
            default: false,
            title : 'Google Analytics',
            purposes : ['statistics'],
            cookies : [/^ga/i],
            callback : function(consent, app){
            },
            optOut: false,
            onlyOnce: false,
        },
 

B2B-IT

Aktives Mitglied
15. Januar 2016
88
4
Ich poste hier mal meine derzeitige config.js

JavaScript:
// By default, Klaro will load the config from  a global "klaroConfig" variable.
// You can change this by specifying the "data-config" attribute on your
// script take, e.g. like this:
// <script src="klaro.js" data-config="myConfigVariableName" />
// You can also disable auto-loading of the consent notice by adding
// data-no-auto-load=true to the script tag.
var klaroConfig = {
    // You can customize the ID of the DIV element that Klaro will create
    // when starting up. If undefined, Klaro will use 'klaro'.
    elementID: 'klaro',

    // You can customize the name of the cookie that Klaro uses for storing
    // user consent decisions. If undefined, Klaro will use 'klaro'.
    cookieName: 'klaro',

    // You can also set a custom expiration time for the Klaro cookie.
    // By default, it will expire after 120 days.
    cookieExpiresAfterDays: 365,

    // You can customize the name of the cookie that Klaro will use to
    // store user consent. If undefined, Klaro will use 'klaro'.

    // Put a link to your privacy policy here (relative or absolute).
    privacyPolicy: '/Datenschutz',

    // Defines the default state for applications (true=enabled by default).
    default: false,

    // If "mustConsent" is set to true, Klaro will directly display the consent
    // manager modal and not allow the user to close it before having actively
    // consented or declines the use of third-party apps.
    mustConsent: true,

    // You can define the UI language directly here. If undefined, Klaro will
    // use the value given in the global "lang" variable. If that does
    // not exist, it will use the value given in the "lang" attribute of your
    // HTML tag. If that also doesn't exist, it will use 'en'.
    //lang: 'en',

    // You can overwrite existing translations and add translations for your
    // app descriptions and purposes. See `src/translations.yml` for a full
    // list of translations that can be overwritten:
    // https://github.com/DPKit/klaro/blob/master/src/translations.yml

    // Example config that shows how to overwrite translations:
    // https://github.com/DPKit/klaro/blob/master/src/configs/i18n.js
    translations: {
        // If you erase the "consentModal" translations, Klaro will use the
        // defaults as defined in translations.yml
        de: {
            consentModal: {
                title:'Cookies die wir setzen!',
                description:
                    'Seit dem EuGH Urteil vom Dienstag den 01.10.2019 sind wir verpflichtet von unseren Besuchern eine "AKTIVE" Cookie abfrage zu stellen. Leider sind Urteile nicht immer Userfreundlich auch wenn wir das Urteil als einen richtigen Schritt sehen.',
            },
            inlineTracker: {
                description: 'Mautic',
            },
            externalTracker: {
                description: 'Facebook + AdWords Retargeting',
            },
            adsense: {
                description: 'Anzeigen von Werbeanzeigen (Beispiel)',
            },
            matomo: {
                description: 'Sammeln von Besucherstatistiken, nur interner Gebrauch',
            },
            camera: {
                description: 'Eine �berwachungskamera (nur ein Beispiel zu IMG-Tags)',
            },
            cloudflare: {
                description: 'Schutz gegen DDoS-Angriffe',
            },
            intercom: {
                description: 'Zammad',
            },
            mouseflow: {
                description: 'Echtzeit-Benutzeranalyse (nur ein Beispiel)',
            },
            googleFonts: {
                description: 'Web-Schriftarten von Google gehostet',
            },
            purposes: {
                analytics: 'Besucher-Statistiken',
                security: 'Sicherheit',
                livechat: 'Live Chat',
                advertising: 'Anzeigen von Werbung',
                styling: 'Styling',
            },
        },
        en: {
            consentModal: {
                description:
                    'Here you can see and customize the information that we collect about you. Entries marked as "Example" are just for demonstration purposes and are not really used on this website.',
            },
            inlineTracker: {
                description: 'Example of an inline tracking script',
            },
            externalTracker: {
                description: 'Example of an external tracking script',
            },
            adsense: {
                description: 'Displaying of advertisements (just an example)',
            },
            matomo: {
                description: 'Collecting of visitor statistics',
            },
            camera: {
                description: 'A surveillance camera (just a silly example for an IMG tag)',
            },
            cloudflare: {
                description: 'Protection against DDoS attacks',
            },
            intercom: {
                description: 'Chat widget & collecting of visitor statistics (just an example)',
            },
            mouseflow: {
                description: 'Real-Time user analytics (just an example)',
            },
            googleFonts: {
                description: 'Web fonts hosted by Google',
            },
            purposes: {
                analytics: 'Analytics',
                security: 'Security',
                livechat: 'Livechat',
                advertising: 'Advertising',
                styling: 'Styling',
            },
        },
        tr: {
            consentModal: {
                description:
                    'Hakkınızda topladığımız bilgileri burada görebilir ve özelleştirebilirsiniz. "Örnek" olarak belirtilenler sadece gösterim amaçlıdır ve gerçekte bu site için kullanılmazlar.',
            },
            inlineTracker: {
                description: 'Satıriçi takip kodu için bir örnek',
            },
            externalTracker: {
                description: 'Dışarıdan çağırılan bir takip kodu için örnek',
            },
            adsense: {
                description: 'Reklam görüntüleme (sadece örnek)',
            },
            matomo: {
                description: 'Ziyaretçi istatistiklerini toplama',
            },
            camera: {
                description: 'İzleme kamerası (IMG tag icin saçma bir örnek daha)',
            },
            cloudflare: {
                description: 'DDoS saldırılarına karşı koruma',
            },
            intercom: {
                description: 'Sohbet aracı ve ziyaretçi istatistiklerini toplama (sadece bir örnek)',
            },
            mouseflow: {
                description: 'Gerçek zamanlı kullanıcı istatistiği (sadece bir örnek)',
            },
            googleFonts: {
                description: 'Google tarafından barındırılan Web Yazıtipi bilgileri',
            },
            purposes: {
                analytics: 'Analitik',
                security: 'Güvenlik',
                livechat: 'Canlı Sohbet',
                advertising: 'Reklam',
                styling: 'Biçimlendirme',
            },
        },
    },

    // This is a list of third-party apps that Klaro will manage for you.
    apps: [
        {
            name : 'onlineshop',
            default: true,
            title : 'Shopsystem',
            purposes : ['security'],
            cookies : ['JTLSHOP','language'],
            callback : function(consent, app){
            },
            required: true,
            optOut: true,
            onlyOnce: false,
        },
        {
            // Each app should have a unique (and short) name.
            name: 'matomo',

            // If "default" is set to true, the app will be enabled by default
            // Overwrites global "default" setting.
            // We recommend leaving this to "false" for apps that collect
            // personal information.
            default: false,

            // The title of you app as listed in the consent modal.
            title: 'Matomo / Piwik',

            // The purpose(s) of this app. Will be listed on the consent notice.
            // Do not forget to add translations for all purposes you list here.
            purposes: ['analytics'],

            // A list of regex expressions or strings giving the names of
            // cookies set by this app. If the user withdraws consent for a
            // given app, Klaro will then automatically delete all matching
            // cookies.
            cookies: [
                // you can also explicitly provide a path and a domain for
                // a given cookie. This is necessary if you have apps that
                // set cookies for a path that is not "/" or a domain that
                // is not the current domain. If you do not set these values
                // properly, the cookie can't be deleted by Klaro
                // (there is no way to access the path or domain of a cookie in JS)
                [/^_pk_.*$/, '/', 'analyse.lichte-kraft.eu'], //for the production version
                'piwik_ignore',
            ],

            // An optional callback function that will be called each time
            // the consent state for the app changes (true=consented). Passes
            // the `app` config as the second parameter as well.
            callback: function(consent, app) {
                // This is an example callback function.
                console.log(
                    'User consent for app ' + app.name + ': consent=' + consent
                );
            },

            // If "required" is set to true, Klaro will not allow this app to
            // be disabled by the user.
            required: false,

            // If "optOut" is set to true, Klaro will load this app even before
            // the user gave explicit consent.
            // We recommend always leaving this "false".
            optOut: false,

            // If "onlyOnce" is set to true, the app will only be executed
            // once regardless how often the user toggles it on and off.
            onlyOnce: false,
        },

        // The apps will appear in the modal in the same order as defined here.
        {
            name: 'mautic',
            default: false,
            title: 'Mautic (Newsletter)',
            purposes: ['analytics'],
            cookies: ['inline-tracker'],
            optOut: false,
            onlyOnce: false,
        },
        {
            name : 'google-analytics',
            default: false,
            title : 'Google Analytics',
            purposes : ['statistics'],
            cookies : [/^ga/i],
            callback : function(consent, app){
            },
            optOut: false,
            onlyOnce: false,
        },
        {
            name: 'adwords-facebookpixel',
            default: false,
            title: 'Google Adwords + Facebook',
            purposes: ['analytics'],
            cookies: ['external-tracker'],
            optOut: false,
            onlyOnce: false,
        },
        {
            name: 'payment',
            default: false,
            title: 'Amazon Payment',
            purposes: ['analytics','security'],
            cookies: ['amazon-pay-connectedAuth','apay-session-set','amazon-pay-abtesting-new-widgets','amazon-pay-abtesting-apa-migration','lpa_redirect'],
            optOut: false,
            onlyOnce: false,
        },
    ],
};

So hier mal ein paar Codeschnippsel zu den sogenannten APPS!!

JTL- Shop
JavaScript:
        {
            name : 'onlineshop',
            default: true,
            title : 'Shopsystem',
            purposes : ['security'],
            cookies : ['JTLSHOP','language'],
            callback : function(consent, app){
            },
            required: true,
            optOut: true,
            onlyOnce: false,
        },

Google Analytics
JavaScript:
        {
            name : 'google-analytics',
            default: false,
            title : 'Google Analytics',
            purposes : ['statistics'],
            cookies : [/^ga/i],
            callback : function(consent, app){
            },
            optOut: false,
            onlyOnce: false,
        },
Ist das nur bei mir so, oder wird der "Regler" "Alle aktivieren" immer mit aktiviert, sobald man nur einen "Regler" aktiviert? Hab das gerade mal auf deiner Seite ausprobiert.
 

WAWI-USER321

Sehr aktives Mitglied
26. Dezember 2013
250
34
Beim herumspielen mit dem Ding ist mir eine Idee gekommen die eigentlich ok sein dürfte, allerdings fehlt mir das Javascript Verständnis, um das ganze um zu setzten.
Zumindest haben 2 Stunden "trial and error" leider nur Error gebracht.

Die Idee:
Verwendet man den kleinen Banner unten in der Ecke mit einer Config, bei der nur das notwendigste angehakt ist, ist das ja so weit ok.
Dazu sollte es anstatt dem Decline Button einen "alle Cookies akzeptieren" geben.
Der Besucher hätte nun also die Möglichkeit über z.b. einen Button "cookies auswählen" oder "Zustimmung konfigurieren" jeden Cookie einzeln auszuwählen.
Anderseits hätte er über den Button "alle Cookies akzeptieren" die Möglichkeit alle zu akzeptieren.
Da keine Besucher Lust hat die Dinger einzeln zu konfigurieren, dürften 90% der Besucher "alle Cookies akzeptieren" klicken.
Da der Besucher trotzdem in einem Konfigurator in dem nicht alles angehakt ist alles einzeln wählen kann müsste das ganze auch rechtlich klar gehen.....

Auf die Art belästigt man auch nicht jeden Besucher gleich mit dem kompletten Konfigurator, der allein für einen nichts Aanenden Besucher schon eine Abschreckung darstellt.

Wenn jemand das umsetzt, kann ich auch was dafür bezahlen.

Ich habe mal ein Bild gemacht wie ich mir das in etwa gedacht habe.
 

Anhänge

  • Bildschirmfoto vom 2019-10-06 11-09-35.png
    Bildschirmfoto vom 2019-10-06 11-09-35.png
    11 KB · Aufrufe: 125
Zuletzt bearbeitet:

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.271
135
Küps
Ist das nur bei mir so, oder wird der "Regler" "Alle aktivieren" immer mit aktiviert, sobald man nur einen "Regler" aktiviert? Hab das gerade mal auf deiner Seite ausprobiert.
Ja habe ich auch schon bemerkt.

Stört mich aber nicht weil ja nicht alle aktiv sind.

Es ist halt so das dieser Button keinen 3te Eigenschaft hat. Daher wechselt dieser in aktiv, aber ohne die anderen zu aktivieren.

Beim herumspielen mit dem Ding ist mir eine Idee gekommen die eigentlich ok sein dürfte, allerdings fehlt mir das Javascript Verständnis, um das ganze um zu setzten.
Zumindest haben 2 Stunden "trial and error" leider nur Error gebracht.

Die Idee:
Verwendet man den kleinen Banner unten in der Ecke mit einer Config, bei der nur das notwendigste angehakt ist, ist das ja so weit ok.
Dazu sollte es anstatt dem Decline Button einen "alle Cookies akzeptieren" geben.
Der Besucher hätte nun also die Möglichkeit über z.b. einen Button "cookies auswählen" oder "Zustimmung konfigurieren" jeden Cookie einzeln auszuwählen.
Anderseits hätte er über den Button "alle Cookies akzeptieren" die Möglichkeit alle zu akzeptieren.
Da keine Besucher Lust hat die Dinger einzeln zu konfigurieren, dürften 90% der Besucher "alle Cookies akzeptieren" klicken.
Da der Besucher trotzdem in einem Konfigurator in dem nicht alles angehakt ist alles einzeln wählen kann müsste das ganze auch rechtlich klar gehen.....

Wenn jemand das umsetzt, kann ich auch was dafür bezahlen.
Aber genau das darf es doch nicht mehr geben, die User sollen das konfigurieren!
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Alles abwählen Button Pflicht ? - Rückfrage zu nervigen Cookie Banner Vorschriften User helfen Usern - Fragen zu JTL-Wawi 18
Neu Consent Manager ServicesRequiringConsent Ergebnis abrufen Technische Fragen zu Plugins und Templates 1
Neu Komische Migrationsdateien im Plugin Manager Plugins für JTL-Shop 2
Consent Manager Evo-Child Template - Bugs, Fehler und Co. Einrichtung JTL-Shop5 0
Consent Manager Einrichtung JTL-Shop5 3
Nach Domainumstellung Plugin Manager nicht mehr erreichbar Einrichtung JTL-Shop5 1
Consent-Manager ID ist das eine JTL Shop ID oder die Youtube API Id oder eine Drittanbieter ID? Einrichtung JTL-Shop5 0
Neu JTL Consent Manager JTL-Shop - Fehler und Bugs 0
Neu Allgemeine Fragen zum Auftrags-Import JTL-Ameise - Ideen, Lob und Kritik 7
Neu Version 1.5.45.1 zum Download Installation von JTL-Wawi 1
Neu Hilfe bei einem Arbeitsablauf zum Stücklistenartikel User helfen Usern - Fragen zu JTL-Wawi 1
Neu Lagerbewertung rückwirkend zum Stichtag - gibts eine funktionierende Lösung? User helfen Usern - Fragen zu JTL-Wawi 2
Neu ecoDMS Rechnungen von Clientsystemen zum ecoDMS Server bringen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Die Preisliste und List & Label zum Verzweifeln Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Option zum Ausblenden beim Ticket anlegen Servicedesk (Beta) 2
Neu Label zum Auftrag mit bestimmten Artikel wenn vorhanden. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Beantwortet Mehrere Accounts an Shop binden zum Pluginkauf über den Store Allgemeine Fragen zu JTL-Shop 2
Neu Keine Verbindung zum Shop JTL-Shop - Fehler und Bugs 12
Neu Frage zum Email-Absender und Empfänger - Einstellung in der WaWi? User helfen Usern - Fragen zu JTL-Wawi 4
FBA Warenbestand wird zum Lagerbestand im Stammlager hinzugerechnet und für den Eigenversand freigegeben. JTL-Wawi 1.6 2
Neu QR-Code zum Produkt im Shop als Artikeletikett User helfen Usern 4
Neu Anhänge zum Auftrag bzw. zur Rechnung an die Ausgangsmail hängen User helfen Usern - Fragen zu JTL-Wawi 2
Gelöst Option "Stückzahl teilbar" wird bei jedem Öffnen zum Bearbeiten wieder auf 0 gesetzt JTL-POS - Fehler und Bugs 2
Neu Wie lautet der SQL Befehl zum löschen der Kommentare? User helfen Usern - Fragen zu JTL-Wawi 4

Ähnliche Themen