星空と少女-Stella
系列 - Fuwari
分类
标签
544 字
3 分钟
[Fuwari]给博客添加主页
引子
之前一直想要将博客的根目录改为主页,最近研究了一下,下面是简单的实现方法:
NOTE请在操作前做好原项目备份
操作步骤
1.更改页面路径
将src/pages/[...page].astro
移至新建目录src/pages/blog/[...page].astro
并新建文件src/pages/index.astro
---import ContentCard from '../components/ContentCard.astro'import MainGridLayout from '../layouts/MainGridLayout.astro'---
<MainGridLayout> <ContentCard class="onload-animation" style="animation-delay: var(--content-delay)" /></MainGridLayout>
2.配置主页内容
新建文件src/components/ContentCard.astro
---interface Props { class?: string style?: string}
const { class: className, style } = Astro.props---//将主页内容至于此处,以下是示例:<div class="card-base p-6 mb-4">
<div class="card-base p-1 mb-0.1"> <script is:inline></script> <div class="flex items-center gap-2"> </div> <h1 class="text-2xl font-bold text-black/90 dark:text-white/90">Welcome to my blog,👋</h1> </div>
IMPORTANT在此处引用
src/assets
里的图片需要在文件头加上:ContentCard.astro
---import { Image } from 'astro:assets'import ExampletImage from '../assets/images/example.png'interface Props {class?: stringstyle?: string}// ...existing code...// 使用方式如下:<Image src={BackImage} alt="示例图片" class="rounded-xl w-full mb-4"/>// ...existing code...
3.修改依赖文件路径
由于src/pages/[...page].astro
被移至/blog
目录,因此在import时需要再返回一级目录
---import type { GetStaticPaths } from 'astro'import ContentCard from '../components/ContentCard.astro'import PostPage from '../components/PostPage.astro'import Pagination from '../components/control/Pagination.astro'import { PAGE_SIZE } from '../constants/constants'import MainGridLayout from '../layouts/MainGridLayout.astro'import { getSortedPosts } from '../utils/content-utils'import ContentCard from '../../components/ContentCard.astro'import PostPage from '../../components/PostPage.astro'import Pagination from '../../components/control/Pagination.astro'import { PAGE_SIZE } from '../../constants/constants'import MainGridLayout from '../../layouts/MainGridLayout.astro'import { getSortedPosts } from '../../utils/content-utils'---export const getStaticPaths = (async ({ paginate }) => { const allBlogPosts = await getSortedPosts() // ...existing code...
4.在导航栏增加博客选项
在导航栏的主页
后添加博客
,并配置路径和i18n
export const navBarConfig: NavBarConfig = { links: [ LinkPreset.Home, LinkPreset.Blog, LinkPreset.Archive, LinkPreset.Series, LinkPreset.About, LinkPreset.Friends,
// ...existing code...
export enum LinkPreset { Home = 0, Blog = 1, Archive = 2, Series = 3, About = 4, Friends = 5,}// ...existing code...
[LinkPreset.Friends]: { name: i18n(I18nKey.friends), url: '/friends/', }, [LinkPreset.Series]: { name: i18n(I18nKey.series), url: '/series/', }, [LinkPreset.Blog]: { name: i18n(I18nKey.blog), url: '/blog/', },}
author = 'author', publishedAt = 'publishedAt', license = 'license', friends = 'friends', series = 'series', blog = 'blog',}// ...existing code...
[Key.author]: '作者', [Key.publishedAt]: '发布于', [Key.license]: '许可协议', [Key.friends]: '友链', [Key.series]: '系列', [Key.blog]: '博客',}
5.修改控件指向路径
const getPageUrl = (p: number) => { if (p == 1) return '/' return `/${p}/` if (p == 1) return '/blog/' return `/blog/${p}/`}---// ...existing code...
结语
至此,访问博客根域名时就能直接看到主页啦ヾ(≧ ▽ ≦)ゝ,文章列表则位于/blog/<页数>
🎉
部分信息可能已经过时