Posted on 

Hexo新建单篇通用模板

Hexo历险记之十一新建单篇通用模板

Hexo历险记之十一新建单篇通用模板 - 简书

前言

经过前面的所有文章,你其实已经可以出门对别人讲,我是个博主,你可以从我的域名访问到我的博客。

本篇文章是着重细说,如何使用自定义模板,新建单篇博客。

注意:本文具体文档只针对hexo@4.2,最新的hexo@5.0我还没用过,不做保证。

时隔四年,重启Hexo历险计划!

img

Hexo历险记之十一新建单篇通用模板


相当长的一段时间内,在_drafts文件夹内复制旧有的博客,然后修改Front-matter信息。其实本质上来说,我这么做是没有错误的。但是总会遇到那么一种没脑子的情况,我自己忘记做拷贝,直接将快完成的一篇三千字文章给全部删除了,写了新的内容……

所以才开始求变,才开始了解原来Hexo是怎么用模板创建文章的。

新建单篇博客

默认模板

言归正传,一开始的时候,我其实就从官方文档里面了解到,可以用命令新建文档。

1
hexo new test-1

于是Hexo就会根据博客根目录的配置文件的配置,从模板文件夹\scaffolds内去匹配模板draft.md文件,在\_draft文件夹内生成命名为test-1.md的MD文件。

img

image-20210118193800402

img

image-20220729205448736

自定义模板

仔细了解hexo的帮助命令后,知道可以使用自定义的模板。

所以,我们完全可以新建不同的模板,来给不同的文章系列规定不同的样式表,下面用我自己的CPP模板做例子。

新建文件\scaffolds\cpp.md

1
---layout: cpptitle: {{ title }}date: {{date}}author: 君匡typora-root-url: ../tags:  - javacategories:  - Java---<!--more-->## 感谢感谢现在努力的自己。

注意:一定要在front-matter 中加上字段layout: cpp。用这个方式来指定文件所对应的模板。

生成博客

1
hexo new cpp test-3 --path=../_drafts/test-3
  • cpp:是扫描了模板文件夹下指定的模板
  • test-3:指定了生成文件的名称
  • --path:可以为空,会自动生成到_post文件夹内的;可以为路径,指明生成的文件夹。

脚本优化

正如我之前所说的,把他做成可运行的脚本,那么适当的美化是很重要的吧!

Windwos系统

在任意位置新建文件新建CPP博客.bat,内容如下。

1
@echo off color 74echo.    ******************************************************************echo.echo.    辛勤的君匡大人,欢迎新建CPP博客!echo.echo.    ******************************************************************echo.  echo.  cd F://myblogset /p name=请输入新建的博客名称:hexo new cpp %name% --path=../_drafts/%name% 

img

image-20210118201345529

至于更加风骚的模板就要自己开动脑筋了哦。

mac系统

这个系统默认使用的是zsh,所以不能使用bat脚本了,必须要使用sh脚本了。

1
#!/bin/zshfunction hncpp(){  # hexo new cpp ****       cd /Volumes/KeenMacPlus/Blog/0Local       echo "辛勤的君匡大人,欢迎新建CPP博客!"       hexo new cpp  "$1" --path=../_drafts/"$1"}

在配置文件中/Users/keen/.zshrc中修改,实现自动加载该文件,内容如下。

1
source /Volumes/KeenMacPlus/Blog/0Local/source/+Bat+Sh/hexo.sh

于是想要写新博客的时候,只需要在任何路径下运行以下命令即可生成新一篇博客。

1
hncpp test-4

img

image-20220729215458594

插件适配

在平时我们不显式标明的话,在渲染的时候layout字段是自动填成post的。然后诸多插件共同努力完成渲染,生成页面。

而因为我这次使用了自定义的模板文件,layout就不是post了,一些默认只针对layout: post的插件就失效了。

举例来说,就是hexo-abbrlink

解决办法有两个,一个就是在手动移动md文件的时候直接删除该条信息,回归默认。

另一个,就是手动修改插件的内部逻辑,当然,非老司机不建议。而我此时脑袋里冒出了一个大胆的想法,我为什么不能基于原插件进一步开发一个新的插件?


事实证明,我做到了,公布了插件hexo-abbrlink3,详细过程介绍就留在下一篇内容。

感谢

感谢现在努力的自己。