Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:

Autor Thema: Cookies  (Gelesen 580 mal)

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Cookies
« am: 24. November 2019, 12:10:49 »
Hallo zusammen,

laut Protected Shops gibt es mal wieder etwas zum updaten bezüglich der Cookies.

https://www.protectedshops.de/infothek/whitepaper/google-analytics-google-retargeting-co-das-cookie-problem

In meinem Fall betreffen "Sondereinwilligungen" die YouTube Videos, Google Analytics und Facebook-PlugIn.
Irgendwo hatte ich mal gesehen, dass man bestimmte Cookies erlauben bzw. ablehnen kann.

Ein reines annehmen oder ablehnen aller Cookies ist nicht mehr erlaubt.

Ich habe jetzt erstmal die Erweiterung von Tomcraft eingebaut https://www.modified-shop.org/forum/index.php?topic=40480.0, was auch schon mal funktioniert. Allerdings wird dabei ja auch nur allgemein abgefragt, ob annehmen oder ablehnen.

Ich stehe hier gerade etwas auf dem Schlauch, was nun eigentlich wirklich unternommen werden muss  :-?

LG
Nils

Linkback: https://www.modified-shop.org/forum/index.php?topic=40590.0

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.166
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #1 am: 24. November 2019, 12:20:00 »
Hallo Nils,

einen kostenlosen Consentmanager, welcher das kann was anscheinend verlangt wird, findest du unter folgendem Link,
Re: ANLEITUNG: Cookie Banner mit Einwilligung für Google Analytics, Matomo & Facebook Antwort #96

und einen den der Händlerbund seinen Kunden zur Verfügung stellt, wird in folgendem Link behandelt.
Händlerbund Consentmanager einbinden

Gruss
Hanspeter

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #2 am: 24. November 2019, 16:15:04 »
Hallo HansPeter,

wie löst Ihr denn das zur Zeit?

So wie ich das sehe, muss wohl wieder Geld investiert werden, um eine gute und brauchbare Cookieverarbeitung zu gewährleisten.

Was ist denn mit diesem hier?
https://cookiefirst.com/de/

Ich wüsste jetzt nicht, wie man so etwas einbauen müsste.
Wäre da jemand zu bereit?

LG
Nils

Offline manne35

  • Fördermitglied
  • *****
  • Beiträge: 472
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #3 am: 25. November 2019, 12:23:42 »
Ich dachte protectedshops ist kostenpflichtig.  Warum lassen die sich nicht ein Modul programmieren und stellen es zur Verfügung ?

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #4 am: 25. November 2019, 12:46:51 »
Ich dachte protectedshops ist kostenpflichtig.  Warum lassen die sich nicht ein Modul programmieren und stellen es zur Verfügung ?

Gute Frage. Es werden zwar Module aufgelistet, allerdings ist keines für modified dabei.
Scheinen sich das da eher einfach zu machen und prüfen auch nichts, wie hier geschrieben:

Zitat
Wir bitten um Verständnis, das wir diese jedoch nicht explizit prüfen konnten ob diese alle Vorgaben erfüllen und hier daher keine explizite Empfehlung aussprechen können.

Ich frage mich allerdings, wie alle anderen Shopbetreiber das hier so umsetzen. Betrifft ja schließlich jeden von uns.

LG
Nils

Offline FräuleinGarn

  • Fördermitglied
  • *****
  • Beiträge: 3.320
    • Teile Beitrag
Re: Cookies
« Antwort #5 am: 25. November 2019, 12:56:14 »
Moin

Die meisten werden beim Händlerbund oder IT Recht Kanzlei sein und die bieten beide was an. Händlerbund wurde oben schon erwähnt und IT Recht Kanzlei arbeitet mit Prive.eu zusammen.

Ich persönlich warte aber lieber auf eine modified Team Lösung und wäre eher daran interessiert, dass das richtig funktioniert. Davon hätten wirklich alle was von, als diese ganzen unterschiedlichen Einzellösungen. Das vom Team genutzte Cookie Consent Tool von Osano hat doch auch sämtliche Einstellungen, wenn man sich das auf der Seite anguckt. https://www.osano.com/cookieconsent

Gruß Timm

EDIT:
Ob die Osano Variante mit dem weiß grünen Keks links unten die open source Variante ist kann ich aber nicht sagen. Vielleicht ist das eine kostenpflichtige Variante und deshalb hat das Team das nicht so umgesetzt.

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #6 am: 25. November 2019, 13:10:22 »
Also 100 Dollar / Monat für diesen Cookiemüll finde ich schon extrem happig. Da hat weder der Kunde, noch der Betreiber etwas von, abgesehen von rechtlichen Aspekten für den Kunden.

Wäre das jetzt einmalig 100 Dollar, wäre ich ja noch bereit das auszugeben.

Die kostenlose Variante ist leider nur bis zu 7500 Seiten / Monat, wo definitiv drüber liege.

Wenn das Team hier noch ein Modul bastelt, wo man einzelne Cookies steuern kann als Kunde, dann würde ich auch noch warten, bis es fertig ist.

Ich weiß nun allerdings auch nicht, zu wann dieser Consent-Manager eingebaut sein muss. Darüber stand da noch nichts von Protected Shops.

LG
Nils

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.166
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #7 am: 02. Dezember 2019, 14:15:56 »
Also ich habe jetzt mal den von Karl hier vorgeschlagenen kostenlosen Consentmanager in einen Testshop hier -> https://hpzeller.com/modified2042 eingebaut. Der Einbau ist einfach und, da nur Templatedateien geändert werden müssen, updatesicher. Wer das selbst in seinem Shop ausprobieren möchte kann das mit nachfolgender Anleitung tun.

Einbauanleitung für die Templates tpl_modified, tpl_modified_responsive sowie Karl's Bootstrap4:

In der Datei templates/dein_template/index.html folgenden Code

Code: XML  [Auswählen]
  {if $smarty.const.TRACKING_PIWIK_ACTIVE == 'true'}
    {piwik url=$smarty.const.TRACKING_PIWIK_LOCAL_PATH id=$smarty.const.TRACKING_PIWIK_ID goal=$smarty.const.TRACKING_PIWIK_GOAL}
  {/if}
  {if $smarty.const.TRACKING_GOOGLEANALYTICS_ACTIVE == 'true'}
    {googleanalytics account=$smarty.const.TRACKING_GOOGLEANALYTICS_ID}
  {/if}
 

mit diesem ersetzen.

Code: XML  [Auswählen]
  {if $smarty.const.TRACKING_PIWIK_ACTIVE == 'true'}
    {assign var="matomo" value={piwik url=$smarty.const.TRACKING_PIWIK_LOCAL_PATH id=$smarty.const.TRACKING_PIWIK_ID goal=$smarty.const.TRACKING_PIWIK_GOAL}}
    {$matomo|replace:'<script type="text/javascript">':'<script type="opt-in" data-type="application/javascript" data-name="matomo">'}
  {/if}
  {if $smarty.const.TRACKING_GOOGLEANALYTICS_ACTIVE == 'true'}
    {assign var="googleanal" value={googleanalytics account=$smarty.const.TRACKING_GOOGLEANALYTICS_ID}}
    {$googleanal|replace:'<script type="text/javascript">':'<script type="opt-in" data-type="application/javascript" data-name="googleAnalytics">'}
  {/if}
 

In der Datei templates/dein_template/javascript/general_bottom.js.php ganz am Ende folgenden Code einfügen

Code: PHP  [Auswählen]
<script>
//  var motamo = document.evaluate("//script[contains(., '_paq')]", document, null, XPathResult.ANY_TYPE, null );
//  var elemMotamo = motamo.iterateNext();
//  function setAttributes(el, attrs) {
//    for(var key in attrs) {
//      el.setAttribute(key, attrs[key]);
//    }
//  }
//  setAttributes(elemMotamo,{"type":"opt-in", "data-type":"application/javascript", "data-name":"matomo"});
//  $("script:contains('_paq')").attr({"type":"opt-in", "data-type":"application/javascript", "data-name":"matomo"});
$(function () {
//  $("li").remove(".cookie");
//  $('ul.justify-content-end').append('<li class="cookie nav-item"><a class="nav-link text-secondary" title="Cookiemanager" href="#" onclick="return klaro.show();"><span class="fa fa-cookie-bite fa-lg"></span></a></li>');  // fuer Bootstrap4 Template von Karl
  $('ul.topnavigation').append('<li class="cookie"><a href="#" onclick="return klaro.show();"><i class="fas fa-cookie"></i><span class="tn_nomobile">Cookiemanager</span></a></li>'); // fuer tpl_modified_responsive
//  $('ul.topnavigation').append('<li class="cookie"><a href="#" onclick="return klaro.show();">Cookiemanager</a></li>'); //  fuer tpl_modified
});

// 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: '<?php echo xtc_href_link(FILENAME_CONTENT, 'coID=2', $request_type); ?>',

    // 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: {
                description:
                    'Hier können Sie einsehen und anpassen, welche Information wir über Sie sammeln. Einträge die als "Beispiel" gekennzeichnet sind dienen lediglich zu Demonstrationszwecken und werden nicht wirklich verwendet.',
            },
            inlineTracker: {
                description: 'Beispiel für ein Inline-Tracking Skript',
            },
            externalTracker: {
                description: 'Beispiel für ein externes Tracking Skript',
            },
            adsense: {
                description: 'Anzeigen von Werbeanzeigen (Beispiel)',
            },
            matomo: {
                description: 'Sammeln von Besucherstatistiken',
            },
            googleAnalytics: {
                description: 'Sammeln von Besucherstatistiken',
            },                      
            camera: {
                description:
                    'Eine Überwachungskamera (nur ein Beispiel zu IMG-Tags)',
            },
            cloudflare: {
                description: 'Schutz gegen DDoS-Angriffe',
            },
            intercom: {
                description:
                    'Chat Widget & Sammeln von Besucherstatistiken (nur ein Beispiel)',
            },
            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',
            },
            googleAnalytics: {
                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:
                    'Hakkinizda topladigimiz bilgileri burada görebilir ve özellestirebilirsiniz. "Örnek" olarak belirtilenler sadece gösterim amaçlidir ve gerçekte bu site için kullanilmazlar.',
            },
            inlineTracker: {
                description: 'Satiriçi takip kodu için bir örnek',
            },
            externalTracker: {
                description: 'Disaridan çagirilan bir takip kodu için örnek',
            },
            adsense: {
                description: 'Reklam görüntüleme (sadece örnek)',
            },
            matomo: {
                description: 'Ziyaretçi istatistiklerini toplama',
            },
            googleAnalytics: {
                description: 'Ziyaretçi istatistiklerini toplama',
            },                      
            camera: {
                description:
                    'Izleme kamerasi (IMG tag icin saçma bir örnek daha)',
            },
            cloudflare: {
                description: 'DDoS saldirilarina karsi koruma',
            },
            intercom: {
                description:
                    'Sohbet araci ve ziyaretçi istatistiklerini toplama (sadece bir örnek)',
            },
            mouseflow: {
                description:
                    'Gerçek zamanli kullanici istatistigi (sadece bir örnek)',
            },
            googleFonts: {
                description:
                    'Google tarafindan barindirilan Web Yazitipi bilgileri',
            },
            purposes: {
                analytics: 'Analitik',
                security: 'Güvenlik',
                livechat: 'Canli Sohbet',
                advertising: 'Reklam',
                styling: 'Biçimlendirme',
            },
        },
    },

    // This is a list of third-party apps that Klaro will manage for you.
    apps: [
        {
            // 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_.*$/, '/', 'klaro.kiprotect.com'], //for the production version
                // [/^_pk_.*$/, '/', 'localhost'], //for the local version
                [/^_pk_.*$/, '/'],
                '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: true,
        },
//        {
//            name : 'googleAnalytics',
//            default: false,
//            title : 'Google Analytics',
//            purposes: ['analytics'],
//            cookies : [/^ga/i],
//            callback : function(consent, app){
//                //this is an example callback function...
//            },
//        },        

        // The apps will appear in the modal in the same order as defined here.
//        {
//            name: 'inlineTracker',
//            title: 'Inline Tracker',
//            purposes: ['analytics'],
//            cookies: ['inline-tracker'],
//            optOut: false,
//        },
//        {
//            name: 'externalTracker',
//            title: 'External Tracker',
//            purposes: ['analytics', 'security'],
//            cookies: ['external-tracker'],
//        },
//        {
//            name: 'intercom',
//            title: 'Intercom',
//            purposes: ['livechat'],
//        },
        {
            name: 'mouseflow',
            title: 'Mouseflow',
            purposes: ['analytics'],
        },
        {
            name: 'adsense',
            title: 'Google AdSense',
            purposes: ['advertising'],
        },
        {
            name: 'camera',
            title: 'Surveillance Camera',
            purposes: ['security'],
        },
        {
            name: 'googleFonts',
            title: 'Google Fonts',
            purposes: ['styling'],
        },
        {
            name: 'cloudflare',
            title: 'Cloudflare',
            purposes: ['security'],
            required: true,
        },
    ],
};
</script>
<script defer type="application/javascript" src="<?php echo DIR_WS_BASE . DIR_TMPL_JS ?>klaro.js"></script>
 

In den Ordner templates/dein_template/javascript/ das klaro.js aus dem angehängten klaro.zip hochladen.

Infos zu Konfiguration etc. findet man hier -> https://klaro.kiprotect.com

Gruss
Hanspeter

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #8 am: 02. Dezember 2019, 18:47:48 »
Hallo Hanspeter,

das sieht ja schon gar nicht schlecht aus.

Da hätte ich allerdings jetzt einige Fragen:

  • Verstehe ich nicht wirklich, wie ich YouTube, Facebook etc. zusätzlich einbauen soll.
  • Ist dort nicht wirklich ersichtlich, welche Cookies unbedingt benötigt werden, die eingeschaltet bleiben müssen und andere Cookies, die nicht unbedingt benötigt werden, die aber das Betrachten der Webseite beeinträchtigen könnten.
  • Habe ich Probleme mit den Umlauten, selbst wenn ich diese mit "&auml;" einbaue.

LG
Nils

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.166
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #9 am: 02. Dezember 2019, 21:49:24 »
Hallo Nils,

zu 3, das liegt wahrscheinlich daran, dass dein Shop mit Charset "iso-8859-15" kodiert ist, die Dateien aber UTF-8 kodiert sind. Tipp, zu ANSI konvertieren, oder besser den Shop zu UTF-8 konvertieren.
In JavaScript kann man HTML-Entities z.B. so "&auml;" nicht einsetzen.

Gruss
Hanspeter

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #10 am: 02. Dezember 2019, 22:45:13 »
Hallo Nils,

zu 3, das liegt wahrscheinlich daran, dass dein Shop mit Charset "iso-8859-15" kodiert ist, die Dateien aber UTF-8 kodiert sind. Tipp, zu ANSI konvertieren, oder besser den Shop zu UTF-8 konvertieren.
In JavaScript kann man HTML-Entities z.B. so "&auml;" nicht einsetzen.

Gruss
Hanspeter

Hallo Hanspeter,

also entweder suche ich falsch oder ich finde nichts passendes um den Shop auf UTF8 zu konvertieren.
Gibt es dafür ein Script oder wie kann man das lösen?

LG
Nils

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.166
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #11 am: 03. Dezember 2019, 00:36:59 »
Hallo Nils,

lies dazu mal diesen Thread hier -> update der DB auf UTF-8 für Shop 2.0 suche Anleitung durch.

Gruss
Hanspeter

Offline fishnet

  • Fördermitglied
  • *****
  • Beiträge: 4.725
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #12 am: 03. Dezember 2019, 16:50:17 »
Also 100 Dollar / Monat für diesen Cookiemüll finde ich schon extrem happig. Da hat weder der Kunde, noch der Betreiber etwas von, abgesehen von rechtlichen Aspekten für den Kunden.

Wäre das jetzt einmalig 100 Dollar, wäre ich ja noch bereit das auszugeben.

IT Recht Kanzlei inklusive deren kostenloses Cookieangebot gibts ab 9,90 im Monat  ;-)

Offline Onlineshopper

  • Viel Schreiber
  • *****
  • Beiträge: 548
  • Geschlecht: Männlich
    • Teile Beitrag
Re: Cookies
« Antwort #13 am: 03. Dezember 2019, 19:04:29 »
Das hilft mir zur Zeit leider auch nicht weiter. Habe gerade erst wieder Protected Shops verlängert.

Offline Viol

  • Fördermitglied
  • *****
  • Beiträge: 1.484
    • Teile Beitrag
Re: Cookies
« Antwort #14 am: 04. Dezember 2019, 14:38:49 »
@onlineshopper:
bei Dir sind jetzt 2 Cookiebanner aktiv...

600x250

Teile per facebook Teile per linkedin Teile per twitter