写作

你可以执行下列命令来创建一篇新文章或者新的页面。

layout:布局
tltle:页面名称/文章名称


1
hexo new [layout] <title>

例如:
1
2
3
4
5
6
hexo new page hello-word-page

hexo new post hello-word-post

hexo new draft hello-word-draft


md布局介绍,参考下面的文档

布局(Layout)

Hexo有三种默认布局:postpagedraft

  • 在创建这三种不同类型的文件时,它们将会被保存到不同的路径。
  • 您自定义的其他布局和 post 相同,都将储存到 source/_posts 文件夹
布局 路径 路径
post 文章 source/_posts
draft 草稿 source/_drafts
page 文件夹+index页 source
  • 根据 _config.ymldefault_layout 的设置,默认布局是 post
  • 当文章中的布局被禁用(layout: false),它将不会使用主题处理。
  • 然而,它仍然会被任何可用的渲染引擎渲染:如果一篇文章是用 Markdown 写的,并且安装了 Markdown 渲染引擎(比如默认的 hexo-renderer-marked),它将被渲染成HTML
  • 除非通过 disableNunjucks 设置或 渲染引擎 禁用,否则无论布局如何,标签插件 总是被处理

禁用布局

如果你不希望一篇文章(post/page)使用主题处理,请在它的 front-matter 中设置 layout: false

文件名称

Hexo 默认以标题做为文件名称,但您可编辑 new_post_name 参数来改变默认的文件名称。
举例来说,设为 :year-:month-:day-:title.md 可让您更方便的通过日期来管理文章。

变量 描述
:title 标题(小写,空格将会被替换为短杠)
:year 建立的年份,比如, 2023
:month 建立的月份(有前导零),比如, 03
:i_month 建立的月份(无前导零),比如, 3
:day 建立的日期(有前导零),比如, 01
:i_day 建立的日期(无前导零),比如, 1

草稿

刚刚提到了 Hexo 的一种特殊布局:draft,这种布局在建立时会被保存到 source/_drafts 文件夹,
您可通过 publish 命令将草稿移动到 source/_posts 文件夹,
该命令的使用方式与 new 十分类似,您也可在命令中指定 layout 来指定布局。

1
hexo publish [layout] <title>

例如:

1
hexo new draft hello-word-draft

草稿默认不会显示在页面中,您可在执行时加上 --draft 参数,或是把 render_drafts 参数设为 true 来预览草稿。

模版(Scaffold)

在新建文章时,Hexo会根据 scaffolds文件夹内相对应的文件来建立文件,例如:

1
hexo new photo "My Gallery"

在执行这行指令时,Hexo会尝试在scaffolds文件夹中寻找 photo.md,并根据其内容建立文章,以下是您可以在模版中使用的变量:

变量 描述
layout 布局
title 标题
date 文件建立日期

支持的格式

Hexo 支持以任何格式书写文章,只要安装了相应的渲染插件。

例如,Hexo默认安装了 hexo-renderer-markedhexo-renderer-ejs
因此你不仅可以用Markdown写作,你还可以用EJS写作。如果你安装了hexo-renderer-pug,你甚至可以用Pug模板语言书写文章。
只需要将文章的扩展名从md改成ejsHexo就会使用hexo-renderer-ejs渲染这个文件,其他格式同理。

了解Hexo项目中md文件

了解Hexo项目中md文件

简单介绍下 .md 的结构

.mdMarkdown的扩展名

  • Markdown一种轻量级标记语言,
  • Markdown允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。
  • Markdown对于图片,图表、数学式都有支持。
  • 具体的语法使用规范,详情请参考 Markdown详情

.md 文件中的结构

顶部结构

Front-matter 是 Markdown 文件最上方以”---”分隔的区域,用于指定个别档案的变数。

  • Page Front-matter用于页面配置
  • Post Front-matter 用于文章页配置

Page Front-matter 页面配置

Front-matter 是文件最上方以 —- 分隔的区域,用于指定个别文件的变量,例如:

1
2
3
4
---
title: Hello World
date: 2023-03-01 00:00:00
---

以下是预先定义的参数,您可在模板中使用这些参数值并加以利用,参考文档

类型名 是否必需 描述
abbrlink 【可选】 文章系统标识
title 【必需】 页面标题
date 【必需】 页面创建日期
type 【必需】 标签、分类、友情链接三个页面必需配置
updated 【可选】 页面更新日期
description 【可选】 页面描述
keywords 【可选】 页面关键字
comments 【可选】 显示页面评论模块(默认true)
top_img 【可选】 页面顶部图片
mathjax 【可选】 显示mathjax(当设置mathjax的per_page: false时,才需要配置,默认false)
katex 【可选】 显示katex(当设置katex的per_page: false时,才需要配置,默认false)
aside 【可选】 显示侧边栏 (默认true)
aplayer 【可选】 在需要的页面加载aplayer的js和css,请参考文章下面的音乐配置
highlight_shrink 【可选】 配置代码框是否展开(true/false)(默认为设置中highlight_shrink的配置)

Post Front-matte 文章页配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---
title:
date:
updated:
tags:
categories:
keywords:
description:
top_img:
comments:
cover:
toc:
toc_number:
toc_style_simple:
copyright:
copyright_author:
copyright_author_href:
copyright_url:
copyright_info:
mathjax:
katex:
aplayer:
highlight_shrink:
aside:
---
类型名 是否必需 描述
title 【必需】 文章标题
date 【必需】 文章创建日期
updated 【可选】 文章更新日期
tags 【可选】 文章标签,所有标签都是同级并列的
categories 【可选】 文章分类
keywords 【可选】 文章关键字
description 【可选】 文章描述
top_img 【可选】 文章顶部图片
cover 【可选】 文章缩略图(若没有设置top_img,文章页顶部将显示缩略图,
可以设为:false/图片地址/留空)
comments 【可选】 显示文章评论模块(默认 true)
toc 【可选】 显示文章TOC(默认为设置中toc的enable配置)
toc_number 【可选】 显示toc_number(默认为设置中toc的number配置)
toc_style_simple 【可选】 显示 toc 简洁模式
copyright 【可选】 显示文章版权模块(默认为设置中post_copyright的enable配置)
copyright_author 【可选】 文章版权模块的文章作者
copyright_author_href 【可选】 文章版权模块的文章作者链接
copyright_url 【可选】 文章版权模块的文章连结链接
copyright_info 【可选】 文章版权模块的版权声明文字
mathjax 【可选】 显示mathjax(当设置mathjax的per_page: false时,才需要配置,默认 false)
katex 【可选】 显示katex(当设置katex的per_page: false时,才需要配置,默认 false)
aplayer 【可选】 在需要的页面加载aplayer的js和css,请参考文章下面的音乐 配置
highlight_shrink 【可选】 配置代码框是否展开(true/false)(默认为设置中highlight_shrink的配置)
aside 【可选】 显示侧边栏 (默认 true)

JSON Front-matter

除了 YAML 外,你也可以使用 JSON 来编写 Front-matter,只要将 --- 代换成 ;;; 即可。

1
2
3
"title": "Hello World",
"date": "2013/7/13 20:46:25"
;;;

文章加密插件

关于hexo-blog-encrypt插件
支持的主题theme:defaultblinkshrinkflipupsurgewavexray

存在2个问题

  1. 加密过的文章,使用的yml中代码配置失效,代码块的高度异常
    未解决:这个暂时没找到解决方法

  2. 本地运行正常,发版后域名访问,输入密码后无响应。
    原因:博主域名访问使用的http协议,更改网站为https协议
    可以参考Github的解决方案:【输入密码之后没反应 console报错】

  1. 安装依赖,在根目录执行以下命令
    1
    npm install --save hexo-blog-encrypt
  2. Markdown文件,Front matter配置方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ---
    title: Hello World
    tags:
    - 作为日记加密
    date: 2023-03-01 12:00:00

    password: 123456
    abstract: 有东西被加密了, 请输入密码查看.
    message: 您好, 这里需要密码.
    theme: xray
    wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试.
    wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.
    ---
  3. 文章末尾添加一段代码,避免输入密码后不能正常打开文章
    1
    2
    3
    4
    5
    <script>
    // trigger event
    var event = new Event('hexo-blog-decrypt');
    window.dispatchEvent(event);
    </script>
  4. 重新编译项目,并进入对应的文章页即可看到加密效果
  5. 如果觉得弹窗提示效果差,可以去修改底层
    全局检索,下面这个代码。路径大概是在【/项目/node_modules/hexo-blog-encrypt/lib/hbe.js】
    1
    2
    alert(wrongPassMessage);
    alert(wrongHashMessage);
    最后替换成好看的通知框。博主是用的【Snackbar通知框
    1
    2
    3
    4
    5
    6
    7
    8
    Snackbar.show({
    pos: 'top-center',
    backgroundColor: '#000000',
    text: wrongHashMessage,
    textColor: '#FFFFFF',
    showAction: false,
    duration: 5000
    });

分类和标签

只有文章支持分类和标签,您可以在 Front-matter 中设置.参考文档
分类具有顺序性层次性,也就是说 Foo, Bar 不等于 Bar, Foo;而标签没有顺序和层次。
与使用过WordPress的分类方式不同,Hexo不支持指定多个同级分类。

1
2
3
4
5
categories:
- Diary
tags:
- PS3
- Games

会使分类 Life 成为 Diary 的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。
如果你需要为文章添加多个分类,可以尝试以下 list 中的方法。

1
2
3
4
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]

此时这篇文章同时包括三个分类: PlayStation 和 Games 分别都是父分类 Diary 的子分类,同时 Life 是一个没有子分类的分类。


评论
文章分类文章标签
随便逛逛阅读模式
全屏模式