mirror of
https://github.com/thiloho/archtika.git
synced 2025-11-22 10:51:36 +01:00
Add basic necessary SEO tags
This commit is contained in:
@@ -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} />
|
||||||
|
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user