布局的概念
Hexo 有三种默认布局:post、page 和 draft,它们分别对应不同的路径,而您自定义的其他布局和 post相同,都将储存到 source/_posts 文件夹。
布局 | 路径 |
---|---|
post | source/_posts |
page | source |
draft | source/_drafts |
注意:
可以设置md文章中的layout为false,这样该文章将不被处理
通过使用不同布局,md文章文档将生成至对应文件夹
模板的概念
在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件,例如:
1 | $ hexo new photo "My Gallery" |
在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章
草稿的概念
使用draft布局新建的文章即为草稿,可以通过public命令将草稿移动到source/_post文件夹内。草稿默认不会显示在页面,但是可以在执行时加上 –draft参数或者在配置文件中把render_drafts设置为true。
文件名称
文件名可以在配置文件中去设置,可使用参数如下:
变量 | 描述 |
---|---|
:title | 标题(小写,空格将会被替换为短杠) |
:year | 建立的年份,比如, 2015 |
:month | 建立的月份(有前导零),比如, 04 |
:i_month | 建立的月份(无前导零),比如, 4 |
:day | 建立的日期(有前导零),比如, 07 |
:i_day | 建立的日期(无前导零),比如, 7 |
例如:在配置文件中可以设置文章的永久链接格式permalink: :year/:month/:day/:title/ # 网站的永久链接格式
例如:在配置文件中可以设置文字默认名称的格式new_post_name: :category/:title.md # 新建md文档时生成的文件路径和文件名称指定
至于永久链接和new_post_name的具体用法请继续往下看。
创建文章
通常我们创建文章是需要指定布局和模板的
例如:hexo new post “hello word” #使用post布局,并使用post模板创建md文档,文档将被保存至source/post文件夹
例如:hexo new myScaffold “hello word“ #使用myScaffold目标创建md文档,那么此时文档的默认布局为_config.yml配置文件设置的布局,默认为post
创建分页
从”二、hexo结构简介“我们知道,hexo中的source文件夹存放我们编辑的原始md文章文档,那么由于布局的使用我们的md文档只能存在于_post或者_drafts或者直接source内。前两者通过post、draft布局即可实现,而如果要创建分页必须使用page布局。
我们需要明白一点,什么是分页?根据我的理解,分页是网站页面的概念,分页内可包含md文档,其范围大于md文档。例如我们通过命令hexo new page “spring”,那么将会在source创建一个spring的文件夹(如果不存在)并包含一个index.md文档,如下图:
那么创建成功的分页可以当作菜单使用,因为其本质是hexo生成的对应html连接
例如,我们可以在我们所使用的模板配置文件内设置菜单(我使用的是icarus_monkeyGeek模板,存放在themes\icarus_monkeyGeek目录,可以进入目录找到配置文件_config.yml)
当博客发布成功后点击页面中的”关于我“就会跳转到我们生成的about/index.md,当然此时hexo已经将md转为html,应该是about/index.html
值得注意的是如果我们手动在我们的分页文件夹内创建md文档,如下图:
1、即使在新创建的md文档内设置了categories和tags,那么hexo依然无法识别,即只能识别到index.md
2、手动创建的分页内部md文档,如上图的aboutTest.md是可以通过如http://localhost:4000/about/aboutTest.html来进行访问的
永久链接的多种用法
什么是永久链接?
永久链接既是我们在public文件夹内生成的html页面所对应的固定路径,简单来说就是我们博文固定的访问路径。
例如hexo将会自动根据永久链接路径来生成对应路径的html页面
永久链接可以有哪些途径设置?
- 通过_config.yml配置设置
- 通过每篇文章的Front-matter来指定
永久链接的设置参数?
变量 | 描述 |
---|---|
:year | 文章的发表年份(4 位数) |
:month | 文章的发表月份(2 位数) |
:i_month | 文章的发表月份(去掉开头的零) |
:day | 文章的发表日期 (2 位数) |
:i_day | 文章的发表日期(去掉开头的零) |
:title | 文件名称 |
:post_title | 文章标题 |
:id | 文章 ID |
:category | 分类。如果文章没有分类,则是 default_category 配置信息。 |
您可在 permalink_defaults 参数下调整永久链接中各变量的默认值:
1 | permalink_defaults: |
当您建立新文章时,文章会被储存到:
1 | $ hexo new "Hello World" --lang tw |
而网址会是:
http://localhost:4000/tw/hello-world/
利用永久路径建立文章唯一短路径
需求场景,比如我们需要针对文章添加评论功能,例如使用gitalk插件,那么由于github要求我们的当前文字path路径不能超过50字符,如果我们的永久路径太长,例如被设置为“:year/:month/:day/:category/:title.md”并且我们的title还是一大串的中文,那么在生成永久链接时必然很长,所以评论功能注定失败,此时我们需要设定唯一短路径。
如:”:year/:id”这样既能确保唯一性也可以生成短路径,满足github评论功能
new_post_name的多种用法
1、首先我们需要清楚,new_post_name是用来设置新建文章存放在_post文件夹下的文件路径
例如:在_config.yml设置new_post_name: :category/:title.md 我的目的很简单就是让自己创建的md文字可以根据文章的分类不同存放在_post内的不同文件夹内,这样方便我后期根据分类快速查找文章,可以方便进行迁移。
执行命令:hexo new post ”springDetil“ –category spring
结果:在_post文件夹下创建spring分类文件夹并包含名称为springDetil.md的文章
2、其次我们要明确new_post_name不同于永久链接,前者是设置md文档的存放路径,后者是者设置md文档所对应的html文件在public内的路径
我们可以这样理解,md文章的存放路径与html静态站点路径是两回事,两者路径可以完全不同,我们可以通过永久链接来实现自定义分类访问(模仿菜单)。
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
