# Kompatibilität mit 3rd-Party Cookie-Plugins
In Version 4.18.0 wurde die Möglichkeit implementiert auch 3rd-Party Cookie-Manager-Plugins zu unterstützen.
Dabei wurde die Kommunikation mit dem Standard CookieConfigurator-Plugin in eine eigene Klasse ausgelagert, um diese anschließend überschreiben und die Funktion individualisieren zu können.
Für jedes 3rd-Party-Plugin muss dementsprechend ein eigener JS-Code geschrieben werden, um die Kompatibilität zu gewährleisten.
Im Anschluss folgt ein Beispiel eines solchen JS-Codes, welcher die Kompatibilität mit dem AcrisCookieConsentCS-Plugin (opens new window) herstellt.
# Beschreibung des Interface
class CookieConsentInterface {
// Diese Methode nach der Initialisierung des CookieConfigurator's aufgerufen
_onInit(): void
// Diese Methode wird aufgerufen, sobald sich die Cookie-Auswahl geändert hat
_onCookieConfigurationUpdated(updatedCookies: object): void
// Hier werden Events registriert (u.a. für _onInit und _onCookieConfigurationUpdated)
registerEvents(): void
// Diese Methode wird aufgerufen um zu prüfen, ob der CookieConfigurator initialisiert wird.
// Wenn die Methode `false` zurückliefert, wird die Methode `waitForInitialization` aufgerufen.
isInitialized(): bool
// Öffnen des CookieConfigurators
open(): void
// Die Methode dient dazu einen sogenannten Callback zu registrieren,
// damit unsere Cookie-Klasse auf die geänderte Cookie-Auswahl reagieren kann
onUpdate(callback: function): void
// Wie oben beschrieben, wird diese Methode aufgerufen, wenn der CookieConfigurator noch nicht initialisiert ist
// Technisch gesehen wird hier der `resolve`-Callback zwischengespeichert und in der `_onInit`-Methode aufgerufen.
waitForInitialization(): Promise
// Diese Methode sollte die Plugin-Instanz des CookieConfigurators zurückgeben
getPluginInstance(): object
// Diese Methode gibt standardmäßig `true` zurück gibt an, ob geprüft werden soll,
// ob der Standard Cookie-Configurator aktiviert ist oder nicht
shouldCheckIfCookieConsentIsEnabled(): bool
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Beispiel zum Überschreiben der einzelnen Methoden
Die Methoden, deren Namen mit _
beginnen, sollten nicht überschrieben werden, da deren Aufgaben elementar für die korrekte Funktionsweise der Cookie-Abfrage sind.
Dieser Code sollte über den regulären Weg implementiert (opens new window) werden.
window.Neti.StoreLocator.getCookieConsentInterfaceClass = function() {
const cookieConsentClass = window.Neti.StoreLocator.CookieConsentInterfaceClass;
cookieConsentClass.prototype.open = function() {
// Öffnen des eigenen Cookie-Konfigurators
}
return cookieConsentClass;
};
2
3
4
5
6
7
8
9
Wer sich mit dem originalen CookieConfigurator auseinandergesetzt hat, weiß, dass dieser standardmäßig kein Event feuert, sobald er initialisiert wurde. Dieses Problem haben wir gelöst, indem wir in der init
-Methode des Plugins einen after
-Hook platziert haben:
Dieses Event ist ebenfalls elementar für unsere Logik um zu wissen, wann dieses Plugin initialisiert wurde.
window.Neti.StoreLocator.PluginOverride('CookieConfiguration', {
init: {
after() {
document.$emitter.publish(PLUGIN_CONFIGURATION_INIT);
}
}
});
2
3
4
5
6
7
# Kompatibilitäts-Beispiel mit AcrisCookieConsentCS
Wie oben bereits angekündigt, folgt hier das Beispiel mit dem Plugin AcrisCookieConsentCS, welches die grundlegende Kompatibilität mit unserem Plugin gewährleistet.
window.Neti.StoreLocator.getCookieConsentInterfaceClass = function() {
const cookieConsentClass = window.Neti.StoreLocator.CookieConsentInterfaceClass;
cookieConsentClass.prototype.open = function() {
// Open the cookie manager
this.getPluginInstance().openOffCanvas();
// Ensure the cookie managers settings are opened
if (!document.querySelector('.cookie-consent-setting-container').classList.contains('show')) {
document.querySelector('#ccSettingButton').click();
}
}
// Add an after-hook to the init method of the AcrisCookieConsent plugin to publish the required init event
window.Neti.StoreLocator.PluginOverride('AcrisCookieConsent', {
init: {
after() {
document.$emitter.publish('Neti_CookieConfiguration_Init');
}
}
})
return cookieConsentClass;
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sollten Sie Fragen ober Probleme bei der Integration haben, können Sie sich jederzeit bei uns melden (opens new window).