summaryrefslogtreecommitdiff
path: root/docs/_templates
diff options
context:
space:
mode:
authorYuriy Andamasov <yuriy@vyos.io>2026-05-07 18:52:45 +0300
committerGitHub <noreply@github.com>2026-05-07 18:52:45 +0300
commit2b18f0a0acf337c1672fbc1dffb5f393d1149325 (patch)
tree45af64df3c63f4194778863e4d9ee30a574acb3c /docs/_templates
parent4eaf1e11aabb09afc11b26b90ad0ab8c8aed5d58 (diff)
parent6f35bf561b330385bbb848f96c4ea84dc6089f5c (diff)
downloadvyos-documentation-2b18f0a0acf337c1672fbc1dffb5f393d1149325.tar.gz
vyos-documentation-2b18f0a0acf337c1672fbc1dffb5f393d1149325.zip
Merge pull request #1871 from vyos/feat/docs-cookiebot-gtm-consent
feat(docs): add Cookiebot CMP and GTM with Consent Mode v2
Diffstat (limited to 'docs/_templates')
-rw-r--r--docs/_templates/layout.html43
1 files changed, 42 insertions, 1 deletions
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
index 5736a26f..fce69b86 100644
--- a/docs/_templates/layout.html
+++ b/docs/_templates/layout.html
@@ -1,6 +1,39 @@
{% extends "!layout.html" %}
{%- set current_version = "1.5.x circinus" %}
{% block extrahead %}
+ {% if gtm_id and cookiebot_id %}
+ {# Cookiebot CMP — must load first so its auto-blocker can scan/block other tags #}
+ <script id="Cookiebot"
+ src="https://consent.cookiebot.com/uc.js"
+ data-cbid="{{ cookiebot_id }}"
+ data-blockingmode="auto"
+ type="text/javascript"></script>
+
+ {# Google Consent Mode v2 defaults — deny everything until Cookiebot fires the update #}
+ <script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){window.dataLayer.push(arguments);}
+ gtag('consent', 'default', {
+ 'ad_storage': 'denied',
+ 'ad_user_data': 'denied',
+ 'ad_personalization': 'denied',
+ 'analytics_storage': 'denied',
+ 'functionality_storage': 'denied',
+ 'personalization_storage': 'denied',
+ 'security_storage': 'granted',
+ 'wait_for_update': 500
+ });
+ gtag('set', 'ads_data_redaction', true);
+ </script>
+
+ {# Google Tag Manager #}
+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+ })(window,document,'script','dataLayer','{{ gtm_id }}');</script>
+ {% endif %}
+
<style>#vyos-header-iframe{position:fixed;top:0;left:0;right:0;z-index:999999999;width:100%;border:none}</style>
<style>#vyos-footer-iframe{width:100%;border:none}</style>
<iframe src='https://vyos.io/iframes/header' id='vyos-header-iframe'></iframe>
@@ -28,5 +61,13 @@
<script type="text/javascript" charset="utf8" src="{{ pathto("_static/js/codecopier.js", True) }}"></script>
<script type="text/javascript" charset="utf8" src="{{ pathto("_static/js/sidebar.js", True) }}"></script>
<script type="text/javascript" charset="utf8" src="{{ pathto("_static/js/footer.js", True) }}"></script>
- </script>
+{% endblock %}
+
+{% block body %}
+ {% if gtm_id and cookiebot_id %}
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ gtm_id }}"
+ height="0" width="0" style="display:none;visibility:hidden"
+ title="Google Tag Manager"></iframe></noscript>
+ {% endif %}
+ {{ super() }}
{% endblock %}