diff --git a/.gitignore b/.gitignore index 39c38dfcd..615341701 100755 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,9 @@ products/**/*.json src/**/blogs.json src/**/feeds.json +# localized Medium feed images (regenerated at build by scripts/feed2json.js) +static/img/blog-feed/ + # playwright .playwright-storage.json .pw-user-data/ diff --git a/docusaurus-plugin-gtm/index.js b/docusaurus-plugin-gtm/index.js index afb8de86f..0bd1b0c3b 100644 --- a/docusaurus-plugin-gtm/index.js +++ b/docusaurus-plugin-gtm/index.js @@ -1,13 +1,50 @@ module.exports = function (context, options) { const isProd = process.env.NODE_ENV === "production"; + const storageKey = options.storageKey || "cookie-consent-preferences"; + const waitForUpdate = options.waitForUpdate || 500; + return { name: "docusaurus-plugin-gtm", injectHtmlTags() { if (!isProd) { return {}; } + + const consentDefault = ` +(function(){ + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + window.gtag = window.gtag || gtag; + 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:${waitForUpdate} + }); + gtag('set','ads_data_redaction',true); + try { + var c = JSON.parse(localStorage.getItem(${JSON.stringify(storageKey)})); + if (c && c.consentGiven) { + gtag('consent','update',{ + ad_storage: c.marketing?'granted':'denied', + ad_user_data: c.marketing?'granted':'denied', + ad_personalization: c.marketing?'granted':'denied', + analytics_storage: c.analytics?'granted':'denied', + functionality_storage: c.functional?'granted':'denied', + personalization_storage: c.functional?'granted':'denied' + }); + } + } catch (e) {} +})();`; + return { headTags: [ + // Consent Mode defaults must run before the GTM loader below. + { tagName: "script", innerHTML: consentDefault }, `