Kurz und praktisch: Einbindung, Consent-Abfrage und typische Snippets.
- Backend öffnen:
Consent Manager -> Domains -> Domain bearbeiten Automatische Frontend-Einbindungauf Aktiviert setzen- Speichern
Ergebnis: Der Consent Manager wird automatisch vor </head> eingebunden.
<?php
use FriendsOfRedaxo\ConsentManager\Frontend;
echo Frontend::getFragment(0, 0, 'ConsentManager/box_cssjs.php');<?php
use FriendsOfRedaxo\ConsentManager\Frontend;
?>
<style><?= Frontend::getCSS() ?></style>
<script<?= Frontend::getNonceAttribute() ?>>
<?= Frontend::getJS() ?>
</script>
<?= Frontend::getBox() ?><?php
use FriendsOfRedaxo\ConsentManager\Utility;
if (Utility::has_consent('google-analytics')) {
// Script/Markup nur bei erteiltem Consent ausgeben
}Wichtig: Eigene Skripte sollten warten, bis der Consent Manager initialisiert ist.
document.addEventListener('consent_manager-ready', function (e) {
if (!e.detail.initialized) {
console.warn('Consent Manager nicht bereit:', e.detail.reason);
return;
}
if (typeof consent_manager_hasconsent === 'function' && consent_manager_hasconsent('google-analytics')) {
console.log('GA darf geladen werden');
}
});Direkte Abfrage (wenn bereits sicher initialisiert):
if (typeof consent_manager_hasconsent === 'function' && consent_manager_hasconsent('google-analytics')) {
// Consent vorhanden
}document.addEventListener('consent_manager-saved', function (e) {
var consents = JSON.parse(e.detail);
// z. B. Tracking dynamisch starten/stoppen
});Standard (ohne Reload):
<a href="#" data-consent-action="settings">Cookie-Einstellungen</a>Variante mit Reload nach Speichern:
<a href="#" data-consent-action="settings,reload">Cookie-Einstellungen</a>Tipp: reload ist sinnvoll, wenn externe Skripte keinen sauberen Live-Reinit unterstützen und erst nach einem Seiten-Reload korrekt starten/stoppen.
consent_manager_hasconsent is not defined: Consent Manager ist noch nicht geladen oder gar nicht eingebunden.TypeError: Load failedbeim Speichern: meist URL-/Host-/HTTPS-Mismatch im Setup; aktuelle Version nutzt same-origin Logging.- Falsche Quotes in JS vermeiden: normale
'oder"verwenden, keine typografischen Anführungszeichen.
function hasAllConsents(serviceKeys) {
if (typeof consent_manager_hasconsent !== 'function') return false;
return serviceKeys.every(function (key) {
return consent_manager_hasconsent(key);
});
}
document.addEventListener('consent_manager-ready', function () {
if (hasAllConsents(['google-analytics', 'google-tag-manager'])) {
// Nur wenn beide erlaubt sind
}
});function loadScript(src) {
var script = document.createElement('script');
script.src = src;
script.async = true;
document.head.appendChild(script);
}
document.addEventListener('consent_manager-ready', function () {
if (typeof consent_manager_hasconsent === 'function' && consent_manager_hasconsent('google-analytics')) {
loadScript('https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX');
}
});document.addEventListener('consent_manager-saved', function () {
if (typeof consent_manager_hasconsent !== 'function') return;
if (consent_manager_hasconsent('google-analytics')) {
// Tracking aktivieren
} else {
// Tracking deaktivieren / keine neuen Events senden
}
});function onConsentManagerReady(callback) {
document.addEventListener('consent_manager-ready', function (e) {
if (e.detail.initialized) callback();
});
document.addEventListener('DOMContentLoaded', function () {
if (typeof consent_manager_hasconsent === 'function') {
callback();
}
});
}
onConsentManagerReady(function () {
// hier sicher mit consent_manager_hasconsent arbeiten
});