Neu Cookie Manager zum EuGH Urteil zum selbsteinbau

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.145
107
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.364
778
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
244
33
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
244
33
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: 195

bigloopfan

Sehr aktives Mitglied
20. Februar 2010
695
27
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.145
107
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
695
27
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.145
107
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
36
5
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.145
107
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
76
2
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
244
33
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: 124
Zuletzt bearbeitet:

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.145
107
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 Neue Plugins erscheinen nicht im Plugin-Manager Plugins für JTL-Shop 8
Neu JTL5.1.1 Weiße Seite im Plugin-Manager Allgemeine Fragen zu JTL-Shop 1
Beantwortet JTL-Shop 5: Solange Page Reload bis Consent Manager bestätigt wurde JTL-Shop - Fehler und Bugs 3
Neu Virtuelle Assistenz / E-Commerce Manager (m/w/d) im Kundenservice für Online-Versandhandel gesucht Dienstleistung, Jobs und Ähnliches 0
Neu Exporte-Manager öfter als 1x pro Stunden starten Betrieb / Pflege von JTL-Shop 0
Neu Automatischer Reload der Seite, wenn Consent-Manager aktiv ist Allgemeine Fragen zu JTL-Shop 1
Neu Consent Manager "neu starten" JTL-Shop - Ideen, Lob und Kritik 1
Neu suchen eCommerce Manager Dienstleistung, Jobs und Ähnliches 0
Beantwortet Aktualisierte Emails aus dem Kundestamm zum Auftrag automatisch übertragen. Wie? JTL-Workflows - Fehler und Bugs 2
Neu Keine Verbindung zum Lizenzserver möglich. Kein Datenabgleich mit dem Shop !! JTL-Wawi - Fehler und Bugs 18
Neu [DHL] Erstellen von Versandetiketten kommt zum Fehler - die Ausgewählte Abrechnungsnummer steht nicht zur Verfügung JTL-ShippingLabels - Fehler und Bugs 0
"Frage zum Artikel" Email wird nicht gesendet Upgrade JTL-Shop4 auf JTL-Shop5 1
Neu Plugin zum Ergänzen der ShopID PrestaShop-Connector 1
Neu Plötzlich Cache-Fehler und kein Zugang mehr zum Shop-Backend JTL-Shop - Fehler und Bugs 0
In Diskussion JTL2DATEV und OSS. Hat es jemand zum Laufen gebracht? User helfen Usern - Fragen zu JTL-Wawi 7
Beantwortet Zum eigenen Lagerbestand per Workflow setzen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Vater Kind Preise werden zum Teil einfach addiert? Gambio-Connector 0
Neu dot.liquid - Addieren zum Ergebnis einer Ganzzahlberechnung funktioniert nicht richtig JTL-Wawi - Fehler und Bugs 7
Verwiesen an Support Anfängerfrage zum Wareneingang und den Kommentaren / Hinweisen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Fragen zum Wizard Einrichtung JTL-Shop5 1

Ähnliche Themen