Ihre persönliche
Pergola-Empfehlung
in 5 Schritten

Beantworten Sie ein paar Fragen
– unser Experte meldet sich mit einer passenden Empfehlung.

Beratung starten

Terrasse, Balkon oder Garten – wir finden das passende Modell.

Mehr über unsere Modelle erfahren»
(function () { var COOKIE_NAME = 'plenty-shop-cookie'; var tallyLoaded = false; var consentWatcher = null; function getConsentCookie() { var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + COOKIE_NAME + '=([^;]*)')); if (!match) return null; try { return JSON.parse(decodeURIComponent(match[1])); } catch (e) { return null; } } function setConsentCookie(consent) { // Host-only Cookie (Domain NICHT setzen), 1 Jahr gültig var value = encodeURIComponent(JSON.stringify(consent)); var maxAge = 60 * 60 * 24 * 365; var secure = (location.protocol === 'https:') ? '; Secure' : ''; document.cookie = COOKIE_NAME + '=' + value + '; Max-Age=' + maxAge + '; Path=/; SameSite=Lax' + secure; } function hasMarketingConsent(consent) { if (!consent || !consent.marketing) return false; var group = consent.marketing; for (var key in group) { if (Object.prototype.hasOwnProperty.call(group, key) && group[key]) { return true; } } return false; } // Consent-Cookies zurücksetzen und Seite neu laden function resetConsentAndReload() { var names = [ 'plenty-shop-cookie', 'consentActiveStatus', 'consent' ]; for (var i = 0; i < names.length; i++) { document.cookie = names[i] + '=; Max-Age=0; path=/'; } location.reload(); } // Marketing-Consent direkt setzen (ohne Refresh), damit "Aktivieren" sofort nachladen kann function grantMarketingForTally() { var consent = getConsentCookie() || {}; if (!consent.marketing) consent.marketing = {}; consent.marketing.tally = true; // minimaler Schalter nur für dieses Embed setConsentCookie(consent); } // Button im Placeholder function attachCookieButtonHandler() { var btn = document.getElementById('tally-cookie-settings'); if (!btn) return; btn.addEventListener('click', function (e) { e.preventDefault(); resetConsentAndReload(); // entfernt alle Cookies und lädt die Seite neu }); } // Button "Aktivieren": Consent setzen + Tally nachladen ohne Refresh function attachActivateButtonHandler() { var btn = document.getElementById('tally-activate'); if (!btn) return; btn.addEventListener('click', function (e) { e.preventDefault(); grantMarketingForTally(); loadTallyIfAllowed(); // ohne Refresh if (consentWatcher) { clearInterval(consentWatcher); consentWatcher = null; } }); } // Tally nur laden, wenn Marketing im plenty-shop-cookie erlaubt ist function loadTallyIfAllowed() { if (tallyLoaded) return; var consent = getConsentCookie(); if (!hasMarketingConsent(consent)) { console.log('Tally geblockt: kein Marketing-Consent im plenty-shop-cookie.'); return; } tallyLoaded = true; // ab hier gilt: einmal geladen, nie wieder anfassen var d = document; var w = "https://tally.so/widgets/embed.js"; var v = function () { if (typeof Tally !== "undefined") { Tally.loadEmbeds(); } else { var iframes = d.querySelectorAll("iframe[data-tally-src]:not([src])"); for (var i = 0; i < iframes.length; i++) { iframes[i].src = iframes[i].dataset.tallySrc; } } var ph = d.getElementById('tally-consent-placeholder'); if (ph && ph.parentNode) ph.parentNode.removeChild(ph); }; if (typeof Tally !== "undefined") { v(); } else if (d.querySelector('script[src="' + w + '"]') == null) { var s = d.createElement("script"); s.src = w; s.onload = v; s.onerror = v; d.body.appendChild(s); } } // Watcher: prüft regelmäßig, ob Marketing nachträglich aktiviert wurde function startConsentWatcher() { if (consentWatcher || tallyLoaded) return; consentWatcher = window.setInterval(function () { var consent = getConsentCookie(); if (hasMarketingConsent(consent)) { loadTallyIfAllowed(); if (consentWatcher) { clearInterval(consentWatcher); consentWatcher = null; } } }, 2000); // alle 2 Sekunden nachschauen } function init() { // Nur auf der Pergola-Finder-Seite aktiv werden if (location.pathname.indexOf('pergola-finder') === -1) return; attachCookieButtonHandler(); attachActivateButtonHandler(); loadTallyIfAllowed(); // falls Marketing schon vorher erlaubt war startConsentWatcher(); // falls Marketing erst JETZT erlaubt wird } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init, { once: true }); } else { init(); } })();