--- title: 如何为NotionNext Hexo主题添加文章封面图 date: 2024-02-09 12:00:00 categories: ["百草园"] tags: - 教程 - 博客 - Javascript - NotionNext summary: 为 NotionNext 的 Hexo 主题添加头图。 description: 本文记录了作者为 Hexo 主题 NotionNext 添加文章详情页封面图的过程。受 Matery 主题启发,作者通过修改 PostHeader.js 文件,成功实现了封面图的显示,并调整了背景透明度和样式。为优化性能,作者还关闭了 Live2D 看板功能。最终,作者通过多次尝试解决了封面图加载问题,实现了美观的文章详情页设计。 slug: how-to-add-header-img-to-notionnext-hexo --- 嗨,大家好,我是 Chlorine. 先行给大家拜个年 🎉 晚上我会发完整的拜年公告的~ 本期依然是寄术力不高的瞎折腾,内容是为 NotionNext 的 Hexo 主题文章详情页添加封面图。如果您是精通 JS 的大佬,请略过. 在刚开始使用 NotionNext 的时候,我最喜欢的是 Matery 主题,有着很漂亮的 Hero 图和文章卡片。但是随着时间的推移,能显示作者介绍,整合类 Algolia 搜索的 Hexo 主题开始渐渐更得我心,更别提 Matery 每次进入文章页面文章内容还会灵性地左移一下,于是我把主题换成了 Hexo. 但是我很快发现了一个问题:**Hexo 主题没有文章封面图**. 容我解释一下: 文章卡片两个主题都是有的,但是在文章详情页,二者的表现有所不同:   显然是有封面图显示更漂亮. 而加封面图这种小事也不好意思去麻烦人家开发大大,于是我决定自力更生. 我们进入 Github, 找到 `themes/hexo` 文件夹,这里就是 Hexo 主题的配置文件夹. 我一向不喜欢 Hexo 显示 categories 的功能,因此在一顿试探之后,我发现了控制这个功能的代码,位于 `config.js` 中: ```js HEXO_HOME_NAV_BUTTONS: true, // 首页是否显示分类大图标按钮// 已知未修复bug, 在移动端开启true后会加载不出图片; 暂时建议设置为false。 HEXO_HOME_NAV_BACKGROUND_IMG_FIXED: false, // 首页背景图滚动时是否固定,true 则滚动时图片不懂动; false则随鼠标滚动 ; // 是否显示开始阅读按钮 HEXO_SHOW_START_READING: true, ``` 好好好,更有理由改成 false 了 🤣 我猜测,加入头图之后很可能加重加载负担,因此我把 live2D 的看板关了. 在我们的中心配置文件 `blog.config.js` 中第 205 行左右的位置找到: ```js // 悬浮挂件 WIDGET_PET: process.env.NEXT_PUBLIC_WIDGET_PET || true, // 是否显示宠物挂件 WIDGET_PET_LINK: process.env.NEXT_PUBLIC_WIDGET_PET_LINK || 'https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json', // 挂件模型地址 @see https://github.com/xiazeyu/live2d-widget-models WIDGET_PET_SWITCH_THEME: process.env.NEXT_PUBLIC_WIDGET_PET_SWITCH_THEME || true, // 点击宠物挂件切换博客主题 ``` 把 `WIDGET_PET: process.env.NEXT_PUBLIC_WIDGET_PET` 那行改成 false 即可. 下面正式进入魔改环节。作为不会 JavaScript 的小杂鱼,我采取的依然是魔改 Typora 主题时的方法: 瞪眼法. 我仔细观察了整个 hexo 文件夹的结构,最后从名字上猜测 `components/PostHeader.js` 很可能与这件事有关. 点进去,发现 21 行左右这块很可能和头图有关: ```js const headerImage = post?.pageCover ? post.pageCover : siteInfo?.pageCover return (