自娱自乐,我的博客(四)——Hexo文章管理
自娱自乐,我的博客(四)——Hexo文章管理
前言:
阅读这篇文章我能学到什么?
通过Hexo搭建一个博客网站并不算难,网站搭建好后如何规范的管理我们的文章,如何维护它们也是一个问题。
1 资源文件和文章的存储位置
为了对文章进行分类管理,我们可以在Hexo根目录的source/_posts文件夹下手动创建文件夹将md文件放在文件夹里,但是对应的资源文件比如图片全部放在source/images文件夹下显得过于杂乱,最好是对应上md文件。为了实现分类管理需要修改_config.yml文件的配置。
1 | post_asset_folder: true |
配置之后可以在Hexo根目录通过执行指令
1 | hexo new post title |
之后会自动在source/_posts目录下创建一个title文件夹,该文件夹内有title.md文件和title文件夹,其中同名文件夹是用来存储图片了。
为了不理会图片文件的路径,在md内可以通过如下语句导入图片而不使用md的语法。
1 | {% asset_img example.jpg This is an example image %} |
该语法指明了图片名称以及鼠标悬停时的描述信息。不过这种方法有个缺点,在markdown编辑器中无法预览图片。
Hexo默认是将md文件生成的网页按日期分类的,我们也可以修改它。
1 | permalink: /docs/:title/ |
这样所有的md转换出的网页文件都将放在docs目录下,并且按标题分类。
2 兼容Markdown编辑器和网页预览的图片插入方式
使用Hexo比较头疼的一点是在md文件中以Markdown语法 
插入图片,到了网页版就无法预览,或者反过来使用Hexo能解析的标签 {% asset_img example.jpg This is an example image %}
但在Markdown编辑器中就无法正常预览。对此我找到了一个能解决这个问题的插件,它会自动转化路径,这样对于我们来说正常写Markdown语法就行了。
在博客根目录执行指令安装插件cnzsb/hexo-asset。
1 | npm install hexo-asset --save |
另外,请确保_config.yml文件的配置如下。
1 | post_asset_folder: true |
之后md中正常使用Markdown语法插入图片,最终的网页也会正常显示图片,比如。
1 |  |
需要在你的*.md文件所在目录创建一个同名的文件夹,该文件夹里放入图片。上面路径中的 title 即为*.md文件名,一般也是文章的标题。还有一种办法就是使用图床,网页通过在线加载形式就能兼容本地和网页同时可见。
注意:cnzsb/hexo-asset这款插件还不太成熟,目前存在一个Bug(2020.08.25)。当markdown语法找不到路径下的图片时(不管图床图片还是Hexo图片),会导致图片之前的内容被重现加载,使得网页内容多次重复显示。所以请谨慎使用,不用时请卸载。
Front-matter
我们写的文章需要放在Hexo根目录下的source/_posts目录下,可根据专题分类创建文件夹分类放,但是如何在网页上实现文章分类并给文章打上标签呢。这时候需要用到 Front-matter 配置。它是放在md文件开头能被Hexo解析识别的一种语法,写在 ---
之间,常用参数有如下几种。
参数 | 默认值 | 描述 |
---|---|---|
layout | - | 布局 |
title | 文件名 | 标题 |
date | 文件创建时间 | 创建时间 |
updated | 文件更新日期 | 更新时间 |
comments | true | 开启文章的评论功能 |
tags | - | 标签(不适用于分页) |
categories | - | 分类(不适用于分页) |
permalink | - | 覆盖文章地址 |
Front-matter在浏览文章时不会显示。
在我们对文章分类前,还需要为网站创建一个标签页page和分类页page。在Hexo根目录下执行指令进行创建。
1 | hexo new page tags |
1 | hexo new page categories |
执行指令后Hexo会帮我们在source目录下创建相应的文件夹和文件。我们对文件Front-matter进行修改。打开source/tags/index.md文件进行如下修改。
1 | --- |
打开source/categories/index.md文件进行如下修改。
1 | --- |
如果我们要给一篇文章指定分类和标签,只需要在md文件开头的Front-matter中如下这样写。
1 | --- |
Hexo将会自动对属于同一categories的文章进行归类,并且可按tags进行分类和查找文章。我们可以为一篇文章添加多个tags,可添将一篇文章添加到多个categories里。
1 | --- |
如果这样写那么这篇文章将会包含两个标签,同时属于 分类一
和 分类二
两个分类下,并且 分类二
为 分类一
下的一个子分类。子分类还可以用这样写。
1 | --- |
作用与上一中完全相同,表明了文章同属于两个分类,且 分类二
是 分类一
的子分类。更推荐用list的形式写子分类,或者以后写分类都用list形式(带上“[]”符号)。
如果 分类一
和 分类二
是同级分类不存在父子关系则需要这样写。
1 | --- |
现在让我们写更多的文章进行分类管理吧。