mirror of
https://github.com/ChenQihan666/MyBlog-Next.git
synced 2026-08-14 11:29:33 +08:00
Update PostLayout.astro
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Layout from "./Layout.astro";
|
||||
import config from "@/config";
|
||||
import TwikooComments from "../components/TwikooComments.astro";
|
||||
import Twikoo from '@/components/Twikoo.astro';
|
||||
|
||||
type Props = {
|
||||
title?: string;
|
||||
@@ -13,41 +13,58 @@ type Props = {
|
||||
};
|
||||
|
||||
const { site } = config;
|
||||
const { title, description, ogImage, canonicalURL, pubDatetime, modDatetime } = Astro.props;
|
||||
|
||||
const commentPath = Astro.url.pathname;
|
||||
const { title, description, ogImage, canonicalURL, pubDatetime, modDatetime } =
|
||||
Astro.props;
|
||||
|
||||
// 结构化数据(保持你原来的实现,此处仅作示例)
|
||||
const structuredData = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
headline: title,
|
||||
description: description,
|
||||
// ... 其他字段按你的原有逻辑填充
|
||||
"@type": "BlogPosting",
|
||||
headline: title ?? site.title,
|
||||
image: ogImage,
|
||||
...(pubDatetime && { datePublished: pubDatetime.toISOString() }),
|
||||
...(modDatetime && { dateModified: modDatetime.toISOString() }),
|
||||
author: [
|
||||
{
|
||||
"@type": "Person",
|
||||
name: site.author,
|
||||
...(site.profile && { url: site.profile }),
|
||||
},
|
||||
],
|
||||
};
|
||||
---
|
||||
|
||||
<Layout {title} {description} {ogImage} {canonicalURL}>
|
||||
<Fragment slot="head">
|
||||
<!-- Override og:type for article pages -->
|
||||
<meta property="og:type" content="article" />
|
||||
{pubDatetime && (
|
||||
<meta property="article:published_time" content={pubDatetime.toISOString()} />
|
||||
)}
|
||||
{modDatetime && (
|
||||
<meta property="article:modified_time" content={modDatetime.toISOString()} />
|
||||
)}
|
||||
<script type="application/ld+json" is:inline set:html={JSON.stringify(structuredData)} />
|
||||
|
||||
{
|
||||
pubDatetime && (
|
||||
<meta
|
||||
property="article:published_time"
|
||||
content={pubDatetime.toISOString()}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
modDatetime && (
|
||||
<meta
|
||||
property="article:modified_time"
|
||||
content={modDatetime.toISOString()}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
<script
|
||||
type="application/ld+json"
|
||||
is:inline
|
||||
set:html={JSON.stringify(structuredData)}
|
||||
/>
|
||||
</Fragment>
|
||||
|
||||
<!-- 文章主体内容(来自各个 Markdown 文件中的内容) -->
|
||||
<slot />
|
||||
|
||||
<!-- 仅在文章页面显示评论区,并通过插槽放到 footer 之前 -->
|
||||
{commentPath.startsWith("/posts/") && (
|
||||
<Fragment slot="after-content">
|
||||
<div class="mx-auto max-w-2xl px-4 sm:px-6">
|
||||
<TwikooComments envId="http://47.108.235.131:40063/" path={commentPath} />
|
||||
</div>
|
||||
</Fragment>
|
||||
)}
|
||||
<article>
|
||||
<slot />
|
||||
</article>
|
||||
<Twikoo />
|
||||
</Layout>
|
||||
|
||||
Reference in New Issue
Block a user