← 回到首页

Ato Paper:把博客写回纸上

Ato Paper 是一款为 Typecho 1.3.0 制作的纸张风个人博客主题。它追求的核心体验很简单:让你的读者安静地阅读,让你作为站长安静地书写。没有花哨的动效堆砌,没有需要反复折腾的复杂配置——打开页面,就像展开一张温暖的纸。

面向 PHP 7.4 或更高版本,推荐使用较新的 Chrome、Edge、Firefox 或 Safari 访问。

https://github.com/liuqi19990825/Ato-Paper


安装与启用

将完整的 AtoPaper 文件夹上传到 Typecho 的 /usr/themes/ 目录。进入 Typecho 后台"控制台 → 外观",你会看到主题截图(主题根目录附带了经过压缩的预览图),点击启用 Ato Paper 即可。

启用后进入"设置外观",这里是主题唯一需要你打理的地方:填写首页文案、插图、社交链接和备案信息。ICP 与公安备案号按填写状态显示,没填的项目不会输出占位文字,保持页面干净。


关于纸张风:字体与排版

Ato Paper 的"纸张感"不止于视觉配色。主题自托管了 Noto Serif SC(用于正文、标题与品牌字)和 Noto Sans SC(用于导航、表单和辅助信息),统一了 Windows、macOS、Android 与 iOS 上的阅读体验——不再受各平台系统字体差异的困扰。

字体文件随主题一起提供,不会向 Google Fonts 或任何外部 CDN 发起请求。中文字体按 unicode-range 拆分为小型 WOFF2 文件,浏览器只下载当前页面实际出现的字符分片,而不是一次性加载整套字体。拉丁基础分片会在页面头部预加载以减少首屏闪烁,同时使用 font-display: swap 保证弱网下先显示系统回退字体、下载完成后再平滑切换。

如果你使用 Nginx,字体文件名带有内容哈希,适合设置长期缓存。在现有静态资源规则中为 .woff2 加上长期 expires 就够了,不要为此额外创建重复的 location /

桌面端首页、文章与独立页面共用 920px 外层框架;无目录内容居中在 720px 的阅读轨道内,开启目录时正文左置,为右侧导航留出空间。这个宽度经过反复调试,是中文长文最舒适的阅读节奏。


深色模式

主题内置深色模式并自动记忆本地偏好。手动切换后,如果博客被安装到手机桌面,系统主题色也会同步更新。桌面端的主滚动条使用与纸张配色一致的窄轨道和圆角滑块,深色模式下同步适配。


首页配置

首页侧栏"关于"区域可跳转到你的独立页面,社交与 RSS 链接使用更易读的字号和点击区域。侧栏 RSS 后方还提供快捷后台入口,方便你随时进入管理。

首页补充文字支持两种模式:手动填写固定文案,或者接入一言 API 展示随机短句(API 失败时自动显示手动备用文字,不会留白)。一言长句使用独立引文排版,自动合并重复的作者与作品来源。

页脚结束语与右侧补充文字可在后台独立设置。页头标题旁的小图标有小花、樱花、星芒、爱心、四叶草、蝴蝶结与音符可选。


文章写作与高级选项

像往常一样用 Markdown 写文章。编辑文章时展开高级选项,你会看到几个可选字段:

「首页"今天的片段"」——填写后首页会优先显示这段文字作为摘要;留空时自动截取正文前 62 个字符。

「文章副标题」——在文章标题下方以更小的字号呈现,适合补充性说明。

「文章题图 URL」与「题图说明」——为文章添加头图和图注。

「章节目录」——手动开启后,主题会读取正文中的二级、三级标题,在宽屏右侧生成导航目录。目录中长标题会自然换行,二级标题使用圆点、三级标题使用支线明确区分层级。

「正文首字放大」——开启后只放大正文第一个段落的首字,营造书页感。

这些字段全部可留空,不影响正常发布。副标题和题图仅用于文章模板;目录与首字放大同时支持普通独立页模板。


碎碎念页面

碎碎念是 Ato Paper 的特色功能,让你在正式文章之外有一个轻量记录日常的空间,使用 Typecho 原生文章发布,不需要每次进主题设置手动编辑。

设置方法:

第一步,在"管理 → 分类"中新建一个分类,例如名称填"碎碎念",缩略名填 murmurs

第二步,新建或编辑一个独立页面,标题填"碎碎念",缩略名可以用 now;展开高级选项,自定义模板选为"碎碎念"。

第三步,进入"设置外观",在"碎碎念分类"中选择第一步创建的分类,确认"碎碎念页面地址"指向第二步的页面(默认是 now.html)。

之后像写普通文章一样新建文章、选择碎碎念分类后发布即可。正文支持 Markdown、图片和附件,每条碎碎念都有独立地址和原生评论。如果碎碎念不需要标题,留空即可——主题会自动隐藏 Typecho 的"未命名文档"占位标题。

启用后的自动行为:碎碎念分类的文章不会出现在首页"最近写的"文章流中,首页分页数量同步重算;首页"最近在做"便签自动摘取最新一条碎碎念;普通文章的上一篇/下一篇导航会跳过碎碎念分类;首页"随便逛逛"也会同步隐藏碎碎念分类。两种内容流不会互相穿插。

如果你从旧版本升级、暂时没有选择分类,主题会继续读取"旧版碎碎念数据(兼容)"中的 日期|标签|标题|正文 文本,升级不会丢失原有展示。完成迁移后旧数据可保留也可清空。"碎碎念每页条数"默认为 8。


友链页面

新建独立页面,标题填"友链"或"朋友们",缩略名建议用 links,展开高级选项将自定义模板选为"友链页面"。

在"设置外观 → 友链列表"中逐行维护站点信息,格式为:

站点名称|https://example.com/|https://example.com/avatar.png|一句简短的介绍

头像网址和介绍可以留空。友链以书签式纸卡呈现,页面正文会显示为卡片下方的"交换友链"纸条,可以写你的申请格式、本站信息或其他说明。发布后会自动出现在页头导航中。


父子页面导航

在 Typecho 独立页面编辑界面为某个页面选择父级后,主题会自动建立两层导航,不需要额外配置。桌面端的父页面链接可直接打开,标题旁的小箭头展开纸片式子菜单;手机端则把子页面缩进显示在父页面下方,通过小号 L 形连接角表达层级,并以较深底色标记当前页面。

普通父页面正文下方会自动列出其直接子页面,子页面标题上方显示可返回父页面的面包屑。建议不要把需要频繁访问的页面放到两层以上的深度。


评论系统

Ato Paper 使用 Typecho 原生评论与嵌套回复,在此基础上做了几处体验优化。

「联系方式输入」——默认使用"自动识别 QQ 或 Email"模式。评论表单只显示一个"联系方式"输入框,访客填入 QQ 号后会提示"已识别为 QQ"并在提交时转换为对应 QQ 邮箱,同时加载 QQ 头像;填入 Email 则使用所选邮箱头像源。QQ 号不会显示在页面上。如果你不希望接受 QQ,可在主题设置中切换为"仅使用 Email"。整个流程具有无 JavaScript 兜底,即使脚本未加载也会回退到 Typecho 原生邮箱字段。

「评论表情」——评论框下方的"表情"按钮提供三个分类:颜文字(直接插入可复制文本)、贴吧泡泡(插入 :huaji: 标记,显示时转换为主题本地图像)、Bilibili(插入 {{doge}} 标记,显示时转换为本地精灵表情)。表情以纯文本保存在数据库中,不需要开放任意评论 HTML,停用主题后原始评论文字仍可读取。Bilibili 动态表情默认静止,鼠标悬停时才播放,减少页面负担。

「头像源」——默认使用 Cravatar 国内源,也可切换到 Gravatar 官方源或自定义兼容头像源(填写以 /avatar/ 结尾的地址或包含 {hash} 占位符的模板)。"无头像时的默认图"支持 identiconmpretro 等内置样式,也可以填写公开图片直链作为兜底。


CommentNotifier 邮件通知

主题在 integrations/CommentNotifier/AtoPaper/ 目录中附带三份纸张风邮件模板:访客收到回复通知(guest.html)、站长新评论通知(owner.html)、待审核评论通知(notice.html)。

安装步骤:从 jrotty/CommentNotifier 获取插件并上传到 /usr/plugins/;在后台启用并配置 SMTP;将主题中的 integrations/CommentNotifier/AtoPaper 文件夹复制到 /usr/plugins/CommentNotifier/template/AtoPaper;在"评论邮件模板"中启用 Ato Paper;最后将 CommentNotifier 设置的"表情重载"填写为 ato_comment_notifier_emotes,这样邮件中也能正确显示主题表情。

建议先关闭异步提交、完成一封测试邮件,再按需开启异步发送。


图片灯箱与文章相册

文章和独立页面中的 Markdown 图片会自动获得看大图功能,同一页面里的图片组成一组,可通过左右按钮、键盘方向键或手机滑动连续浏览。图片的 alt 文本会作为灯箱图注:

![窗边的下午](https://example.com/photo.jpg)

如果原图较大,使用"缩略图链接原图"写法,页面先加载小图,点击后读取原图:

[![窗边的下午](https://example.com/photo-thumb.jpg)](https://example.com/photo-original.jpg)

链接到普通网页的图片不会被灯箱接管。如果某张图片不需要看大图,在 HTML 中添加 data-no-lightbox 属性即可。灯箱资源随主题本地提供,兼容 PJAX 切页后自动重新初始化。


代码高亮

Markdown 代码围栏可以显式指定语言,不写语言时主题自动识别。代码块使用 Ato Paper 自己的暖纸张样式,右上角提供一键复制按钮。Highlight.js 11.11.1 已打包在主题内,不依赖外部 CDN,兼容 PJAX 切页。对超长代码块会自动限制高开销的语言识别,避免影响页面性能。


复制正文时追加出处

这个功能默认关闭。在"设置外观"中开启后,从文章或独立页面正文复制文字时,剪贴板末尾会自动附加作者、原文链接、来源和转载协议声明。

默认仅在复制内容达到 80 个可见字符时触发(短句保持普通复制),阈值可修改,填 0 表示任何长度都追加。中文按一个字符计算,空格和零宽字符不占字数。该功能同时写入纯文本与富文本格式,但不会处理评论、导航等界面文字,也不影响代码块的复制。


PJAX 无刷新加载

PJAX 默认开启。站内普通链接使用纸张过渡动画切换页面,评论提交、搜索、下载、站外链接和后台地址仍使用标准跳转。加载失败时自动退回完整页面刷新。

如果你之后安装的插件需要整页执行脚本,可以在主题设置中关闭 PJAX。插件开发者也可以为特定链接添加 data-no-pjax 属性,或监听 ato:page-readyato:pjax:complete 事件来重新初始化功能。


启用主题 404 页面

Typecho 会自动加载主题的 404.php,但前提是 Nginx 先将不存在的路径交给 Typecho 处理。如果浏览器显示的是 Nginx 默认 404 页面,请确认站点配置中 location / 的规则为:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

关键是把 try_files 末尾的 =404 改为 /index.php?$query_string。如果已有 location /,修改它而不要新建第二个。保存后运行 nginx -t 确认无误再重新加载。主题根目录附带 nginx-typecho.conf.example 供参考。

配置生效后,不存在的地址仍会返回正确的 HTTP 404 状态码,但页面会使用 Ato Paper 的纸张风设计,并提供站内搜索、返回首页与最近文章入口。


安装到手机桌面

主题附带 manifest.json 和 192px/512px 安装图标。用 Chrome 将博客安装到桌面后,会以 standalone 模式打开,纸张色填充状态栏和启动背景。从旧版本升级后,建议先卸载此前添加的桌面图标再重新安装,以免浏览器沿用旧的安装清单。


主题特色总结

Ato Paper 的设计哲学是「少即是多」:所有前端资源(字体、高亮、灯箱、表情)都随主题本地提供,不依赖任何外部 CDN 或在线服务;PJAX、深色模式、复制出处等功能全部可以在后台一键开关;碎碎念、友链、父子页面等结构完全基于 Typecho 原生能力扩展,不引入额外数据库表或专用插件依赖。

它给你一个安静的、排版精致的书写空间,同时把所有可能需要调整的开关集中在"设置外观"一个页面。纸张不需要教程,拿起笔就好。


兼容性

面向 Typecho 1.3.0 开发,需要 PHP 7.4 或更高版本,推荐使用较新的 Chrome、Edge、Firefox 或 Safari。

说点什么吧

0 条留言

这里还很安静。愿意的话,留下第一句话吧。