22 Hexo 自定义主题开发教程

22 Hexo 自定义主题开发教程

在本节中,我们将深入探讨如何为 Hexo 创建自定义主题。Hexo 是一个快速、简洁且高效的静态博客框架,支持自定义主题以满足个人需求。

1. 创建自定义主题

1.1 初始化主题目录

首先,您需要在 Hexo 项目的 themes 目录下创建一个新的文件夹,来存放您的主题。

1
2
cd your-hexo-site/themes
mkdir my-custom-theme

1.2 创建基础文件

my-custom-theme 目录下,您需要创建一些基础文件和文件夹,这是 Hexo 识别主题所必需的。

1
2
3
4
5
6
7
cd my-custom-theme
mkdir layout # 布局文件夹
mkdir source # 静态资源文件夹
mkdir script # JavaScript 文件夹
mkdir style # CSS 文件夹
touch layout/_layout.ejs # 创建主布局文件
touch package.json # 创建主题配置文件

1.3 编写 package.json

package.json 文件定义了主题的名称、描述等信息。您可以参考以下内容:

1
2
3
4
5
6
7
{
"name": "my-custom-theme",
"version": "1.0.0",
"description": "A custom Hexo theme",
"author": "Your Name",
"license": "MIT"
}

2. 定义主题布局

2.1 创建主布局文件

layout 文件夹中,您可以创建多个布局文件, layout/_layout.ejs 是主布局文件。打开该文件并添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%= page.title %></title>
<link rel="stylesheet" href="<%= url_for('/style/style.css') %>">
</head>
<body>
<header>
<h1><%= config.title %></h1>
</header>
<main>
<%- body %>
</main>
<footer>
<p>&copy; <%= new Date().getFullYear() %> Your Blog</p>
</footer>
</body>
</html>

2.2 创建页面模板

您可以为不同类型的页面创建模板,例如文章、页面等。

1
2
touch layout/page.ejs
touch layout/post.ejs

以下是 layout/post.ejs 的示例内容:

1
<%- partial('_layout.ejs', { body: '<article>' + post.content + '</article>' }) %>

3. 添加样式

source/style 文件夹中,您可以添加 CSS 文件。创建一个 style.css 文件并添加一些基本样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
background-color: #f4f4f4;
}

header {
background: #35424a;
color: #ffffff;
padding: 20px 0;
text-align: center;
}

footer {
background: #35424a;
color: #ffffff;
text-align: center;
padding: 10px 0;
}

4. 更新 Hexo 配置

要使 Hexo 使用您自定义的主题,您需要更新 Hexo 的 _config.yml 文件。将 theme 选项更改为您的主题名称:

1
theme: my-custom-theme

5. 运行和查看您的主题

完成所有步骤后,您可以运行 Hexo 以查看您自定义的主题:

1
2
3
hexo clean
hexo generate
hexo server

打开浏览器并访问 http://localhost:4000,您应该能看到您的自定义主题已经上线。

6. 进一步扩展

在创建了基本的自定义主题后,您可以进一步扩展:

  • 增加自定义 CSS:您可以在 styles 文件夹中添加更多 CSS 文件来自定义样式。
  • 支持自定义配置:您可以在 package.json 中添加更多配置选项,方便用户自定义主题设置。
  • 使用 JavaScript:在 script 文件夹中添加 JavaScript 文件,实现主题交互功能。

结语

通过上述步骤,您已经可以从零开始设计一个简单的 Hexo 自定义主题。您可以根据自己的需求继续添加更多功能与样式。希望这个教程对您有所帮助,祝您在 Hexo 的主题开发中取得成功!

23 Hexo 插件开发基础

23 Hexo 插件开发基础

Hexo 是一个快速、简洁且高效的静态博客框架,支持通过插件扩展其功能。本文将介绍 Hexo 插件开发的基础知识。

1. 什么是 Hexo 插件?

Hexo 插件是指对 Hexo 用户的博客功能进行扩展的小模块。插件可以通过 JavaScript 代码来实现数据处理、内容生成等功能。

2. 插件结构

一个典型的 Hexo 插件包含以下结构:

1
2
3
4
5
6
7
8
my-hexo-plugin/

├── lib/
│ └── index.js # 插件的入口文件

├── package.json # 插件的配置信息

└── README.md # 插件的说明文档
  • lib/index.js:这是插件的主要逻辑文件,所有的插件代码都应在这里书写。
  • package.json:包含插件名称、版本、描述等信息,是 npm 识别和管理插件的基础。
  • README.md:用于解释如何安装和使用插件。

3. 创建第一个 Hexo 插件

3.1 初始化插件

首先,创建插件文件夹,然后在其中创建基本文件。

1
2
3
4
5
mkdir my-hexo-plugin
cd my-hexo-plugin
npm init -y
mkdir lib
touch lib/index.js README.md

3.2 编辑 package.json

package.json 中,添加 Hexo 相关的字段。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"name": "my-hexo-plugin",
"version": "1.0.0",
"description": "A simple Hexo plugin",
"main": "lib/index.js",
"keywords": [
"Hexo",
"plugin"
],
"hexo": {
"version": ">=4.0.0"
},
"dependencies": {}
}

3.3 编写插件代码

lib/index.js 中编写简单的插件代码,以下是一个简单的插件示例,它会在每篇文章标题后加上 “~” 字符:

1
2
3
4
5
6
7
// lib/index.js

module.exports = function (hexo) {
hexo.extend.filter.register('before_post_render', function (data) {
data.title += ' ~'; // 在文章标题后加上 ~
});
};

3.4 安装插件

在 Hexo 项目的根目录下,运行以下命令来安装插件:

1
npm install ../my-hexo-plugin

确保使用相对路径来引用插件。

3.5 测试插件

在 Hexo 项目中创建一个示例文章,然后启动 Hexo 服务:

1
2
hexo new post "Test Post"
hexo server

访问 http://localhost:4000,查看文章标题是否以 “ ~” 结尾。

4. 使用 Hexo API

Hexo 提供了丰富的 API 接口可以用来更深入地与 Hexo 框架交互。以下是几个常用的 API:

  • hexo.log: 日志工具,可以用 hexo.log.info(), hexo.log.error() 等方法输出日志。
  • hexo.locals: 获取本地数据(例如文章,页面等)。
  • hexo.extend: 用于扩展 Hexo 的功能,比如事件、过滤器和渲染器。

4.1 使用日志工具

在你的插件中,可以使用 Hexo 的日志工具记录信息:

1
2
3
module.exports = function (hexo) {
hexo.log.info('My Hexo Plugin has been loaded');
};

4.2 获取配置信息

可以在插件中获取 Hexo 的配置信息:

1
2
3
4
module.exports = function (hexo) {
const config = hexo.config; // 获取 Hexo 配置
hexo.log.info('Hexo title is: ' + config.title);
};

5. 结语

本节介绍了 Hexo 插件开发的基础知识,包括插件的结构、创建插件、使用 AIP 等。通过这些基础知识,可以开始构建自己的 Hexo 插件,扩展博客功能。

在实际开发中,建议多参考 Hexo 官方文档 以了解更多的 API 和功能。

24 在Hexo中发布和维护主题/插件的指南

24 在Hexo中发布和维护主题/插件的指南

1. 创建主题

在Hexo中创建主题需要遵循一定的目录结构和文件规范。首先执行以下命令来创建一个新的主题:

1
hexo new theme my-theme

这将创建一个名为 my-theme 的新主题文件夹。主题的基本结构如下:

1
2
3
4
5
6
7
8
9
10
11
my-theme/
├── layout/
│ ├── _layout.ejs
│ ├── post.ejs
│ └── ...
├── source/
│ ├── css/
│ ├── js/
│ └── ...
├── package.json
└── _config.yml

1.1 package.json

package.json 是主题的重要配置文件,包含了主题的名称、版本和依赖等信息。一个基础的 package.json 示例:

1
2
3
4
5
6
7
8
{
"name": "my-theme",
"version": "1.0.0",
"description": "A simple Hexo theme",
"main": "index.js",
"author": "Your Name",
"license": "MIT"
}

1.2 _config.yml

每个主题都有自己的 _config.yml 文件,用于配置主题的特性。此文件中可以定义主题的配色方案、菜单等。例如:

1
2
3
4
5
6
menu:
Home: /
Archives: /archives
About: /about
color:
primary: "#3498db"

2. 发布主题

在你完成主题的开发后,可以将其发布到 NPM 或 GitHub。若想发布到 NPM,请确保在 package.json 中正确填写所有信息,然后执行:

1
npm publish

2.1 使用 GitHub 发布

将主题上传到 GitHub 后,可通过以下命令添加至Hexo博客:

1
git clone https://github.com/username/my-theme.git themes/my-theme

确保在 Hexo 的 _config.yml 中将主题设置为新主题:

1
theme: my-theme

3. 创建插件

创建 Hexo 插件的步骤与主题类似,使用以下命令生成插件:

1
hexo new plugin my-plugin

插件的基本结构大致如下:

1
2
3
4
5
6
my-plugin/
├── lib/
│ ├── index.js
├── test/
│ ├── index.js
└── package.json

3.1 lib/index.js

在这个文件中,你可以定义插件的主要功能。例如,以下代码示例将一个简单的过滤器添加到 Hexo:

1
2
3
4
hexo.extend.filter.register('before_post_render', function(data) {
data.title = data.title.toUpperCase(); // 将标题转换为大写
return data;
});

4. 发布插件

若要发布插件到 NPM,首先需要更新 package.json 文件,如下所示:

1
2
3
4
5
6
7
8
{
"name": "my-plugin",
"version": "1.0.0",
"description": "A simple Hexo plugin",
"main": "lib/index.js",
"author": "Your Name",
"license": "MIT"
}

然后执行以下命令:

1
npm publish

4.1 使用 GitHub 发布

如同主题,可以将插件上传至 GitHub,然后在 Hexo 中使用:

1
git clone https://github.com/username/my-plugin.git

在 Hexo 的根目录下,配置 package.json 文件,添加插件依赖:

1
2
3
"dependencies": {
"my-plugin": "github:username/my-plugin"
}

5. 维护主题和插件

维护主题和插件涉及以下几个方面:

  • 更新依赖:定期检查并更新主题或插件的依赖包,使用 npm outdated 检查过时的包,使用 npm update 更新它们。
  • 优化性能:分析并优化主题或插件的性能,使用工具如 Lighthouse。
  • 修复Bug:及时修复在使用中发现的 Bug,确保用户体验良好。
  • 文档更新:确保主题和插件的文档始终保持更新,以方便用户使用。

6. 实例

以下是创建一个简单Hexo主题的完整示例。使用以上提到的目录结构,创建一个名为 simple-theme 的主题:

  1. 创建主题。
1
hexo new theme simple-theme
  1. 配置 package.json
1
2
3
4
5
6
7
8
{
"name": "simple-theme",
"version": "1.0.0",
"description": "A simple Hexo theme",
"main": "index.js",
"author": "Your Name",
"license": "MIT"
}
  1. 设定 _config.yml
1
2
3
4
5
6
menu:
Home: /
Archives: /archives
About: /about
color:
primary: "#666"
  1. lib/index.js 中,实现主题功能。

  2. 在GitHub上发布并记录版本更新,确保用户使用最新版本。

总结

通过了解和实践上述步骤,你可以较为顺利地在Hexo中发布和维护自己的主题和插件。保持文档完整、代码优雅、更新及时,将帮助你和其他用户更好地使用你的主题和插件。