From 45f5cc0e9e6f4a7252a21ba251130223423d2a02 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 15 Feb 2026 18:35:06 +0000 Subject: [PATCH] fix: connect Sanity CMS data to live site with revalidation - Disable Sanity CDN cache so published changes appear immediately - Add revalidate=60 to page so Next.js refreshes data every 60s - Wire AboutMe component to use siteSettings from Sanity (name, bio, photo, address, map coordinates) https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y --- app/page.tsx | 12 +++-- components/marketing/AboutMe.tsx | 85 ++++++++++++++++++++++---------- lib/sanity/client.ts | 2 +- 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index e22653e..b0a77ac 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -6,10 +6,16 @@ import AboutMe from "@/components/marketing/AboutMe"; import FAQ from "@/components/marketing/FAQ"; import Contact from "@/components/marketing/Contact"; import Footer from "@/components/marketing/Footer"; -import { getPortfolio } from "@/lib/sanity/queries"; +import { getPortfolio, getSiteSettings } from "@/lib/sanity/queries"; + +// Revalider les données Sanity toutes les 60 secondes +export const revalidate = 60; export default async function LandingPage() { - const portfolioItems = await getPortfolio(); + const [portfolioItems, siteSettings] = await Promise.all([ + getPortfolio(), + getSiteSettings(), + ]); return (
@@ -26,7 +32,7 @@ export default async function LandingPage() { {/* Qui suis-je - Ancrage Local */} - + {/* FAQ */} diff --git a/components/marketing/AboutMe.tsx b/components/marketing/AboutMe.tsx index adc4a28..5f19380 100644 --- a/components/marketing/AboutMe.tsx +++ b/components/marketing/AboutMe.tsx @@ -1,4 +1,19 @@ -export default function AboutMe() { +import Image from "next/image"; +import { urlFor } from "@/lib/sanity/client"; +import type { SiteSettings } from "@/lib/sanity/queries"; + +interface AboutMeProps { + settings?: SiteSettings | null; +} + +export default function AboutMe({ settings }: AboutMeProps) { + const name = settings?.ownerName || "Enguerrand"; + const bio = settings?.ownerBio; + const address = settings?.address || "Flines-lez-Raches, Nord (59)"; + const lat = settings?.lat || 50.4267; + const lng = settings?.lng || 3.2372; + const photoUrl = settings?.ownerPhoto ? urlFor(settings.ownerPhoto)?.width(400).height(480).url() : null; + return (
@@ -18,39 +33,57 @@ export default function AboutMe() {
-
-
- - - + {photoUrl ? ( + {`Photo + ) : ( +
+
+ + + +
+

Votre photo ici

+

(configurable via Sanity)

-

Votre photo ici

-

(configurable via Sanity)

-
+ )}
- Basé à Flines-lez-Raches + Basé à {address.split(",")[0]}
{/* Right - Text */}
-

- Je suis Enguerrand, spécialisé dans la - visibilité locale et la construction de{" "} - systèmes de confiance en ligne{" "} - pour les TPE/PME du Nord. -

-

- Je ne suis pas un call center parisien. Je connais la réalité de vos - chantiers à Douai, Orchies ou Valenciennes. Je sais que vous n’avez pas - le temps de gérer “un truc internet” et que vous voulez des résultats - concrets : des appels de vrais clients. -

+ {bio ? ( +

+ {bio} +

+ ) : ( + <> +

+ Je suis {name}, spécialisé dans la + visibilité locale et la construction de{" "} + systèmes de confiance en ligne{" "} + pour les TPE/PME du Nord. +

+

+ Je ne suis pas un call center parisien. Je connais la réalité de vos + chantiers à Douai, Orchies ou Valenciennes. Je sais que vous n’avez pas + le temps de gérer “un truc internet” et que vous voulez des résultats + concrets : des appels de vrais clients. +

+ + )}

Mon approche : je vous construis un dossier de confiance{" "} - (Google + site + preuves) qui transforme votre bouche-à-oreille en système + (Google + site + preuves) qui transforme votre bouche-à-oreille en système permanent. Pas de jargon, pas de blabla — du concret.

@@ -61,7 +94,7 @@ export default function AboutMe() {

24h

-

Délai de réponse

+

Délai de réponse

@@ -78,9 +111,9 @@ export default function AboutMe() {