fix: adjust datalayer behavior
This commit is contained in:
@@ -57,12 +57,12 @@ export default function RootLayout({
|
|||||||
data-cookieconsent="ignore"
|
data-cookieconsent="ignore"
|
||||||
src="/Static/dist/js/ng/main.js?1705409330990"
|
src="/Static/dist/js/ng/main.js?1705409330990"
|
||||||
/>
|
/>
|
||||||
<AdobeScript />
|
|
||||||
{/* <Script
|
{/* <Script
|
||||||
data-cookieconsent="ignore"
|
data-cookieconsent="ignore"
|
||||||
src="/Static/dist/js/main-ng.js?336b801d6b38eff10884"
|
src="/Static/dist/js/main-ng.js?336b801d6b38eff10884"
|
||||||
strategy="lazyOnload"
|
strategy="lazyOnload"
|
||||||
/> */}
|
/> */}
|
||||||
|
<AdobeScript />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<LangPopup lang={params.lang} />
|
<LangPopup lang={params.lang} />
|
||||||
|
|||||||
@@ -11,5 +11,13 @@ const scriptScrs = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function AdobeScript() {
|
export default function AdobeScript() {
|
||||||
return <Script src={scriptScrs[env.NODE_ENV]} />
|
return (
|
||||||
|
<>
|
||||||
|
<Script
|
||||||
|
strategy="beforeInteractive"
|
||||||
|
id="ensure-datalayer"
|
||||||
|
>{`window.datalayer = window.datalayer || {}`}</Script>
|
||||||
|
<Script src={scriptScrs[env.NODE_ENV]} />
|
||||||
|
</>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
TrackingProps,
|
TrackingProps,
|
||||||
} from "@/types/components/tracking"
|
} from "@/types/components/tracking"
|
||||||
import { usePathname, useSearchParams } from "next/navigation"
|
import { usePathname, useSearchParams } from "next/navigation"
|
||||||
import { useEffect, useState } from "react"
|
import { useEffect } from "react"
|
||||||
|
|
||||||
function createPageObject(trackingData: TrackingData) {
|
function createPageObject(trackingData: TrackingData) {
|
||||||
const [lang, ...segments] = trackingData.pathName
|
const [lang, ...segments] = trackingData.pathName
|
||||||
@@ -64,30 +64,22 @@ function createPageObject(trackingData: TrackingData) {
|
|||||||
export default function Tracking({ pageData }: TrackingProps) {
|
export default function Tracking({ pageData }: TrackingProps) {
|
||||||
const pathName = usePathname()
|
const pathName = usePathname()
|
||||||
const queryString = useSearchParams().toString()
|
const queryString = useSearchParams().toString()
|
||||||
const [datalayerExists, setDataLayerExists] = useState(
|
|
||||||
typeof window !== "undefined" && !!window.datalayer
|
|
||||||
)
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!datalayerExists) {
|
const trackingData = { ...pageData, pathName, queryString }
|
||||||
window.datalayer = {}
|
const pageObject = createPageObject(trackingData)
|
||||||
setDataLayerExists(true)
|
|
||||||
} else {
|
|
||||||
const trackingData = { ...pageData, pathName, queryString }
|
|
||||||
const pageObject = createPageObject(trackingData)
|
|
||||||
|
|
||||||
window.datalayer.page = pageObject
|
window.datalayer.page = pageObject
|
||||||
|
|
||||||
// NOTE: Is this irrelevant för drop 1?
|
// NOTE: Is this irrelevant för drop 1?
|
||||||
// var user_obj = {
|
// var user_obj = {
|
||||||
// loginstatus: "<if the user is logged in or not>",
|
// loginstatus: "<if the user is logged in or not>",
|
||||||
// memberid: "<unique meeting package membership id for the user>",
|
// memberid: "<unique meeting package membership id for the user>",
|
||||||
// memberlevel: "<member level of user>",
|
// memberlevel: "<member level of user>",
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// datalayer.user = user_obj;
|
// datalayer.user = user_obj;
|
||||||
}
|
}, [pathName, queryString, pageData])
|
||||||
}, [pathName, queryString, pageData, datalayerExists])
|
|
||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user