# Marketing/tracking scripts, gated per-site via sflg.marketing.* Site Settings (empty = disabled), # grouped as one COA per slot so the set stays a single movable unit. Notes: Cookiebot here is inert # until sys_template uid 1's hardcoded classic-template copy is removed (else duplicate banner/dataLayer); # GTM/Meta Pixel use type="text/plain" data-cookieconsent="marketing" so either Cookiebot instance can # block them pre-consent; noscript fallbacks can't be consent-gated (no JS there, accepted gap); each # child's stdWrap.replacement property is singular ("replacement", not "replacements" — TYPO3 silently # ignores the plural and leaves the token unsubstituted). page { headerData { 100 = COA 100 { 5 = TEXT 5 { stdWrap.replacement { 10 { search = ###COOKIEBOT_ID### replace = {$sflg.marketing.cookiebotId} } } value ( ) if.isTrue = {$sflg.marketing.cookiebotId} } 10 = TEXT 10 { stdWrap.replacement { 10 { search = ###GTM_CONTAINER_ID### replace = {$sflg.marketing.gtmContainerId} } } value ( ) if.isTrue = {$sflg.marketing.gtmContainerId} } 20 = TEXT 20 { stdWrap.replacement { 10 { search = ###FB_PIXEL_ID### replace = {$sflg.marketing.fbPixelId} } } value ( ) if.isTrue = {$sflg.marketing.fbPixelId} } } } footerData { 100 = COA 100 { 10 = TEXT 10 { stdWrap.replacement { 10 { search = ###GTM_CONTAINER_ID### replace = {$sflg.marketing.gtmContainerId} } } value ( ) if.isTrue = {$sflg.marketing.gtmContainerId} } } } }