From 9926ad4409cb12179a3f17dea470de3b9183afc9 Mon Sep 17 00:00:00 2001 From: reslear Date: Wed, 4 Sep 2024 06:56:14 +0300 Subject: [PATCH] feat(matomo): support custom tracker urls (#236) Co-authored-by: Harlan Wilton --- .../scripts/analytics/matomo-analytics.md | 17 ++++++++++++++++- src/runtime/registry/matomo-analytics.ts | 15 ++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/docs/content/scripts/analytics/matomo-analytics.md b/docs/content/scripts/analytics/matomo-analytics.md index 8563e61a..3a10a8c6 100644 --- a/docs/content/scripts/analytics/matomo-analytics.md +++ b/docs/content/scripts/analytics/matomo-analytics.md @@ -83,6 +83,19 @@ const matomoAnalytics = useScriptMatomoAnalytics({ }) ``` +### Using Matomo Whitelabel + +For Matomo Whitelabel, set trackerUrl and scriptInput.src to customize tracking. + +```ts +const matomoAnalytics = useScriptMatomoAnalytics({ + trackerUrl: 'https://c.staging.cookie3.co/lake', + scriptInput: { + src: 'https://cdn.cookie3.co/scripts/analytics/latest/cookie3.analytics.min.js', + }, +}) +``` + Please follow the [Registry Scripts](/docs/guides/registry-scripts) guide to learn more about advanced usage. ### MatomoAnalyticsApi @@ -100,10 +113,12 @@ You must provide the options when setting up the script for the first time. ```ts // matomoUrl and site are required export const MatomoAnalyticsOptions = object({ - matomoUrl: string(), + matomoUrl: string(), siteId: string(), + trackerUrl: optional(string()), trackPageView: optional(boolean()), enableLinkTracking: optional(boolean()), + disableCookies: optional(boolean()), }) ``` diff --git a/src/runtime/registry/matomo-analytics.ts b/src/runtime/registry/matomo-analytics.ts index a558f766..bb37695a 100644 --- a/src/runtime/registry/matomo-analytics.ts +++ b/src/runtime/registry/matomo-analytics.ts @@ -4,10 +4,12 @@ import { boolean, object, optional, string } from '#nuxt-scripts-validator' import type { RegistryScriptInput } from '#nuxt-scripts' export const MatomoAnalyticsOptions = object({ - matomoUrl: string(), // site is required + matomoUrl: optional(string()), siteId: string(), + trackerUrl: optional(string()), trackPageView: optional(boolean()), enableLinkTracking: optional(boolean()), + disableCookies: optional(boolean()), }) export type MatomoAnalyticsInput = RegistryScriptInput @@ -23,7 +25,7 @@ declare global { export function useScriptMatomoAnalytics(_options?: MatomoAnalyticsInput) { return useRegistryScript('matomoAnalytics', options => ({ scriptInput: { - src: withBase(`/matomo.js`, withHttps(options?.matomoUrl)), + src: withBase(`/matomo.js`, withHttps(options?.matomoUrl || '')), crossorigin: false, }, schema: import.meta.dev ? MatomoAnalyticsOptions : undefined, @@ -48,7 +50,14 @@ export function useScriptMatomoAnalytics(_options? if (options?.enableLinkTracking) { _paq.push(['enableLinkTracking']) } - _paq.push(['setTrackerUrl', withBase(`/matomo.php`, withHttps(options?.matomoUrl))]) + + if (options?.disableCookies) { + _paq.push(['disableCookies']) + } + + if (options?.trackerUrl || options?.matomoUrl) { + _paq.push(['setTrackerUrl', options?.trackerUrl ? withHttps(options.trackerUrl) : withBase(`/matomo.php`, withHttps(options?.matomoUrl || ''))]) + } _paq.push(['setSiteId', options?.siteId || '1']) }, }), _options)