558 字
3 分钟
Fuwari:添加友情链接页面
前言
Fuwari 是一款极其纯粹、极简的 Astro 博客主题,但是并没有内置专用的友情链接页面。 本文将记录我添加一个功能完备的友链页的过程。
参考来源
创建友链页面
- 在
src/types/config.ts文件内添加以下内容:
export enum LinkPreset { Home = 0, Archive = 1, About = 2, Friends = 3,}- 在
src/i18n/i18nKey.ts文件内添加以下内容:
home = "home", about = "about", archive = "archive", friends = "friends", search = "search",- 在
src/i18n/languages目录中编辑博客使用的语言文件,添加一个Key。这里以zh_CN.ts为例:
[Key.author]: "作者", [Key.publishedAt]: "发布于", [Key.license]: "许可协议", [Key.friends]: "友链",- 在
src/constants/link-presets.ts文件内添加以下内容:
[LinkPreset.Archive]: { name: i18n(I18nKey.archive), url: "/archive/", }, [LinkPreset.Friends]: { name: i18n(I18nKey.friends), url: "/friends/", },- 在
src/pages目录下新建friends.astro文件,填入以下内容:
---import { getEntry, render } from "astro:content";import Markdown from "@components/misc/Markdown.astro";import { friends } from "@/config";import ImageWrapper from "../components/misc/ImageWrapper.astro";import I18nKey from "../i18n/i18nKey";import { i18n } from "../i18n/translation";import MainGridLayout from "../layouts/MainGridLayout.astro";
const friendsPost = await getEntry("spec", "friends");
if (!friendsPost) { throw new Error("Friends page content not found");}
const { Content } = await render(friendsPost);---<MainGridLayout title={i18n(I18nKey.friends)} description={i18n(I18nKey.friends)}><div class="flex w-full rounded-[var(--radius-large)] overflow-hidden relative min-h-32"> <div class="card-base z-10 pl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full"> <h1 class="transition w-full block font-bold mb-3 text-3xl text-90 before:w-1 before:h-5 before:rounded-md before:bg-[var(--primary)] before:absolute before:top-[35px] before:left-[18px] before:hidden md:before:block "> 友情链接 </h1> <Markdown class="-mt-2"> <Content /> </Markdown> <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-5"> {friends.map((item) => ( <div class="friend-card overflow-hidden btn-plain scale-animation active:scale-95 h-[92px]"> <a href={item.url} target="_blank" rel="noopener nofollow" class="flex items-center gap-3 p-4 w-full h-full"> <div class="w-[60px] h-[60px] rounded-lg overflow-hidden bg-[#fff]"> <ImageWrapper src={item.avatar} class="w-full h-full"></ImageWrapper> </div> <div class="max-w-[calc(100%-5rem)]"> <div class="font-bold text-black dark:text-white">{item.name}</div> <div class="text-sm text-black/50 dark:text-white/50 line-clamp-2">{item.description}</div> </div> </a> </div> ))} </div> </div></MainGridLayout>
<style>.friend-card { @apply flex flex-initial rounded-[var(--radius-large)] bg-[var(--card-bg)] hover:bg-[var(--btn-plain-bg-hover)] transition-all duration-200;}</style>NOTE样式参考自 雾创岛-友情链接↗ ,本人进行了一定修改。
- 在
src/content/spec目录下新建friends.md文件,在里面写上友链的介绍,例如:
**欢迎各位!如需添加友链,请邮件联系我!**- 在
src/config.ts文件内添加以下内容:
export const navBarConfig: NavBarConfig = { links: [ LinkPreset.Home, LinkPreset.Archive, LinkPreset.About, LinkPreset.Friends, //... ],};- 在
src/config.ts文件的最后添加友链配置:
export const friends = [ { name: "Smaritron", url: "https://www.smaritron.top", avatar: "https://www.smaritron.top/images/avatar.webp", description: "找你找了一个世界", },];后续要新增友链只需要修改此配置即可。
至此,友情链接页面的配置已经完成。点击查看效果
Fuwari:添加友情链接页面
https://www.smaritron.top/posts/fuwari-friends-links/