-
-
Notifications
You must be signed in to change notification settings - Fork 26
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Usage in dlh_googlemap
#17
Comments
Hallo @githuppi, wie genau findet hier die Initialisierung der Map statt? if(cookiebar.issetCookie(cookieId)){
// Initialisierung
} Grundsätzlich wollen wir mit unseren JS-Methoden so gut wie alles Kompatibel machen können. Sollte hier noch etwas benötigt werden, würde wir versuchen dies nachzureichen. Geplant ist auf jedenfall, dass wir eine weitere Methode bereitstellen, welche quasi eine Callback-Methode triggert um Skripte erst zu initialisieren, wenn die entsprechenden Cookies akzeptiert wurden.
Was genau für Cookies sind das? Von Google oder verwendet die Erweiterung Cookies? |
Habe gerade mal rein geschaut. Schau mal ob du diese Zeilen entsprechend anpassen kannst. |
@doishub besten Dank für die schnelle Rückmeldung ich schaue mir das an. |
Prinzipiell müsste der Cookie von der Erweiterung dlh_googlemap gesetzt werden: Ist das mittels Befehl über eigene Scripte möglich? |
Wie genau hast du die Abfrage integriert / versucht auf den Cookie zu prüfen? if(cookiebar.issetCookie(cookieId)){
if(window.addEvent) {
window.addEvent('domready', function() {
gmap<?= $this->map['id']; ?>_initialize();
});
} else if(typeof jQuery == "function") {
jQuery(document).ready(function(){
gmap<?= $this->map['id']; ?>_initialize();
});
} else {
window.setTimeout("gmap<?= $this->map['id']; ?>_initialize()", 500);
}
} Ich denke du wirst es bereits geändert haben aber zur Sicherheit, Über eigene Skripte könnte man die Initialisierung abbilden, jedoch scheint die Erweiterung die Karte mittels Das Skript könnte in etwa so aussehen: if (typeof meineNeueFunktion === "function") {
meineNeueFunktion();
} Anpassungen im Template: function meineNeueFunktion(){
if(window.addEvent) {
window.addEvent('domready', function() {
gmap<?= $this->map['id']; ?>_initialize();
});
} else if(typeof jQuery == "function") {
jQuery(document).ready(function(){
gmap<?= $this->map['id']; ?>_initialize();
});
} else {
window.setTimeout("gmap<?= $this->map['id']; ?>_initialize()", 500);
}
} Grundsätzlich soll dieses Verhalten zukünftig die oben erwähnte Methode abbilden, aber vielleicht hilft es bis ich diese implementiert habe. Code ist ungetestet ;) |
Okay ich habe das so in das Template dlh_googlemap gesetzt. Und ja, es funktioniert. Ist der Cookie gesetzt wird nach einem neuen Laden der Seite die Karte angezeigt. Besteht die Möglichkeit, dass der Aufruf der Karte direkt nach der Bestätigung klappt? |
Super, ja die Möglichkeit möchte ich mit der oben genannten Methode realisieren. So wird der Aufruf / die Initialisierung an die Methode geknüpft und automatisch ohne Reload geladen/ausgeführt. Ich schaue mal ob ich noch etwas Zeit finde um die Methode im Laufe der Woche nachzureichen. |
Die Methode steht nun ab Version In deinem Fall müsste die Initialisierung in etwa so aussehen: -if(cookiebar.issetCookie(cookieId)){
- if(window.addEvent) {
- window.addEvent('domready', function() {
- gmap<?= $this->map['id']; ?>_initialize();
- });
- } else if(typeof jQuery == "function") {
- jQuery(document).ready(function(){
- gmap<?= $this->map['id']; ?>_initialize();
- });
- } else {
- window.setTimeout("gmap<?= $this->map['id']; ?>_initialize()", 500);
- }
-} document.addEventListener("DOMContentLoaded", function() {
cookiebar.addModule(cookieIdOfGoogleMaps, gmap<?= $this->map['id']; ?>_initialize);
}); Bei Bedarf kannst du auch hier eine Nachricht + Button zum akzeptieren ausgeben lassen, siehe Dokumentation. Code ist ungetestet ;) |
In einer der dlh-Erweiterungen wird im Template die API über folgende Zeile im HEAD platziert: $GLOBALS['TL_JAVASCRIPT'][] = 'https://maps.googleapis.com/maps/api/js?key=' . $this->map['key'] . '&language=' . $this->map['language']; Diese müsste aus kommentiert und erst geladen werden, sofern der Cookie akzeptiert wurde: - $GLOBALS['TL_JAVASCRIPT'][] = 'https://maps.googleapis.com/maps/api/js?key=' . $this->map['key'] . '&language=' . $this->map['language']; Initialisieren der Karte mit Berücksichtigung der akzeptierten Services: - if(cookiebar.issetCookie(cookieId)){
- if(window.addEvent) {
- window.addEvent('domready', function() {
- gmap<?= $this->map['id']; ?>_initialize();
- });
- } else if(typeof jQuery == "function") {
- jQuery(document).ready(function(){
- gmap<?= $this->map['id']; ?>_initialize();
- });
- } else {
- window.setTimeout("gmap<?= $this->map['id']; ?>_initialize()", 500);
- }
- }
+ document.addEventListener("DOMContentLoaded", function() {
+ cookiebar.addModule(YOUR_GOOGLE_MAPS_COOKIE_TOKEN_ID, function(){
+
+ let script = document.createElement('script');
+ script.type = 'text/javascript';
+
+ script.onload = function() {
+ gmap<?= $this->map['id']; ?>_initialize();
+ };
+
+ script.src = 'https://maps.googleapis.com/maps/api/js?key=<?=$this->map['key']?>&language=<?=$this->map['language']?>';
+ document.head.append(script);
+ }, {
+ selector: '#dlh_googlemap_<?= $this->map['id']; ?>',
+ message: 'YOUT_TEXT',
+ button: {
+ show: true,
+ text: 'YOUR_BUTTON_TEXT',
+ type: 'button',
+ classes: 'my-btn'
+ }
+ });
+ }); Vielen Dank für den Hinweis @operatorone. 😊 |
Hey, danke für die hilfreichen Tipps, vor allem im letzten Beitrag. Allerdings funktioniert das scheinbar nicht mehr zu 100% mit Contao 4.13.35 und der Cookiebar Version 1.13.1 oder ich mache irgendetwas falsch. Die Karte an sich lädt und auch das Akzeptieren über die Cookiebar funktioniert. Aber es funktioniert nicht das nachträgliche Akzeptieren über den Button, wenn zuvor über die Cookiebar abgelehnt wurde. Es kommt folgende Fehlermeldung in der DevTool Console von Chrome:
Wenn ich dann in der JavaScript-Datei die Zeile 177 auskommentiere, dann funktioniert es (aber das kann ja nicht Sinn der Sache sein): Hat zufällig noch jemand einen Tipp? |
Was für einen CookieType verwendest du um mit der addModule-Methode zu arbeiten? Sollte es ein einfacher "Hinweis" sein, versuche diesen mal auf "Benutzerdefiniert (Skript)" umzustellen. |
Hi dishub, Ein Kollege hat mir geholfen, es lag daran, dass ich an der Stelle mit der ID bei YOUR_GOOGLE_MAPS_COOKIE_TOKEN_ID den Cookie-Token mit einfachen Anführungszeichen aus dem Backend eingetragen habe (also bspw. 'ga_map') und nicht die interne Contao ID, die man aus der Adresszeile des Browsers kopieren muss, in meinem Fall einfach eine 5. P.S. Ich hatte Iframe gewählt. Es geht aber beides, habe es ausprobiert. |
Hey, ich hatte es schon mal korrekt eingerichtet, nur bin ich gerade zu blöd, um zwei Karten mit der Erweiterung dlh_googlemap und Cookiebar anzeigen zu lassen. Es wird immer nur eine ausgegeben.
|
Mit den Templates hat das erstmal nichts zu tun, da du die |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Wie schaut es denn mit der Einbindung des Moduls dlh_googlemap für eine aktive Einwilligung aus? Mit ca. 37.000 Einbindungen ist das Modul vermutlich DIE Lösung für die Einbindung einer Google Karte in Contao. Ist in Zukunft etwas geplant um die Einwilligung über eure Cookiebar abzubilden?
Der Knackpunkt ist, dass die dlh_googlemap eigene Cookies zur Einwilligung mit sich bringt. Im Idealfall wäre es wünschenswert in der Cookiebar eine Auswahl treffen zu können, die sich auch auf diese Erweiterung auswirkt.
Habt ihr dazu was auf dem Zettel?
The text was updated successfully, but these errors were encountered: