558 字
3 分钟
Fuwari:添加友情链接页面

前言#

Fuwari 是一款极其纯粹、极简的 Astro 博客主题,但是并没有内置专用的友情链接页面。 本文将记录我添加一个功能完备的友链页的过程。

参考来源

创建友链页面#

  1. src/types/config.ts 文件内添加以下内容:
src/types/config.ts
export enum LinkPreset {
Home = 0,
Archive = 1,
About = 2,
Friends = 3,
}
  1. src/i18n/i18nKey.ts 文件内添加以下内容:
src/i18n/i18nKey.ts
home = "home",
about = "about",
archive = "archive",
friends = "friends",
search = "search",
  1. src/i18n/languages 目录中编辑博客使用的语言文件,添加一个Key。这里以 zh_CN.ts 为例:
src/i18n/languages/zh_CN.ts
[Key.author]: "作者",
[Key.publishedAt]: "发布于",
[Key.license]: "许可协议",
[Key.friends]: "友链",
  1. src/constants/link-presets.ts 文件内添加以下内容:
src/constants/link-presets.ts
[LinkPreset.Archive]: {
name: i18n(I18nKey.archive),
url: "/archive/",
},
[LinkPreset.Friends]: {
name: i18n(I18nKey.friends),
url: "/friends/",
},
  1. src/pages 目录下新建 friends.astro 文件,填入以下内容:
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

样式参考自 雾创岛-友情链接 ,本人进行了一定修改。

  1. src/content/spec 目录下新建 friends.md 文件,在里面写上友链的介绍,例如:
src/content/spec/friends.md
**欢迎各位!如需添加友链,请邮件联系我!**
  1. src/config.ts 文件内添加以下内容:
src/config.ts
export const navBarConfig: NavBarConfig = {
links: [
LinkPreset.Home,
LinkPreset.Archive,
LinkPreset.About,
LinkPreset.Friends,
//...
],
};
  1. src/config.ts 文件的最后添加友链配置:
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/
作者
Smaritron
发布于
2026-02-28
许可协议
CC BY-NC-SA 4.0