Add basic necessary SEO tags

This commit is contained in:
thiloho
2024-09-07 16:45:20 +02:00
parent 63dd99bd3d
commit 6a7e64ccaf
4 changed files with 41 additions and 10 deletions

View File

@@ -11,7 +11,8 @@
mainContent, mainContent,
coverImage, coverImage,
publicationDate, publicationDate,
footerAdditionalText footerAdditionalText,
metaDescription
}: { }: {
favicon: string; favicon: string;
title: string; title: string;
@@ -21,10 +22,11 @@
coverImage: string; coverImage: string;
publicationDate: string; publicationDate: string;
footerAdditionalText: string; footerAdditionalText: string;
metaDescription: string;
} = $props(); } = $props();
</script> </script>
<Head {title} {favicon} nestingLevel={1} /> <Head {title} {favicon} nestingLevel={1} {metaDescription} />
<Nav {logoType} {logo} /> <Nav {logoType} {logo} />

View File

@@ -2,8 +2,14 @@
const { const {
title, title,
favicon, favicon,
nestingLevel = 0 nestingLevel = 0,
}: { title: string; favicon: string; nestingLevel?: number } = $props(); metaDescription = null
}: {
title: string;
favicon: string;
nestingLevel?: number;
metaDescription: string | null;
} = $props();
</script> </script>
<svelte:head> <svelte:head>
@@ -11,6 +17,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{title}</title> <title>{title}</title>
<meta name="description" content={metaDescription ?? title} />
<link rel="stylesheet" href={`${"../".repeat(nestingLevel)}styles.css`} /> <link rel="stylesheet" href={`${"../".repeat(nestingLevel)}styles.css`} />
{#if favicon} {#if favicon}
<link rel="icon" href={favicon} /> <link rel="icon" href={favicon} />

View File

@@ -10,7 +10,8 @@
logo, logo,
mainContent, mainContent,
categorizedArticles, categorizedArticles,
footerAdditionalText footerAdditionalText,
metaDescription
}: { }: {
favicon: string; favicon: string;
title: string; title: string;
@@ -19,10 +20,11 @@
mainContent: string; mainContent: string;
categorizedArticles: { [key: string]: { title: string }[] }; categorizedArticles: { [key: string]: { title: string }[] };
footerAdditionalText: string; footerAdditionalText: string;
metaDescription: string;
} = $props(); } = $props();
</script> </script>
<Head {title} {favicon} nestingLevel={1} /> <Head {title} {favicon} nestingLevel={1} {metaDescription} />
<Nav {logoType} {logo} isDocsTemplate={true} {categorizedArticles} isIndexPage={false} /> <Nav {logoType} {logo} isDocsTemplate={true} {categorizedArticles} isIndexPage={false} />

View File

@@ -158,7 +158,16 @@ const generateStaticFiles = async (websiteData: WebsiteData, isPreview: boolean
break; break;
} }
const indexFileContents = head.concat(body); const indexFileContents = `
<!DOCTYPE html>
<html lang="en">
<head>
${head}
</head>
<body>
${body}
</body>
</html>`;
let uploadDir = ""; let uploadDir = "";
@@ -199,7 +208,8 @@ const generateStaticFiles = async (websiteData: WebsiteData, isPreview: boolean
: "", : "",
publicationDate: article.publication_date, publicationDate: article.publication_date,
mainContent: md(article.main_content ?? ""), mainContent: md(article.main_content ?? ""),
footerAdditionalText: md(websiteData.additional_text ?? "") footerAdditionalText: md(websiteData.additional_text ?? ""),
metaDescription: article.meta_description
} }
})); }));
} }
@@ -219,14 +229,24 @@ const generateStaticFiles = async (websiteData: WebsiteData, isPreview: boolean
: `${API_BASE_PREFIX}/rpc/retrieve_file?id=${websiteData.logo_image}`, : `${API_BASE_PREFIX}/rpc/retrieve_file?id=${websiteData.logo_image}`,
mainContent: md(article.main_content ?? ""), mainContent: md(article.main_content ?? ""),
categorizedArticles: websiteData.categorized_articles ?? [], categorizedArticles: websiteData.categorized_articles ?? [],
footerAdditionalText: md(websiteData.additional_text ?? "") footerAdditionalText: md(websiteData.additional_text ?? ""),
metaDescription: article.meta_description
} }
})); }));
} }
break; break;
} }
const articleFileContents = head.concat(body); const articleFileContents = `
<!DOCTYPE html>
<html lang="en">
<head>
${head}
</head>
<body>
${body}
</body>
</html>`;
await writeFile(join(uploadDir, "articles", `${articleFileName}.html`), articleFileContents); await writeFile(join(uploadDir, "articles", `${articleFileName}.html`), articleFileContents);
} }