-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DSFR] Ajouter matomo #6119
Comments
Pourquoi pas creuser l'approche server side pour éviter que les calls soient bloquer par les clients : https://github.com/matomo-org/matomo-nodejs-tracker |
Concernant |
Cet article : https://sdorra.dev/posts/2022-11-11-next-with-fathom |
Bonnes pratiques sur les events : https://fr.matomo.org/faq/reports/the-anatomy-of-an-event/ |
Hello, L'ajout de matomo fonctionne bien, j'ai utilisé un composant Cela ne pose pas de soucis pour plusieurs raisons. La première est qu'on utilise déjà des composants <html {...getHtmlAttributes({ defaultColorScheme, lang })}>
<head>
<StartDsfr />
<DsfrHead
Link={Link}
preloadFonts={[
//"Marianne-Light",
//"Marianne-Light_Italic",
"Marianne-Regular",
//"Marianne-Regular_Italic",
"Marianne-Medium",
//"Marianne-Medium_Italic",
"Marianne-Bold",
//"Marianne-Bold_Italic",
//"Spectral-Regular",
//"Spectral-ExtraBold"
]}
/>
</head>
<body>
<DsfrProvider lang={lang}>{children}</DsfrProvider>
<MatomoAnalytics />
</body>
</html> Le "use client";
import { startReactDsfr } from "@codegouvfr/react-dsfr/next-appdir";
import { defaultColorScheme } from "./defaultColorScheme";
import Link from "next/link";
declare module "@codegouvfr/react-dsfr/next-appdir" {
interface RegisterLink {
Link: typeof Link;
}
}
startReactDsfr({ defaultColorScheme, Link, doCheckNonce: true });
export function StartDsfr() {
return null;
} Donc notre Matomo est comme ceci : "use client";
import { init, push } from "@socialgouv/matomo-next";
import { usePathname } from "next/navigation";
import { useEffect } from "react";
import { PIWIK_SITE_ID, PIWIK_URL, SITE_URL, WIDGETS_PATH } from "../../config";
import { getSourceUrlFromPath } from "../../lib";
export function MatomoAnalytics() {
const pathname = usePathname();
useEffect(() => {
init({
siteId: PIWIK_SITE_ID,
url: PIWIK_URL,
onInitialization: () => {
const referrerUrl =
document?.referrer || getSourceUrlFromPath(SITE_URL + pathname);
if (referrerUrl) {
push(["setReferrerUrl", referrerUrl]);
}
if (pathname && pathname.match(WIDGETS_PATH)) {
push(["setCookieSameSite", "None"]);
}
},
excludeUrlsPatterns: [WIDGETS_PATH],
});
}, []);
return null;
} Donc, dans tous les cas, dans le layout on est obligé d'avoir des composants managés par le client. Ce qui n'est pas déconnant au final. Cela n'est pas lié au problématique de page statique ou dynamique. C'est juste que ces composants ne sont pas des server side composants. Cela veut dire qu'à chaque load, c'est le client qui va loder le code de matomo, ce qui est logique, et cela même si on le passe avec un Concernant l'autre tâche matomo pour le server-side, si on la réalise, cela ne changera rien car on devra toujours laisser le client envoyer les events. La seule chose qui change est la destination : notre api |
The text was updated successfully, but these errors were encountered: