feat/seo #10
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,4 +2,5 @@
|
|||||||
app/.pnpm-store
|
app/.pnpm-store
|
||||||
app/node_modules
|
app/node_modules
|
||||||
app/dist
|
app/dist
|
||||||
|
app/public/sitemap.xml
|
||||||
**/*~lock*
|
**/*~lock*
|
||||||
@ -1 +0,0 @@
|
|||||||
<?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:51:43.576Z</lastmod><priority>1.0</priority></url><url><loc>http://localhost:5500/certifications</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/docs</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/docs/communaute/influenceurs</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/docs/communaute/partages</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/mentions-legales</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/politique-de-confidentialite</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.9</priority></url><url><loc>http://localhost:5500/certifications/dwwm</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.8</priority></url><url><loc>http://localhost:5500/certifications/dwwm/at1</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/certifications/dwwm/at2</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.7</priority></url><url><loc>http://localhost:5500/docs/react</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.8</priority></url><url><loc>http://localhost:5500/docs/merise</loc><lastmod>2025-04-18T15:51:43.576Z</lastmod><priority>0.8</priority></url></urlset>
|
|
||||||
@ -79,33 +79,61 @@ class Sitemap {
|
|||||||
return (1 - countOfSlashes * 0.1).toFixed(1);
|
return (1 - countOfSlashes * 0.1).toFixed(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadLastModified(href: string): string {}
|
private loadLastModified(href: string): string {
|
||||||
|
return this.lastModified;
|
||||||
|
}
|
||||||
|
|
||||||
private loadFile(href: string) {}
|
private getFileServerLocation(href: string) {
|
||||||
|
const jsxHref = ["/politique-de-confidentialite", "/mentions-legales"];
|
||||||
|
const isJsxFile = jsxHref.includes(href);
|
||||||
|
|
||||||
|
if (isJsxFile) {
|
||||||
|
return path.join(this.pagesPath, href.replace("/", ""), "+Page.tsx");
|
||||||
|
}
|
||||||
|
|
||||||
|
return path.join(this.pagesPath, href.replace("/", ""), "page.md");
|
||||||
|
}
|
||||||
|
|
||||||
|
private loadSubitems(subitems: (typeof navigation)[number]["links"][number]["subitems"]): void {
|
||||||
|
subitems.forEach((subitem) => {
|
||||||
|
const fileLocation = this.getFileServerLocation(subitem.href);
|
||||||
|
console.log("File location:", fileLocation);
|
||||||
|
|
||||||
|
const priority = this.loadPriority(subitem.href);
|
||||||
|
const lastmod = this.loadLastModified(subitem.href);
|
||||||
|
const location = `${this.baseUrl}${subitem.href}`;
|
||||||
|
|
||||||
|
this.urls.push({
|
||||||
|
location,
|
||||||
|
lastmod,
|
||||||
|
priority,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private loadSection(section: (typeof navigation)[number]): void {
|
||||||
|
section.links.forEach((link) => {
|
||||||
|
if (link.subitems.length > 0) {
|
||||||
|
return this.loadSubitems(link.subitems);
|
||||||
|
}
|
||||||
|
|
||||||
private loadSection(sectionLinks: (typeof navigation)[number]["links"]) {
|
|
||||||
return sectionLinks.map((link) => {
|
|
||||||
const priority = this.loadPriority(link.href);
|
const priority = this.loadPriority(link.href);
|
||||||
const lastmod = this.loadLastModified(link.href);
|
const lastmod = this.loadLastModified(link.href);
|
||||||
const location = `${this.baseUrl}${link.href}`;
|
const location = `${this.baseUrl}${link.href}`;
|
||||||
|
|
||||||
return {
|
this.urls.push({
|
||||||
location,
|
location,
|
||||||
lastmod,
|
lastmod,
|
||||||
priority,
|
priority,
|
||||||
};
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadUrls(): void {
|
private loadUrls(): void {
|
||||||
this.urls = navigation.flatMap((section) => {
|
navigation.forEach(this.loadSection.bind(this));
|
||||||
return Array.from(
|
|
||||||
new Set(
|
this.urls = Array.from(new Set(this.urls)).sort((a, b) => {
|
||||||
this.loadSection(section.links)
|
return a.location.localeCompare(b.location);
|
||||||
.filter((url) => url !== null)
|
|
||||||
.sort((a, b) => a.location.localeCompare(b.location)),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Loaded URLs:", this.urls);
|
console.log("Loaded URLs:", this.urls);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user