feat: add language as post property (#151)
* feat: add language as post property * update frontmatter.json * style: remove extra space * fix: remove unnecessary replacements * feat: add `language` field to `new-post.js` * style: format code style * fix: use `siteConfig.lang` in `jsonLd` * fix: use `siteConfig` when `entry.data` was empty
This commit is contained in:
parent
856c2bb2c0
commit
f79ee3482d
|
@ -55,6 +55,11 @@
|
|||
"title": "draft",
|
||||
"name": "draft",
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"title": "language",
|
||||
"name": "language",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ image: ''
|
|||
tags: []
|
||||
category: ''
|
||||
draft: false
|
||||
language: ''
|
||||
---
|
||||
`
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ const postsCollection = defineCollection({
|
|||
image: z.string().optional().default(''),
|
||||
tags: z.array(z.string()).optional().default([]),
|
||||
category: z.string().optional().default(''),
|
||||
language: z.string().optional().default(''),
|
||||
|
||||
/* For internal use */
|
||||
prevTitle: z.string().default(''),
|
||||
|
|
|
@ -21,9 +21,10 @@ interface Props {
|
|||
title?: string
|
||||
banner?: string
|
||||
description?: string
|
||||
lang?: string
|
||||
}
|
||||
|
||||
let { title, banner, description } = Astro.props
|
||||
let { title, banner, description, lang } = Astro.props
|
||||
|
||||
// apply a class to the body element to decide the height of the banner, only used for initial page load
|
||||
// Swup can update the body for each page visit, but it's after the page transition, causing a delay for banner height change
|
||||
|
@ -52,7 +53,11 @@ if (title) {
|
|||
const favicons: Favicon[] =
|
||||
siteConfig.favicon.length > 0 ? siteConfig.favicon : defaultFavicons
|
||||
|
||||
const siteLang = siteConfig.lang.replace('_', '-')
|
||||
// const siteLang = siteConfig.lang.replace('_', '-')
|
||||
if (!lang) {
|
||||
lang = `${siteConfig.lang}`
|
||||
}
|
||||
const siteLang = lang.replace('_', '-')
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
|
|
@ -11,15 +11,16 @@ interface Props {
|
|||
title?: string
|
||||
banner?: string
|
||||
description?: string
|
||||
lang?: string
|
||||
}
|
||||
|
||||
const { title, banner, description } = Astro.props
|
||||
const { title, banner, description, lang } = Astro.props
|
||||
const hasBannerCredit =
|
||||
siteConfig.banner.enable && siteConfig.banner.credit.enable
|
||||
const hasBannerLink = !!siteConfig.banner.credit.url
|
||||
---
|
||||
|
||||
<Layout title={title} banner={banner} description={description}>
|
||||
<Layout title={title} banner={banner} description={description} lang={lang}>
|
||||
<slot slot="head" name="head"></slot>
|
||||
<div class="max-w-[var(--page-width)] min-h-screen grid grid-cols-[17.5rem_auto] grid-rows-[auto_auto_1fr_auto] lg:grid-rows-[auto_1fr_auto]
|
||||
mx-auto gap-4 relative px-0 md:px-4"
|
||||
|
|
|
@ -11,7 +11,7 @@ import { Icon } from 'astro-icon/components'
|
|||
import { licenseConfig } from 'src/config'
|
||||
import PostMetadata from '../../components/PostMeta.astro'
|
||||
import ImageWrapper from '../../components/misc/ImageWrapper.astro'
|
||||
import { profileConfig } from '../../config'
|
||||
import { profileConfig, siteConfig } from '../../config'
|
||||
import { formatDateToYYYYMMDD } from '../../utils/date-utils'
|
||||
|
||||
export async function getStaticPaths() {
|
||||
|
@ -41,10 +41,11 @@ const jsonLd = {
|
|||
url: Astro.site,
|
||||
},
|
||||
datePublished: formatDateToYYYYMMDD(entry.data.published),
|
||||
inLanguage: (entry.data.language ? entry.data.language.replace('_', '-') : siteConfig.lang.replace('_', '-')),
|
||||
// TODO include cover image here
|
||||
}
|
||||
---
|
||||
<MainGridLayout banner={entry.data.image} title={entry.data.title} description={entry.data.description}>
|
||||
<MainGridLayout banner={entry.data.image} title={entry.data.title} description={entry.data.description} lang={entry.data.language}>
|
||||
<script is:inline slot="head" type="application/ld+json" set:html={JSON.stringify(jsonLd)}></script>
|
||||
<div class="flex w-full rounded-[var(--radius-large)] overflow-hidden relative mb-4">
|
||||
<div id="post-container" class:list={["card-base z-10 px-6 md:px-9 pt-6 pb-4 relative w-full ",
|
||||
|
|
Loading…
Reference in New Issue