Hexo结合多个主题扩展为Gallery画廊并实现文章加密

Hexo结合多个主题扩展为Gallery画廊并实现文章加密

可能参考的文章:

如何优雅的使用Github Action服务来将Hexo部署到Github Pages - Hexo

当前PC环境中有Node和Git。版本可以参考Hexo文档。

文章中出现的yourusername为Github用户名,your-repo为仓库名。

1. 初始化

新建一个项目根目录HexoNote,并初始化hexo(主Hexo)。然后新建一个子文件夹hexoB,在里面也初始化Hexo(副Hexo),用于存放第二个hexo。副Hexo的主题是一个简单的主题,很适合作为画廊。

1
2
3
4
5
6
根目录
- public
- hexoB
- public
- ...
- ...

把项目传达github,私有仓库,名为HexoNotePrivate

假设存放Hexo编译后的静态文件夹的仓库名为HexoNote,公共的public。

我们利用github action编译HexoNotePrivate里面的2个hexo,然后整合静态文件夹,推送到HexoNote仓库,HexoNote配置github pages

2. 安装加密

1
npm install --save hexo-blog-encrypt

在主Hexo的_config.yml文件新增配置

1
2
3
4
5
6
7
8
# Security
encrypt: # hexo-blog-encrypt
abstract: 这是一篇加密文章,需要密码才能继续阅读。
message: 当前文章暂不对外可见,请输入密码后查看!
tags:
- {name: private, password: MKL1009}
wrong_pass_message: 抱歉,您输入的密码错误,请检查后重新输入。
wrong_hash_message: 抱歉, 当前文章不能被校验, 不过您还是可以看看解密后的内容。

在md中的tags中新增private即可设置为加密文章。

1
2
tags:
- private

3. 配置文件

把主Hexo的_config.yml文件修改

1
2
url: https://yourusername.github.io/HexoNote
root: /HexoNote/

并且在主Hexo的主题中新增菜单(导航栏)的一个元素,相对地址为/gallery,具体按主题的文档设置

1
2
3
4
5
6
7
navbar:
# Navigation menu items
menu:
Home: /
Archives: /archives
Gallery: /gallery
About: /about

把副Hexo的_config.yml文件修改

1
2
url: https://yourusername.github.io/HexoNote/gallery
root: /HexoNote/gallery/

4. 创建Token

详情看顶部的文章链接,把token放入private私有仓库。

5. 新建公开仓库

新建公开仓库HexoNote,作为github pages的代码仓库。

6. 工作流

新建文件.github\workflows\deploy.yml

node版本和推送地址要按情况修改。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
name: Deploy Hexo to GitHub Pages

on:
push:
branches:
- main # 当推送到 main 分支时触发

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: false # 禁用子模块检查

- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '18'

- name: Install Dependencies
run: npm install

- name: Install Hexo Git Deployer
run: |
npm install hexo-deployer-git --save
npm install hexo-cli -g

- name: Clean and Generate Static Files for Theme A
run: |
hexo clean
hexo generate

- name: Generate Static Files for Theme B
run: |
cd hexoB
npm install
npm install hexo-deployer-git --save
npm install hexo-cli -g
hexo clean
hexo generate
cd ..

- name: Move Theme B Output to Gallery
run: |
mv hexoB/public public/gallery

- name: Configure Git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'

- name: Deploy to GitHub Pages
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
cd public/
git init
git add -A
git commit -m "Create by workflows"
git remote add origin https://${{ secrets.GH_TOKEN }}@github.com/yourusername/HexoNote.git
git push origin HEAD:gh-pages -f


7. 实现效果

1. 加密

2. 画廊B主题