Opengraph
All checks were successful
Docker Deploy / build-and-push (push) Successful in 4m39s

This commit is contained in:
2026-02-07 00:28:33 -07:00
parent 6b77ce091d
commit dce37681af
13 changed files with 336 additions and 230 deletions

View File

@@ -9,14 +9,25 @@ import "../styles/global.css";
export interface Props {
title?: string;
description?: string;
ogImage?: string;
ogType?: "website" | "article";
}
const { title, description } = Astro.props;
const { title, description, ogImage, ogType } = Astro.props;
const pageTitle = title
? `${title} | ${config.siteConfig.meta.title}`
: config.siteConfig.meta.title;
const pageDescription = description || config.siteConfig.meta.description;
const og = config.siteConfig.openGraph;
const canonicalUrl = new URL(Astro.url.pathname, config.siteConfig.meta.url)
.href;
const resolvedOgImage = ogImage || og.image;
const resolvedOgImageUrl = resolvedOgImage
? new URL(resolvedOgImage, config.siteConfig.meta.url).href
: undefined;
const resolvedOgType = ogType || og.type || "website";
---
<!doctype html>
@@ -25,10 +36,24 @@ const pageDescription = description || config.siteConfig.meta.description;
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link rel="canonical" href={canonicalUrl} />
<meta name="generator" content={Astro.generator} />
<meta name="description" content={pageDescription} />
<meta name="author" content={config.siteConfig.meta.author} />
<title>{pageTitle}</title>
<meta property="og:title" content={pageTitle} />
<meta property="og:description" content={pageDescription} />
<meta property="og:type" content={resolvedOgType} />
<meta property="og:url" content={canonicalUrl} />
{og.siteName && <meta property="og:site_name" content={og.siteName} />}
{og.locale && <meta property="og:locale" content={og.locale} />}
{
resolvedOgImageUrl && (
<meta property="og:image" content={resolvedOgImageUrl} />
)
}
<ClientRouter />
</head>
<body class="flex flex-col min-h-screen overflow-x-hidden">