Claudia主题预览效果

使用框架搭建网站的一大好处就是,用户可以发挥自己的创意,利用框架修改好自己的主题,并将其开源发布。这里选取基于hexo框架的博客主题Claudia作为案例,分析主题切换的流程,以及切换后各种组件的配置,从而让网站具备更多更强的功能。里面还有一个debug的小故事~

标题:基于Hexo的博客的主题切换与功能扩展

主题切换

基本流程

hexo框架下有很多用户开发的主题,可以从主题网站找到自己喜欢的主题并配置

  1. 找到对应主题的repo,下载主题的源码,解压后放在hexo项目的themes目录下,源码之上仅保留一层目录,不要套娃
  2. 打开hexo项目的_config.yml配置文件,修改其中的themes字段,和主题的文件夹同名
  3. 按照主题的README.md里面的说明安装依赖,并配置主题_config.yml配置文件来自定义网站

一个debug的故事

在安装美观又功能强大的Claudia主题的时候,遇到了不小的问题:

该主题需要一个名为hexo-renderer-sass的依赖,这个依赖的安装遇到了不知名的错误

  1. 需要安装过程的具体日志内容,来让报错具体化,对npm的安装加上--verbose的选项来显示细节

  2. 看到细节后,发现停在一处安装,怀疑是网络问题,将npm的默认镜像源如同cnpm一样改成淘宝:

    npm config set registry http://registry.npm.taobao.org/
    

    然后可以查看确认:

    npm get registry
    

    这期间也可以考虑直接从github下载:

    npm install git+https://github.com/[username]/[repo].git
    

    修改源后发现仍不行,说明下载依赖的源码没有问题,后面的安装出现了问题,因此先恢复默认的源:

    npm config set registry https://registry.npmjs.org
    
  3. 分析之前停顿的安装,发现这里通过npm的构建工具gyphexo-renderer-sass的一个依赖调用各种build工具进行了构建。本身构建需要时间,而构建最后还遭遇了失败,因此分析失败的原因,warning不要紧,关注出现error的地方:

    在失败后构建的细节才得以输出,发现一处STL标准库兼容的问题:error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?

    观察出现error的地方,是设备中之前安装的gyp的一个头文件,备份后直接修改这个头文件,按照上面error的提示改成兼容的样式,再次构建取得成功!

这个故事告诉我们,配环境的debug需要输出日志具体信息,还要敢于修改

博客其他功能

评论区

  • utterances

    • 已经被github广泛支持的github应用,可以在Marketplace里面找到。使用github帐号授权就可以在当前repo部署的页面上使用。作为后端管理,将这个应用安装到自己的repo即可。以后可以在repoSettings->Integrations里面进行管理
    • 亮点在于,用户进行评论的同时,可以将评论转换成issue,并发布到托管网页对应的仓库,对应文章的评论区会和issue同步
    • 默认实现是先扫描是否有同名的issue,以追加的方式进行评论,不论是否closed。因此建议将不用的issue直接右下角delete
    • 如果要进行配置,可以通过官方教程,直接在该页面的选择框内点选,然后将下方的scripts放到网站的模板里,比如修改hexo主题下的layout/目录中的post.pug,就可以在框架生成的每一个博文的页面下面都启动配置好的评论区
  • Valine

    一款没有后端的评论软件,支持hexo等多种框架,也可以匿名评论,但是管理有一点麻烦

这个网站介绍了更多的在静态页面上添加评论系统的方法

搜索

  • hexo-generator-search

    一个nodejs模块,可以支持博客的全文搜索,在hexo下一个小小的缺点是无法搜索写在title的标题

代码高亮

将项目目录下的_config.ymlhighlightprismjsenable都调为false,剩下的交给浏览器,效果就很不错

参考教程

How to install an npm package from GitHub directly

utterances

Valine

代码高亮|Hexo

Haojen/hexo-theme-Claudia

Various ways to include comments on your static site