SPB Git

Repository Public

sitemap.ts 2.5 KB 44 lines typescript

1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// Sitemap des pages : statiques + 1 097 municipalités + pages municipalité×type.3// Les 3,7 M de fiches sont dans /estimation/sitemap/[id].xml (voir sitemap-index.xml).4import type { MetadataRoute } from "next";5import { allMunicipalities, allMunTypePairs } from "@/lib/municipalites";6import { SITE_URL, TYPE_SLUGS, slugify } from "@/lib/seo";7import stats from "@/data/stats.json";89export const dynamic = "force-dynamic";1011const LASTMOD = new Date((stats as { generated: string }).generated);1213export default function sitemap(): MetadataRoute.Sitemap {14  const statics: MetadataRoute.Sitemap = [15    { url: `${SITE_URL}/`, lastModified: LASTMOD, changeFrequency: "weekly", priority: 1 },16    { url: `${SITE_URL}/municipalites`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.9 },17    { url: `${SITE_URL}/a-vendre`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },18    { url: `${SITE_URL}/ventes`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },19    { url: `${SITE_URL}/cout`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },20    { url: `${SITE_URL}/cout/assemblage`, lastModified: LASTMOD, changeFrequency: "weekly", priority: 0.7 },21    { url: `${SITE_URL}/carte`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.8 },22    { url: `${SITE_URL}/stats`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.8 },23    { url: `${SITE_URL}/stats/marche`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },24    { url: `${SITE_URL}/ka`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },25    { url: `${SITE_URL}/parc`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.6 },26    { url: `${SITE_URL}/methodologie`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },27    { url: `${SITE_URL}/conditions`, lastModified: LASTMOD, changeFrequency: "yearly", priority: 0.2 },28    { url: `${SITE_URL}/confidentialite`, lastModified: LASTMOD, changeFrequency: "yearly", priority: 0.2 },29  ];30  const munis: MetadataRoute.Sitemap = allMunicipalities().map((m) => ({31    url: `${SITE_URL}/municipalite/${m.slug}`,32    lastModified: LASTMOD,33    changeFrequency: "monthly",34    priority: 0.8,35  }));36  const types: MetadataRoute.Sitemap = allMunTypePairs().map((p) => ({37    url: `${SITE_URL}/municipalite/${slugify(p.nom)}/${TYPE_SLUGS[p.type] ?? p.type}`,38    lastModified: LASTMOD,39    changeFrequency: "monthly",40    priority: 0.6,41  }));42  return [...statics, ...munis, ...types];43}44
Files main
Menu

Theme