官网上的参数说明不是很详细,尤其是在具体写法上没有合适的参考。
本文将以.\scaffolds\post.md
为例,对updated
、permalink
等参数进行讲解。
打开.\scaffolds\post.md
文件,默认参数如下:
---
title: {{ title }}
date: {{ date }}
tags:
---
当我们在命令行中输入:
hexo new ABC
则会在.\source\_post\
目录下产生一个ABC.md
文件,内容如下:
---
title: ABC
date: 2017-12-29 20:20:47
tags:
---
1. 如何设置permalink?
修改.\scaffolds\post.md
,增加一个permalink
属性:
---
title: {{ title }}
date: {{ date }}
tags:
permalink:
---
让permalink
为空,则Hexo会使用默认设置。默认设置是什么呢?就是你的根目录下的_config.yml
中定义好的内容:
:year
表示年份,:month
表示月份,:date
表示日期。最终的展示效果为https://likianta.coding.me/2017/09/04/title/
这种形式。
你也可以把图中的斜杠改为短横线,效果会变成https://likianta.coding.me/2017-09-04/title/
。
当然还有其他改法,比如我将默认设置改成了permalink: :year/:category/:title
,其最终的网址就是https://likianta.coding.me/2017/xx分组/xx标题
。
还是以hexo new ABC
为例,我们查看ABC.md
文件,会发现其内容如下(categories
是我设置的分类,不知道怎么创建分类或标签的各位可以参考附录里的链接):
---
title: ABC
date: 2017-12-29 20:20:47
categories: uncatalog
tags:
permalink:
---
有些人会疑惑为什么permalink
不能像date
一样显示为具体的链接呢,具体原因我也不清楚。但并不影响我们server
或deploy
后的网页效果:
另外需要注意的是,.\scaffolds\post.md
中的permalink
请一定要留空。
官网中虽然说.\scaffolds\post.md
中的permalink
内容可以覆盖根目录的默认设置,但实测发现会引起网址bug(这个问题在Github中也有相关的讨论)。
比如说你在.\scaffolds\post.md
中修改为:
permalink: :year:month/:title
Hexo会误把它当成一个字符串进行解析,结果就会生成:https://likianta.coding.me/2017/09/04/:year:month/:title/
(一个错误的URL路径)。
不过如果我们在具体的文章中手动写上的话是不会报错的:
.\source\_post\ABC.md
:
---
title: ABC
date: 2017-12-29 20:20:47
categories: uncatalog
tags:
permalink: https://likianta.coding.me/2017/12/29/ABC/
---
(PS:即便你把这篇文章的网址写错了,比如“2017”错写成“2018”,Hexo在解析时也不会报错。具体原因尚不清楚,可能是这个permalink纯属给自己看的吧。)
2. 如何修改date的日期格式使其只显示年月日,不显示时间?
我在网上没有找到修改方法,另外也不建议去修改它。
很多人有这个疑问是担心自己手动创建文章时还要输入一个具体时间会感到很麻烦,事实上这是非强制的选项——即便你只写日期不写时间,也不会影响博客生成正确的创建时间。
不过连日期都不写的话命令行会报错的,所以日期请不要省略。
PS:另外也不要在.\scaffolds\post.md
或你的具体的文章头使用date: :year-:month-:date
来定义,这个方法同样会报错,它和之前的permalink
问题一样,会被解析为一个普通字符串,从而将你导向一个无法访问的URL。
3. 如何设置updated参数?
在.\scaffolds\post.md
中修改为:
---
title: {{ title }}
date: {{ date }}
updated: {{ date }}
tags:
permalink:
---
具体效果不知道有没有用。因为一般来说文章的创建日期和更新日期是相同的。
有些人可能想到,如果我先在草稿(drafts)中写好,然后半小时后用hexo publish ABC
把它转送到_posts
文件夹,那么updated
会不会变成半小时后的时间呢?
实际测试的结果是Markdown文档中的updated
与date
相同,都是半小时前的。
所以这个似乎只是用来手动修改的。
4. 我不想让我的网址中出现空格或者中文字符,并且想要使用全英文URL,具体该怎么设置?
首先可以放心的是你的URL路径是不会出现空格的,Hexo会自动把标题、分类等字符中会出现空格的地方用短横线-
来代替。
看看你的_posts\
目录会发现,凡是文内标题有空格的,其文件名都用短横线来代替了:
Hexo就是根据文件名来作为URL中的:title
参数的。
即便你修改了文内标题,只要文件名没变,那么你的网址路径是不会变的。
了解了这点之后,相信你也知道怎么让URL的路径是全英文了:只需把文件名改成英文就可以了。
不过你以为这样就解决了吗?其实这个是最麻烦的方法,还有一个方法可以让这项工作简单百倍。
使用文章id来取代title
请跳转查看此文章:https://blog.csdn.net/Likianta/article/details/79343427
附录:一些比较简单的知识补充
能看到这篇文章的大家应该对开启分类、标签的方法应该都懂得,所以本篇文章没有讲解这些知识。不过放了方便大家回顾这些知识,下面的这些链接会有帮助:
如何开启分类功能:
- category - hexo分类与tags配置 - SegmentFault https://segmentfault.com/q/1010000002561642
- Hexo使用攻略:(四)Hexo的分类和标签设置 | { GoonX } https://ijiaober.github.io/2014/08/05/hexo/hexo-04/
相关阅读
- Front-matter | Hexo https://hexo.io/zh-cn/docs/front-matter.html
- Post level permalink does not override site config · Issue #1608 · hexojs/hexo https://github.com/hexojs/hexo/issues/1608