建站Day2日志


建站第二天日志

操作日志:更换 Ringo 主题与问题排查

核心目标: 更换并配置新主题 Ringo,解决配置过程中遇到的技术问题。

一、主题安装与切换

选定主题:在 Hexo 主题站选择了 hexo-theme-ringo

下载主题:使用 Git 命令将主题仓库克隆到本地 themes/ringo 目录。
Bash

git clone https://github.com/HeliumOI/hexo-theme-ringo.git themes/ringo

启用主题:修改了博客根目录的 _config.yml 文件,将 theme 字段的值从 landscape 修改为 ringo

二、基础页面与内容配置

创建页面:使用 hexo new page 命令创建了 abouttags 两个独立页面。

配置菜单:修改了 themes/ringo/_config.yml 文件中的 menu 部分,添加了指向新页面的导航链接,并为页面 .md 文件添加了 type 属性。

清理内容:删除了 source/_posts 文件夹中由 hexo init 默认生成的 hello-world.md 文章。

修改站点信息:在根 _config.yml 文件中,更新了 title, author, url 等核心字段,以确保站点信息和链接生成正确。


核心概念:两个 _config.yml 的区别

理解这两个配置文件的不同作用,是高效配置 Hexo 的关键。

1. 根目录的 _config.yml

这个文件控制的是整个网站的、最根本的属性

它负责

网站的网址 (url)

网站的标题 (title)

网站的作者 (author)

文章的链接格式 (permalink)

未来要安装的全局插件(比如部署到 Git 的插件)

一句话总结:这是网站的“户口本”和“房产证”,定义了“这个网站是谁的,它在哪里”。

2. themes/ringo/ 目录下的 _config.yml

这个文件控制的是当前所使用主题的、特有的功能和样式

它负责

导航菜单里有哪些链接 (menu)

是否开启图片懒加载 (lazyload)

社交链接图标有哪些

版权声明的格式

访客统计功能的开关

一句话总结:这是 Ringo 这个主题的“个性化设置面板”,定义了“这个家要装修成什么样,有哪些定制家具”。如果换了一个主题,这个文件就作废了,需要去配置新主题的配置文件。


三、主题调试与问题解决

在配置主题过程中,遇到并解决了以下三个主要问题:

问题一: lazyload 函数渲染页面时出错 ( TypeError )

现象:访问 about 等独立页面时,hexo server 进程报错,提示无法读取 lazyload 属性。

诊断:通过分析错误日志,定位到问题出在 themes/ringo/layout/_partial/article.ejs 文件调用 lazyloadImage 函数时。

解决方案:修改了 article.ejs 文件,将 <%- lazyloadImage(post.content) %> 替换为基础的 <%- post.content %>,绕过了有问题的函数。

lazyload 功能的回顾与复盘

它的使用目的和意义是什么?

目的提升网页的初始加载速度,优化用户体验

工作原理:网页只加载当前屏幕看得到的图片,当向下滚动页面时,才开始加载后续图片。

作用:对于图片很多的文章(比如旅行游记、摄影作品集),这个功能效果显著,能大大减少访客的等待时间。

为什么禁用后对我的网站没影响?
因为我目前的页面,比如“关于”页和“Hello World”,都几乎没有图片。这个功能根本没有“用武之地”,所以自然感觉不到任何影响。

禁用它修复了什么错误?
Ringo 主题的代码有一个Bug:在渲染“关于”这种独立页面 (Page) 时,它会错误地执行 lazyloadImage 功能,但又没能正确地把配置信息传递过去,导致程序找不到配置而崩溃。

我们最初尝试在配置里 enable: false 来“关掉”它,但因为 Bug,程序甚至没去检查这个开关就直接运行了,所以依然报错。最终,我们通过直接修改模板文件 (article.ejs),把调用 lazyloadImage 函数的那行代码换掉,相当于彻底绕过了这个有问题的函数,才从根源上解决了问题。

问题二: about 页面出现多余的版权和导航模块

现象:“关于”页面底部出现了不应有的版权声明和“上一篇/下一篇”导航。

诊断:发现 page.ejs 模板默认复用了文章模板 article.ejs

解决方案

复制 article.ejs 并重命名为 about.ejs,为“关于”页创建一个专属模板。

编辑 about.ejs,删除了其中负责显示版权声明和 postnear 相邻文章导航的代码块。

修改 page.ejs,使其在渲染 about 页面时,调用新建的 about.ejs 模板。

核心概念: article.ejs vs page.ejs

article.ejs (或 post.ejs)
这是**“文章页”**的蓝图。它定义了每一篇博客文章的通用结构(标题、日期、正文、标签、评论区等)。所有放在 source/_posts 里的文章,都会套用这个模板。

page.ejs
这是**“独立页面”的蓝图,用来渲染“关于”、“标签”等非文章页面。在 Ringo 主题里,page.ejs 更像一个“调度员”**,它会检查独立页面的 type,然后决定调用哪个更具体的局部模板来完成渲染。

问题三:侧边栏副标题字体大小无法通过 custom.css 修改

现象:在自定义样式文件中添加的 CSS 规则不生效。

诊断:使用浏览器开发者工具进行调试,排查过程如下:

确认 custom.css 已被加载。

发现自定义 CSS 规则的优先级被主题默认样式覆盖。

发现即使使用 !important 强制提升优先级,样式依然被一个 element.style(内联样式)覆盖。

通过 VS Code 全局搜索,最终在 themes/ringo/layout/_partial/header.ejs 文件中定位到硬编码的内联样式 style="...font-size:10px"

解决方案:直接编辑 header.ejs 文件,删除了 <span> 标签内写死的 style 属性,使得外部 CSS 得以正常生效。


技术知识沉淀

如何学会看 Chrome 的“检查”功能?

对于目前的需求,只需要关注“样式 (Styles)”这个面板即可。

速成秘诀:

从上往下看:CSS 规则的优先级,基本是从上往下依次降低的。最上面的是最强的。

看“划掉”的线:如果一条规则(比如 font-size: 14px)上面有一道横线,就意味着它被上面某个更高优先级的规则给覆盖掉了。这是最重要的调试信息。

看来源:每条规则的右上角,都会写着它的来源,比如 ringo.css:161。这告诉我们规则写在哪个文件的第几行。

实时修改:可以直接在开发者工具里修改这些值临时预览效果,这是调试样式的最佳方式。

掌握了找到元素、查看样式、看是否被覆盖、以及来源文件这几点,就足够解决 99% 的样式问题了。

VS Code 全局搜索的使用场景

代码追踪与理解:当想知道一个特定的类名(如 .site-description)或函数名(如 lazyloadImage)在整个项目的所有文件里都在哪里被用到时,全局搜索是唯一高效的方法。

批量重构与修改:当需要批量修改某个名称或配置项时,使用全局搜索并替换,可以一键完成所有修改,安全又可靠。

学习新项目:下载一个新主题或新程序时,通过搜索里面的关键函数或变量名,可以快速地理清整个项目的代码结构和逻辑。

Hexo 项目文件结构解读

_config.yml (最重要的核心配置文件)
整个博客的“大脑”,管理网站标题、作者、URL 等全局设置。

package.jsonpackage-lock.json
Node.js 项目的“依赖清单”。package.json 记录了项目需要哪些“零件”(插件),package-lock.json 则精确锁定了每个零件的版本,保证环境一致性。

source 文件夹
存放网站所有源内容的地方。我们写的 .md 格式的文章都保存在 source/_posts 文件夹里。

themes 文件夹
存放博客的主题文件,决定了博客的外观、布局和一部分功能。

scaffolds 文件夹 (脚手架/模板)
存放文章的“模板”。当使用 hexo new "文章名" 命令时,Hexo 会复制这里的模板文件来创建新文章。

.gitignore 文件
告诉 Git 哪些文件不需要上传到代码仓库(比如 node_modules 文件夹)。

文章作者: SouNd

文章链接: https://insound.blog/2025/06/19/%E5%BB%BA%E7%AB%99%E6%97%A5%E5%BF%97Day2/

版权声明:除另有声明外,本博客文章均采用 CC BY-NC-SA 4.0 许可协议。转载请注明原作者与文章出处。

Hexo Git Netlify

建站日志Day1 «
Prev «
» 建站日志Day3
» Next
© 2025 - 2025

...... visits · ...... visitors