Communitygithub.com

Microck/ordinary-claude-skills

Utilisez cette compétence lorsque l'utilisateur demande d'installer, configurer ou mettre en place le SDK @dotcms/analytics, d'ajouter un suivi analytique, ou mentionne l'installation d'analytics dans des projets Next.js ou React.

Qu'est-ce que ordinary-claude-skills ?

Cette compétence fournit un guide d'installation détaillé et des exemples d'utilisation pour le SDK `@dotcms/analytics` dans des projets Next.js et React. Elle couvre l'installation du package, la création d'un fichier de configuration centralisé, et l'ajout de composants comme `DotContentAnalytics` pour le suivi automatique des pages vues, ou `useContentAnalytics()` pour les événements personnalisés. La compétence insiste sur la bonne pratique de centraliser la configuration dans un fichier dédié et de passer cette configuration en paramètre à chaque appel du hook, évitant ainsi la duplication et facilitant la maintenance. Elle est particulièrement utile pour les développeurs utilisant l'exemple Next.js de dotCMS, et elle s'applique à tout projet React ou Next.js. Le guide inclut des exemples concrets comme le suivi de clics, de soumissions de formulaires, d'événements vidéo, et de conversions e-commerce, ainsi que les options de configuration avancées (file d'attente d'événements, suivi d'impressions).

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Microck/ordinary-claude-skills/tree/HEAD/skills_all/sdk-analytics-installer

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Guide d'installation du SDK Analytics DotCMS

Cette compétence fournit des instructions pas à pas pour installer et configurer le SDK @dotcms/analytics dans le projet d'exemple Next.js situé dans /core/examples/nextjs.

Aperçu

Le SDK @dotcms/analytics est la bibliothèque JavaScript officielle de dotCMS pour le suivi d'événements et d'analytics contextuels. Il offre :

  • Suivi automatique des pages vues
  • Suivi des conversions (achats, téléchargements, inscriptions, etc.)
  • Suivi d'événements personnalisés
  • Gestion des sessions (délai d'expiration de 30 minutes)
  • Suivi d'identité utilisateur anonyme
  • Suivi des paramètres de campagne UTM
  • Mise en lots/tampon des événements pour les performances

🚨 Important : Comprendre les composants Analytics

CRITIQUE : useContentAnalytics() nécessite TOUJOURS une configuration en paramètre. Ce hook n'utilise PAS React Context.

Rôles des composants

  1. <DotContentAnalytics /> - Traqueur automatique de pages vues

    • Objectif unique : suivre automatiquement les pages vues lors des changements de route
    • N'est PAS un fournisseur de contexte React
    • Ne fournit PAS de configuration aux composants enfants
    • Placez-le dans la mise en page racine pour le suivi automatique des pages vues
  2. useContentAnalytics(config) - Hook de suivi manuel

    • Utilisé pour le suivi d'événements personnalisés
    • Nécessite TOUJOURS le paramètre config
    • Importez la configuration centralisée dans chaque composant qui l'utilise

Modèle d'utilisation correct

// 1. Créer un fichier de configuration centralisé (une fois)
// /src/config/analytics.config.js
export const analyticsConfig = {
  siteAuth: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_SITE_KEY,
  server: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_HOST,
  autoPageView: true,
  debug: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_DEBUG === "true",
};

// 2. Ajouter DotContentAnalytics à la mise en page pour le suivi automatique des pages vues (optionnel)
// /src/app/layout.js
import { DotContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

<DotContentAnalytics config={analyticsConfig} />;

// 3. Importer la configuration dans chaque composant qui utilise le hook
// /src/components/MyComponent.js
import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

const { track } = useContentAnalytics(analyticsConfig); // ✅ Configuration requise !

Pourquoi centraliser la configuration ? Bien que vous deviez l'importer dans chaque composant, la centralisation évite la duplication et facilite les mises à jour.

Résumé de la configuration rapide

Voici le flux de configuration complet :

1. Installer le package
   └─> npm install @dotcms/analytics

2. Créer un fichier de configuration centralisé
   └─> /src/config/analytics.config.js
       └─> export const analyticsConfig = { siteAuth, server, debug, ... }

3. (Optionnel) Ajouter DotContentAnalytics pour le suivi automatique des pages vues
   └─> /src/app/layout.js
       └─> import { analyticsConfig } from "@/config/analytics.config"
       └─> <DotContentAnalytics config={analyticsConfig} />

4. Importer la configuration dans CHAQUE composant qui utilise le hook
   └─> /src/components/MyComponent.js
       └─> import { analyticsConfig } from "@/config/analytics.config"
       └─> const { track } = useContentAnalytics(analyticsConfig) // ✅ Configuration requise !

Avantages clés de la configuration centralisée :

  • ✅ Source unique de vérité pour les valeurs de configuration
  • ✅ Mise à jour facile des variables d'environnement en un seul endroit
  • ✅ Configuration cohérente dans tous les composants
  • ✅ Meilleur que de dupliquer la configuration dans chaque fichier

Étapes d'installation

1. Installer le package

Accédez au répertoire d'exemple Next.js et installez le package :

cd /core/examples/nextjs
npm install @dotcms/analytics

2. Vérifier l'installation

Vérifiez que le package a été ajouté au fichier package.json :

grep "@dotcms/analytics" package.json

Sortie attendue : "@dotcms/analytics": "latest" ou une version similaire.

3. Créer une configuration analytics centralisée

Créez un fichier de configuration dédié pour centraliser vos paramètres analytics. Cela facilite la maintenance et la réutilisation dans l'ensemble de votre application.

Fichier : /core/examples/nextjs/src/config/analytics.config.js

/**
 * Configuration analytics centralisée pour dotCMS Content Analytics
 *
 * Cette configuration est utilisée par :
 * - Le fournisseur DotContentAnalytics dans layout.js
 * - Le hook useContentAnalytics() lorsqu'il est utilisé de manière autonome (optionnel)
 *
 * Variables d'environnement requises :
 * - NEXT_PUBLIC_DOTCMS_ANALYTICS_SITE_KEY
 * - NEXT_PUBLIC_DOTCMS_ANALYTICS_HOST
 * - NEXT_PUBLIC_DOTCMS_ANALYTICS_DEBUG (optionnel)
 */
export const analyticsConfig = {
  siteAuth: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_SITE_KEY,
  server: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_HOST,
  autoPageView: true, // Suivre automatiquement les pages vues lors des changements de route
  debug: process.env.NEXT_PUBLIC_DOTCMS_ANALYTICS_DEBUG === "true",
  queue: {
    eventBatchSize: 15, // Envoyer lorsque 15 événements sont en file d'attente
    flushInterval: 5000, // Ou envoyer toutes les 5 secondes (ms)
  },
};

Avantages de cette approche :

  • ✅ Source unique de vérité pour la configuration analytics
  • ✅ Importation et réutilisation faciles dans les composants
  • ✅ Gestion centralisée des variables d'environnement
  • ✅ Typage sécurisé et autocomplétion IDE
  • ✅ Facile à tester et à simuler dans les tests unitaires

4. Configurer Analytics dans la mise en page Next.js

Mettez à jour le fichier de mise en page racine pour inclure le fournisseur analytics en utilisant la configuration centralisée.

Fichier : /core/examples/nextjs/src/app/layout.js

import { Inter } from "next/font/google";
import "./globals.css";

const inter = Inter({ subsets: ["latin"] });

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body className={inter.className}>{children}</body>
    </html>
  );
}

Mis à jour avec Analytics (en utilisant la configuration centralisée) :

import { Inter } from "next/font/google";
import { DotContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";
import "./globals.css";

const inter = Inter({ subsets: ["latin"] });

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body className={inter.className}>
        <DotContentAnalytics config={analyticsConfig} />
        {children}
      </body>
    </html>
  );
}

5. Ajouter les variables d'environnement

Créez ou mettez à jour le fichier .env.local à la racine du projet Next.js :

Fichier : /core/examples/nextjs/.env.local

# Configuration dotCMS Analytics
NEXT_PUBLIC_DOTCMS_SITE_AUTH=votre_cle_auth_site_ici
NEXT_PUBLIC_DOTCMS_SERVER=https://votre-serveur-dotcms.com

Important : Remplacez votre_cle_auth_site_ici par votre véritable clé d'authentification de site dotCMS Analytics. Celle-ci peut être obtenue depuis l'application Analytics dans votre instance dotCMS.

6. Ajouter .env.local au fichier .gitignore

Assurez-vous que le fichier d'environnement n'est pas commité dans le contrôle de version :

# Vérifier s'il est déjà ignoré
grep ".env.local" /core/examples/nextjs/.gitignore

# S'il n'est pas présent, l'ajouter
echo ".env.local" >> /core/examples/nextjs/.gitignore

Exemples d'utilisation

Configuration de base (pages vues automatiques)

Avec la configuration ci-dessus, les pages vues sont automatiquement suivies à chaque changement de route. Aucun code supplémentaire n'est nécessaire !

Page vue manuelle avec données personnalisées

Suivez les pages vues avec un contexte supplémentaire :

"use client";

import { useEffect } from "react";
import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function MyComponent() {
  // ✅ Toujours passer la configuration - importée depuis le fichier centralisé
  const { pageView } = useContentAnalytics(analyticsConfig);

  useEffect(() => {
    // Suivre la page vue avec des données personnalisées
    pageView({
      contentType: "blog",
      category: "technologie",
      author: "jean-dupont",
      wordCount: 1500,
    });
  }, []);

  return <div>Contenu ici</div>;
}

Suivre des événements personnalisés

Suivez des interactions utilisateur spécifiques :

"use client";

import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function CallToActionButton() {
  // ✅ Toujours passer la configuration - importée depuis le fichier centralisé
  const { track } = useContentAnalytics(analyticsConfig);

  const handleClick = () => {
    // Suivre un événement personnalisé
    track("cta-click", {
      button: "Acheter maintenant",
      location: "section-hero",
      price: 299.99,
    });
  };

  return <button onClick={handleClick}>Acheter maintenant</button>;
}

Suivi de soumission de formulaire

"use client";

import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function ContactForm() {
  const { track } = useContentAnalytics(analyticsConfig);

  const handleSubmit = async (e) => {
    e.preventDefault();

    // Suivre la soumission du formulaire
    track("form-submit", {
      formName: "formulaire-contact",
      formType: "generation-leads",
      source: "page-accueil",
    });

    // Soumettre le formulaire...
  };

  return <form onSubmit={handleSubmit}>{/* Champs du formulaire */}</form>;
}

Suivi d'interaction vidéo/média

"use client";

import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function VideoPlayer({ videoId }) {
  const { track } = useContentAnalytics(analyticsConfig);

  const handlePlay = () => {
    track("video-play", {
      videoId,
      duration: 120,
      autoplay: false,
    });
  };

  const handleComplete = () => {
    track("video-complete", {
      videoId,
      watchPercentage: 100,
    });
  };

  return (
    <video onPlay={handlePlay} onEnded={handleComplete}>
      {/* Sources vidéo */}
    </video>
  );
}

Suivi de vue de produit e-commerce

"use client";

import { useEffect } from "react";
import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function ProductPage({ product }) {
  const { track } = useContentAnalytics(analyticsConfig);

  useEffect(() => {
    // Suivre la vue du produit
    track("product-view", {
      productId: product.sku,
      productName: product.title,
      category: product.category,
      price: product.price,
      inStock: product.inventory > 0,
    });
  }, [product]);

  return <div>{/* Détails du produit */}</div>;
}

Suivi de conversion (achat e-commerce)

"use client";

import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function CheckoutButton({ product, quantity }) {
  const { conversion } = useContentAnalytics(analyticsConfig);

  const handlePurchase = () => {
    // Logique de paiement ici...
    // Après confirmation de paiement réussie :

    // Suivre la conversion UNIQUEMENT après un achat réussi
    conversion("purchase", {
      value: product.price * quantity,
      currency: "EUR",
      productId: product.sku,
      productName: product.title,
      quantity: quantity,
      category: product.category,
    });
  };

  return <button onClick={handlePurchase}>Finaliser l'achat</button>;
}

Suivi de conversion (génération de leads)

"use client";

import { useContentAnalytics } from "@dotcms/analytics/react";
import { analyticsConfig } from "@/config/analytics.config";

function DownloadWhitepaper() {
  const { conversion } = useContentAnalytics(analyticsConfig);

  const handleDownload = () => {
    // Logique de téléchargement ici...
    // Après que le téléchargement soit terminé avec succès :

    // Suivre la conversion UNIQUEMENT après un téléchargement réussi
    conversion("download", {
      fileType: "pdf",
      fileName: "livre-blanc-2024.pdf",
      category: "aimant-a-leads",
    });
  };

  return (
    <button id="download-btn" onClick={handleDownload}>
      Télécharger le livre blanc
    </button>
  );
}

Options de configuration

Objet de configuration Analytics

OptionTypeRequisDéfautDescription
siteAuthstringOui-Clé d'authentification du site depuis dotCMS Analytics
serverstringOui-L'URL de votre serveur dotCMS
debugbooleanNonfalseActiver la journalisation détaillée pour le débogage
autoPageViewbooleanNontrue (React)Suivre automatiquement les pages vues lors des changements de route
queueQueueConfig | falseNonParamètres de file par défautConfiguration du regroupement d'événements
impressionsImpressionConfig | booleanNonfalseSuivi des impressions de contenu (désactivé par défaut)
clicksbooleanNonfalseSuivi des clics sur le contenu avec une temporisation de 300 ms (désactivé par défaut)

Configuration de la file d'attente

Contrôle la manière dont les événements sont regroupés et envoyés :

OptionTypeDéfautDescription
eventBatchSizenumber15Nombre max d'événements par lot - envoi auto quand atteint
flushIntervalnumber5000Temps en ms entre les envois

Désactiver la mise en file d'attente (envoyer immédiatement) :

const analyticsConfig = {
  siteAuth: "votre_cle",
  server: "https://votre-serveur.com",
  queue: false, // Envoyer les événements immédiatement
};

Configuration du suivi des impressions

Contrôle le suivi automatique de la visibilité du contenu :

| Option | Type | Défaut | Description

…

[Le contenu a été tronqué pour la traduction. Les sections suivantes concernent les options de configuration avancées et les liens de référence.]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés