diff --git a/astro.config.mts b/astro.config.mts index dba5f0e..8b842f5 100644 --- a/astro.config.mts +++ b/astro.config.mts @@ -182,7 +182,7 @@ export default defineConfig({ markdown: { rehypePlugins: pipeline(), syntaxHighlight: "prism", - }, + }, integrations: [ vue(), tailwind(), diff --git a/src/layouts/MoreTile.astro b/src/layouts/MoreTile.astro index 7d2aad2..638a5ec 100644 --- a/src/layouts/MoreTile.astro +++ b/src/layouts/MoreTile.astro @@ -1,36 +1,39 @@ --- import { formatDate } from "../utils" const { title, href, cover, tags, date } = Astro.props - +import { fixImage } from "../utils/image" const dateFormatted = formatDate(date) const type = tags?.[0] ?? "默认" -const image = cover ? cover : "https://oss.nbtca.space/CA-logo.svg" +let image = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg" +if (image.startsWith("./")) { + image = await fixImage(image, href) +} -const label = `${title} - ${type} - 发表时间 ${dateFormatted}` +const label = `${title} - ${type} - 发表时间 ${dateFormatted}`; --- -
  • + - -
  • + + + diff --git a/src/layouts/Tile.astro b/src/layouts/Tile.astro index 78904f0..e0af35c 100644 --- a/src/layouts/Tile.astro +++ b/src/layouts/Tile.astro @@ -1,35 +1,61 @@ --- import { formatDate } from "../utils" const { title, href, cover, tags, date, level } = Astro.props +import { fixImage } from "../utils/image" const dateFormatted = formatDate(date) const type = tags[0] -const label = `${title} - ${type} - 发表时间 ${dateFormatted}`; +const label = `${title} - ${type} - 发表时间 ${dateFormatted}` +let image = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg" +if (image.startsWith("./")) { + image = await fixImage(image, href) +} + // level 1: hero // level 2: 2up // level 3: 3up --- -
  • + - - + -
  • +
    + {dateFormatted} +
    + + + diff --git a/src/pages/index.astro b/src/pages/index.astro index 4f1905c..52c3bf0 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -28,7 +28,7 @@ Blogs.sort( href={post.url} date={post.frontmatter.pubDate} tags={post.frontmatter.tags} - cover={post.frontmatter.cover.url} + cover={post.frontmatter.cover} level="1" /> ) @@ -44,7 +44,7 @@ Blogs.sort( href={post.url} date={post.frontmatter.pubDate} tags={post.frontmatter.tags} - cover={post.frontmatter.cover.url} + cover={post.frontmatter.cover} level="2" /> ) @@ -60,7 +60,7 @@ Blogs.sort( href={post.url} date={post.frontmatter.pubDate} tags={post.frontmatter.tags} - cover={post.frontmatter.cover.url} + cover={post.frontmatter.cover} level="3" /> ) @@ -84,7 +84,7 @@ Blogs.sort( href={post.url} date={post.frontmatter.pubDate} tags={post.frontmatter.tags} - cover={post.frontmatter.cover.url} + cover={post.frontmatter.cover} /> ) }) @@ -97,6 +97,7 @@ Blogs.sort( href={post.url} date={post.frontmatter.pubDate} tags={post.frontmatter.tags} + cover={post.frontmatter.cover} /> ) }) diff --git a/src/utils/image.ts b/src/utils/image.ts new file mode 100644 index 0000000..4226821 --- /dev/null +++ b/src/utils/image.ts @@ -0,0 +1,20 @@ +import { getImage } from "astro:assets" + +export async function fixImage(image: string, href: string) { + try { + const sliceHref = href.slice(0, href.lastIndexOf("/") + 1)// get the dir of the current page(remove filename) + const imageLocation = await import( + /* @vite-ignore */ `/src/pages${sliceHref}${image.slice(1)}` + )// static import of the image + image = imageLocation.default + return ( + await getImage({ // resolve the images + src: image, + inferSize: true, + }) + ).src + } + catch (error) { + console.log(error) + } +}