feat: Update sitemap with additional URLs and sitemap logic

This commit is contained in:
Gauthier Daniels 2025-04-18 17:50:32 +02:00
parent 3a84a78c43
commit 4a4d867ab9
2 changed files with 33 additions and 21 deletions

View File

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap-image/1.1"></urlset> <?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap-image/1.1"><url><loc>http://localhost:5500/</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>1.0</priority></url><url><loc>http://localhost:5500/certifications</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/docs</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/docs/communaute/influenceurs</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/docs/communaute/partages</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/mentions-legales</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/politique-de-confidentialite</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/certifications/dwwm</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.8</priority></url><url><loc>http://localhost:5500/certifications/dwwm/at1</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/certifications/dwwm/at2</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/docs/react</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.8</priority></url><url><loc>http://localhost:5500/docs/merise</loc><lastmod>2025-04-18T15:49:26.620Z</lastmod><priority>0.8</priority></url></urlset>

View File

@ -53,7 +53,13 @@ class Sitemap {
this.sitemap += `</urlset>`; this.sitemap += `</urlset>`;
} }
private addSitemapElement(url: SitemapElement): void {} private addSitemapElement(url: SitemapElement): void {
this.sitemap += `<url>`;
this.sitemap += `<loc>${url.location}</loc>`;
this.sitemap += `<lastmod>${url.lastmod || this.lastModified}</lastmod>`;
this.sitemap += `<priority>${url.priority}</priority>`;
this.sitemap += `</url>`;
}
private buildSitemap(): void { private buildSitemap(): void {
this.prependSitemap(); this.prependSitemap();
@ -67,34 +73,40 @@ class Sitemap {
private loadPriority(href: string): string { private loadPriority(href: string): string {
const isRootUrl = ["/", ""].includes(href); const isRootUrl = ["/", ""].includes(href);
const isMainUrl = ["/docs", "/certifications", "/politique-de-confidentialite", "/mentions-legales"].includes(href);
if (isRootUrl) return "1.0"; if (isRootUrl) return "1.0";
if (isMainUrl) return "0.9"; const countOfSlashes = (href.match(/\//g) || []).length;
return "0.8"; return (1 - countOfSlashes * 0.1).toFixed(1);
} }
private loadLastModified(href: string): string {} private loadLastModified(href: string): string {}
private loadFile(href: string) {} private loadFile(href: string) {}
private loadUrls(): void { private loadSection(sectionLinks: (typeof navigation)[number]["links"]) {
this.urls = navigation.flatMap((item) => { return sectionLinks.map((link) => {
return item.links const href = link.href;
.map((link) => { const priority = this.loadPriority(href);
const file = this.loadFile(link.href); const lastmod = this.loadLastModified(href);
if (!file) { const location = `${this.baseUrl}${href}`;
console.warn(`File not found for URL: ${link.href}`);
return null;
}
return { return {
location: `${this.baseUrl}${link.href}`, location,
lastmod: this.loadLastModified(link.href), lastmod,
priority: this.loadPriority(link.href), priority,
}; };
}) });
.filter((url) => url !== null); }
private loadUrls(): void {
this.urls = navigation.flatMap((section) => {
return Array.from(
new Set(
this.loadSection(section.links)
.filter((url) => url !== null)
.sort((a, b) => a.location.localeCompare(b.location)),
),
);
}); });
console.log("Loaded URLs:", this.urls); console.log("Loaded URLs:", this.urls);