cover

走马

陈粒

隐藏封面图

661 字
3 分钟
隐藏封面图
AI 摘要

添加类型定义#

文件路径:src/types/config.ts

// 文章列表布局配置
postListLayout: {
allowCoverSwitch?: boolean; // 是否允许用户切换文章封面图显示
showCover?: boolean; // 默认是否显示文章封面图
};

添加配置项#

文件路径:src/config/siteConfig.ts

postListLayout: {
allowCoverSwitch: true, // 新增:允许切换封面图显示
showCover: true, // 新增:默认显示封面图
},

设置工具函数#

文件路径:src/utils/setting-utils.ts

// 获取默认封面图显示状态
export function getDefaultPostCoverImageEnabled(): boolean {
return siteConfig.postListLayout.showCover ?? true;
}
// 从localStorage读取封面图显示状态
export function getStoredPostCoverImageEnabled(): boolean {
if (
typeof localStorage === "undefined" ||
typeof localStorage.getItem !== "function"
) {
return getDefaultPostCoverImageEnabled();
}
const stored = localStorage.getItem("postCoverImageEnabled");
if (stored === null) {
return getDefaultPostCoverImageEnabled();
}
return stored === "true";
}
// 设置封面图显示状态
export function setPostCoverImageEnabled(enabled: boolean): void {
if (
typeof localStorage === "undefined" ||
typeof localStorage.setItem !== "function"
) {
return;
}
localStorage.setItem("postCoverImageEnabled", String(enabled));
applyPostCoverImageEnabledToDocument(enabled);
if (typeof window !== "undefined") {
window.dispatchEvent(
new CustomEvent("postCoverImageChange", {
detail: { enabled },
}),
);
}
}
// 将封面图状态应用到文档
export function applyPostCoverImageEnabledToDocument(enabled: boolean): void {
if (typeof document === "undefined") {
return;
}
document.documentElement.setAttribute(
"data-post-cover-enabled",
String(enabled),
);
}

添加设置面板开关#

文件路径:src/components/controls/DisplaySettingsIntegrated.svelte

导入相关函数#

  • 在文件顶部导入新添加的工具函数:
import {
// ... 其他导入
getDefaultPostCoverImageEnabled,
getStoredPostCoverImageEnabled,
setPostCoverImageEnabled,
applyPostCoverImageEnabledToDocument,
} from "@utils/setting-utils";

添加状态变量#

  • 在脚本部分添加以下状态变量:
const defaultPostCoverImageEnabled = getDefaultPostCoverImageEnabled();
const isPostCoverImageSwitchable = siteConfig.postListLayout.allowCoverSwitch ?? true;
let postCoverImageEnabled = $state(true);

添加切换函数#

  • 添加切换封面图状态的函数:数:
function togglePostCoverImageEnabled() {
postCoverImageEnabled = !postCoverImageEnabled;
setPostCoverImageEnabled(postCoverImageEnabled);
}

在 onMount 中初始化状态#

// 从localStorage读取文章封面图状态
postCoverImageEnabled = getStoredPostCoverImageEnabled();
// 将状态应用到文档
applyPostCoverImageEnabledToDocument(postCoverImageEnabled);

添加开关 UI#

  • 在 HTML 模板部分(布局切换区域后)添加:
<!-- Post Cover Image Switch Section -->
{#if isPostCoverImageSwitchable}
<div class="mt-2 mb-2">
<div class="flex gap-2 font-bold text-lg text-neutral-900 dark:text-neutral-100 transition relative ml-3 mb-2
before:w-1 before:h-4 before:rounded-md before:bg-(--primary)
before:absolute before:-left-3 before:top-1/2 before:-translate-y-1/2"
>
{i18n(I18nKey.postCoverImage)}
<button aria-label="Reset to Default" class="btn-regular w-7 h-7 rounded-md active:scale-90"
class:opacity-0={postCoverImageEnabled === defaultPostCoverImageEnabled}
class:pointer-events-none={postCoverImageEnabled === defaultPostCoverImageEnabled}
onclick={() => {
postCoverImageEnabled = defaultPostCoverImageEnabled;
setPostCoverImageEnabled(defaultPostCoverImageEnabled);
}}>
<div class="text-(--btn-content)">
<Icon icon="fa7-solid:arrow-rotate-left" class="text-[0.875rem]"></Icon>
</div>
</button>
</div>
<div class="space-y-1">
<button
class="w-full btn-regular rounded-md py-2 px-3 flex items-center gap-3 text-left active:scale-95 transition-all relative overflow-hidden"
class:bg-(--btn-regular-bg-hover)={postCoverImageEnabled}
onclick={togglePostCoverImageEnabled}
>
<Icon icon="material-symbols:image" class="text-[1.25rem] shrink-0"></Icon>
<span class="text-sm flex-1">{i18n(I18nKey.postCoverImage)}</span>
<div class="w-10 h-5 rounded-full transition-all duration-200 relative"
class:bg-(--primary)={postCoverImageEnabled}
class:bg-(--btn-regular-bg-active)={!postCoverImageEnabled}>
<div class="absolute top-0.5 w-4 h-4 bg-white rounded-full shadow transition-all duration-200"
class:left-0.5={!postCoverImageEnabled}
class:left-5={postCoverImageEnabled}></div>
</div>
</button>
</div>
</div>
{/if}

添加样式控制#

文件路径:src/components/layout/PostCard.astro

/* === Hide Post Cover Image === */
/* 当 data-post-cover-enabled="false" 时隐藏封面图 */
:global([data-post-cover-enabled="false"]) .post-card-image {
display: none !important;
}
:global([data-post-cover-enabled="false"]) .has-cover {
&.post-card-wrapper {
.post-card-content {
width: calc(100% - 52px - 12px) !important;
}
}
}
:global([data-post-cover-enabled="false"]) .has-cover .post-card-enter-btn {
display: flex !important;
}

语言配置#

  • 文件路径:src/i18n/i18nKey.ts
postCoverImage = "postCoverImage",
  • 文件路径:src/i18n/languages/en.ts
[Key.postCoverImage]: "Post Cover Image",
  • 文件路径:src/i18n/languages/ja.ts
[Key.postCoverImage]: "記事のカバー画像",
  • 文件路径:src/i18n/languages/ru.ts
[Key.postCoverImage]: "Обложка поста",
  • 文件路径:src/i18n/languages/zh_CN.ts
[Key.postCoverImage]: "文章封面图",
  • 文件路径:src/i18n/languages/zh_TW.ts
[Key.postCoverImage]: "文章封面圖",

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
隐藏封面图
https://my-firefly-blog-dpzi92pofgva.edgeone.cool/blog/HideCoverImage/
作者
R1ng13
发布于
2026-06-03
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
集成朋友圈与笔记本功能
Firefly 本教程详细介绍如何将朋友圈(Moments)和笔记本(Notebooks)功能集成到项目中,数据存储在 GitHub Gist 中。
2
归档统计
Firefly 最近在折腾博客的归档统计功能,从获取归档列表开始,一路写到更新内容的工具函数、类型定义,再到多语言配置的拆分与管理——每一处改动都为了让归档页更清晰、更易维护,也顺便理清了自己代码里的逻辑脉络。
3
给博客增加单个和全部分类页面
Firefly 最近给博客加了个小功能:点击分类名就能跳转到该分类下的所有文章,还能一键查看全部分类列表——整个过程其实挺顺的,从创建页面、写 URL 工具函数,到更新导航栏和多语言支持,一步步配下来,连分类链接都自动带上了本地化路径,现在逛自己博客像逛图书馆一样清爽 😄
4
恋爱计时组件
Firefly 最近给博客加了个小彩蛋——「恋爱计时组件」,从零撸了一个记录纪念日的小工具。写了组件代码、配了全局注册、还兼顾了桌面端侧边栏和移动端的显示逻辑,连 TypeScript 类型定义和双方昵称/日期的配置项都琢磨得挺细。虽然只是个轻量小功能,但每次看到倒计时跳动,心里都悄悄甜一下 😊
5
Umami 访问统计卡片
Firefly 最近给博客侧边栏加了个小彩蛋——Umami 访问统计卡片,不用后端、不破风格,数据实时还带点击跳转。整个过程就是在 Firefly 主题里新建一个组件,填入 Umami 的分享链接,系统自动解析 API 和 Token,再配个备用数据兜底。连统计周期都能按需调,比如改成最近 30 天,改个毫秒数就完事~现在每次打开博客,侧边栏都默默告诉我:“今天又被看了好多眼”。
随机文章 随机推荐

评论区

Profile Image of the Author
R1ng13
Hello, I'm R1ng13.
📢 欢迎来访者
👋🏻 Hi,我是R1ng13,欢迎您!
分类
标签
站点统计
文章
11
分类
2
标签
5
总字数
4,867
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne
博客版本
Firefly v6.12.3
文章许可
CC BY-NC-SA 4.0
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
我和宝宝在一起已经
---------TSH ❤️ CXY---------
---------TSH
❤️
CXY---------
0 0 0 0 0 00
✨ 今日一言
" 山重水复疑无路,柳暗花明又一村。 "
—— 陆游
天气预报
统计

文章目录

✨️ 复制成功,转载请标注本文地址