Next主题配置文件说明
官方说明
搞不清楚,有好几个
next-theme/hexo-theme-next: 🎉 Elegant and powerful theme for Hexo. (github.com)
- 文档地址:Configuration | NexT (theme-next.js.org)
theme-next/hexo-theme-next: Elegant and powerful theme for Hexo. (github.com)
- 文档地址:Theme Next - Next Generation Theme for Websites (theme-next.org)
中文的:开始使用 - NexT 使用文档 (iissnan.com)
主题版本
1 | [root@hexo Hexo]# hexo s --ip 0.0.0.0 |
安装next主题
这里以以下地址中的next主题进行测试:
next-theme/hexo-theme-next: 🎉 Elegant and powerful theme for Hexo. (github.com)
- 文档地址:Configuration | NexT (theme-next.js.org)
安装:
1 | # If you're using Hexo 5.0 or later, the simplest way to install is through npm: |
使用新的主题
1 | # 修改_config.yml文件,指向新的主题, |
更新next主题
主题更新
Install the latest version through npm:
1
2cd hexo-site
npm install hexo-theme-next@latest或者, update to the latest master branch:
1
2cd themes/next
git pull
插件支持
Third-party plugins are loaded from CDNJS CDN by default. We also provide other optional CDNs, including the famous UNPKG and jsDelivr.
For example, if you want to use unpkg
instead of cdnjs
as the default CDN provider, you need to edit the following settings in NexT config file:
1 | vendors: |
多语言支持
NexT支持多种语言,只需编辑站点配置文件下的 language
设置
语言 | 代码 | 设定示例 |
---|---|---|
English | en | language: en |
简体中文 | zh-CN(注:zh-Hans已经无法使用) | language: zh-CN |
Frangais | fr-FR | language: fr-FR |
Portugues | pt | language: pt 或者 language:pt-BR |
繁體中文 | zh-hk 或者 zh-tw | language: zh-hk |
Pycckmi 93bIK | ru | language: ru |
Deutsch | de | language: de |
日本語 | ja | language: ja |
Indonesian | id | language: id |
Korean | ko | language: ko |
关于next主题配置文件
完成 Hexo 和 NexT 主题的安装后,您可以通过修改配置文件来自定义您的博客。安装 Hexo 时,随附的配置文件位于您博客的站点根目录中,名为 _config.yml
;我们将其称为 Hexo 配置文件。NexT 主题的配置文件需要您创建;请在站点根目录中创建一个 _config.next.yml
文件,我们在下文中将其称为 NexT 配置文件。如果您还安装了其他主题,那么这些主题的配置文件也将遵循 _config.[name].yml
的命名约定。
创建空的 _config.next.yml
文件后,您可以将主题文件夹中的默认配置选项复制到其中,以便您可以参考它们进行修改和自定义。==根据您的安装方法(git or npm)==,NexT 主题的默认配置文件可能位于 themes/next/_config.yml
或 node_modules/hexo-theme-next/_config.yml
。简单来说,如果您是第一次安装 NexT 主题,您可以执行以下命令来获取可用的 NexT 配置文件:
1 | # Installed through npm |
请注意,有些其他文档或教程可能会建议创建或直接修改 themes/next/_config.yml
和 node_modules/hexo-theme-next/_config.yml
等文件。确实,这样做可以被 Hexo 接受并作为你的主题配置文件。然而,这种方法会带来很多不便,比如通过 git pull
更新 NexT 主题时经常会遇到冲突的情况,或者在升级到新版本时需要手动合并配置。对于通过 npm
安装的主题,在 node_modules
中修改 NexT 配置文件也比较困难。因此,请使用前面引入的 _config.next.yml
文件作为主题的配置文件,并避免创建或修改其他主题配置文件,以防止冲突。
注意:如果使用多个配置文件,则最终效果是合并
For more information, please refer to Alternate Theme Config feature documentation.
主题核心配置
1 | # --------------------------------------------------------------- |
Scheme设置-切换主题样式
1 | # --------------------------------------------------------------- |
站点信息设置
1 | # --------------------------------------------------------------- |
菜单设置
1 | # --------------------------------------------------------------- |
菜单项目的语法格式:
1 | Key: /link/ || icon |
你可以按照上面的格式创建任意菜单。Names of that icons can be found in Font Awesome site.找到想要的图标,选择REACT可以看到代码示例和名称。
其他说明:
除主页和存档外,菜单部分下的所有自定义页面都需要手动创建。请参阅“[自定义页面支持](Custom Pages | NexT (theme-next.js.org))”。此外,站点地图支持需要 [hexo-generator-sitemap](GitHub - hexojs/hexo-generator-sitemap: Sitemap generator for Hexo.) 插件。
子菜单设置
还支持层次结构内的动态子菜单。在 NexT 配置文件的菜单部分中添加子菜单项,如下所示:
1 | menu: |
每个子菜单项都需要一个默认页面。
增加菜单项目
将你想要的菜单选项前的注释
#
去掉,这里以tags
为例。1
2
3
4
5
6
7
8
9menu:
home: / || home
#about: /about/ || user
tags: /tags/ || tags
#categories: /categories/ || th
archives: /archives/ || archive
#schedule: /schedule/ || calendar
#sitemap: /sitemap.xml || sitemap
#commonweal: /404/ || heartbeat新建页面
tags
:hexo new page "tags"
完成后
Hexo-root/source/
中会出现tags
目录,该目录下有index.md
文件,文件内容如下:1
2title: tags
date: 2019-02-18 16:40:41在
date
字段下添加:type: tags
tags 的使用方法详见Hexo 常用命令
设置菜单名称
打开
next/languages/zh-CN.yml
,更改以下字段1
2
3
4
5
6
7
8
9menu:
home: 首页
archives: 归档
categories: 分类
tags: 标签
about: 关于
search: 搜索
commonweal: 公益404
something: 有料例如你要将 about 的翻译“关于”改为“关于我”,直接更改为“about: 关于我”即可
添加个人介绍——关于
要先添加 about 菜单
打开\source\about
下的index.md
文件,在最后一个空行(即---
的下方)添加你显示的个人信息。
添加额外菜单栏并显示多篇文章
假设你现在需要添加一个“日记”的菜单栏,步骤如下:
在Git Bash
执行下列命令,新建页面diary
:hexo new page "diary"
完成后Myblog/source/
中会出现tags
目录,该目录下有index.md
文件,文件内容如下:
1 | title: diary |
在date
字段下添加:type: diary
打开Myblog\themes\next\languages
,找到zh-CN.yml
。在 Menu字段下添加schedule: 日记
,这样你的网站菜单栏就会显示“日记”项。
为了能让菜单显示多篇文章,就需要借用categories
的分类功能
假设 _post
目录下有几篇文章想放到该菜单下,将这些文章移至新建文件夹 diary
打开主题配置文件
,找到menu
字段,添加日记: //categories/日记/ || fa fa-inbox
上传至github page后,就会发现博客的“日记”页面如下图所示。
侧边栏设置
1 | # --------------------------------------------------------------- |
页脚设置
1 | # --------------------------------------------------------------- |
备案信息示例
1 | footer: |
博文帖子设置
阅读全文
在主页上显示文章的某些部分,然后提供完整文章的链接,这是很常见的需求。 NexT 提供了两种方法来控制文章在主页上的显示方式。换句话说,您可以使用以下方式显示==文章摘要==和==阅读更多==按钮。
方式1:tagmore
在文章中使用
<!-- more -->
来手动分页你的文章,这是 Hexo ==推荐的做法==。建议使用
<!-- more -->
,这样不仅可以更好的控制你想要显示的内容,还可以让 Hexo 的插件方便地使用它。方式2:excerpt_description
如果在文章摘要的front-matter中配置了
description
,则Nex默认将其作为主页上的序言文本,如果没有指定description
,则默认使用全文作为主页上的序言文本。1
excerpt_description: true
修改 阅读全文 前显示文字数量即位置
打开
themes/next/_config.yml
,搜索关键字auto_excerpt
, 修改length即可修改阅读全文前显示文字数量备注:本次测试的NexT主题默认没有这个参数
1
2
3auto_excerpt:
enable: true
length: 150
1 | # --------------------------------------------------------------- |
文章字数统计及阅读时常
安装插件
hexo-wordcount
,执行以下命令:1
2
3
4
5
6
7
8[root@hexo Hexo]# npm install hexo-word-counter
added 2 packages in 8s
[root@hexo Hexo]# hexo clean
INFO Validating config
INFO Deleted database.
INFO Deleted public folder.
[root@hexo Hexo]#Hexo Config
在 Hexo 配置文件中启用任意
option
即可激活此插件:默认没找到以下选项,需要手动添加,添加任意一个选项即可。
symbols
默认情况下,NexT 会显示帖子元信息部分的帖子字数。您可以通过在 Hexo 配置文件中将
symbol_count_time.symbols
的值设置为false
来禁用此功能。1
2symbols_count_time:
symbols: truetime
默认情况下,NexT 在帖子元部分显示帖子的预计阅读时间。您可以通过在 Hexo 配置文件中将值
symbol_count_time.time
设置为false
来禁用它。1
2symbols_count_time:
time: truetotal_symbols
默认情况下,NexT 在页脚部分显示所有帖子的字数。您可以通过在 Hexo 配置文件中将
symbol_count_time.total_symbols
的值设置为false
来禁用它。1
2symbols_count_time:
total_symbols: truetotal_time
默认情况下,NexT 在页脚部分显示所有帖子的预计阅读时间。您可以通过在 Hexo 配置文件中将值
symbol_count_time.total_time
设置为false
来禁用它。1
2symbols_count_time:
total_time: trueawl
awl 表示平均字长(单词中的字符数)。您可以在[此处](Character Count Tool - The Best Character Counter)查看。
1
2symbols_count_time:
awl: 4wpm
wpm 表示平均每分钟单词数。您可以在[此处](WordCounter - Count Words & Correct Writing)查看。
1
2symbols_count_time:
wpm: 275
NexT Config
启用插件后,您可以在 NexT 配置文件中的
symbol_count_time
部分中调整选项:1
2
3
4
5
6
7# Post wordcount display settings
# Dependencies: https://github.com/next-theme/hexo-word-counter
symbols_count_time:
# 默认情况下,NexT 会将单词计数和预计阅读时间显示在单独的一行中。您可以在 NexT 配置文件中将 symbol_count_time.separated_meta 的值设置为 false,从而将它们添加到一行中。
separated_meta: true
# 默认情况下,NexT 不会在页脚部分显示字数和预计阅读时间的文本描述。您可以通过在 NexT 配置文件中将值 symbol_count_time.item_text_total 设置为 false 来启用它。
item_text_total: false
热门文章设置
通过在站点根目录中执行以下命令来安装
hexo-lated-posts
:1
2
3
4
5
6
7
8
9
10[root@hexo Hexo]# pwd
/Hexo
[root@hexo Hexo]# npm install hexo-related-posts
added 21 packages in 9s
[root@hexo Hexo]# hexo clean
INFO Validating config
INFO Deleted database.
INFO Deleted public folder.
[root@hexo Hexo]#可以通过在 NexT 配置文件中将
related_posts.enable
值设置为true
来启用它。1
2related_posts:
enable: true默认情况下,NexT 在titile之前显示signs-post。 图标的名称可以在 Font Awesome 网站中找到。 您可以通过编辑 NexT 配置文件的
related_posts
部分中的值图标来配置它。1
2related_posts:
icon: fa fa-signs-post
自定义页面设置
官文中没找到关于以下部分配置的说明:
1 | # --------------------------------------------------------------- |
自定义一个about页面
接下来允许用户在菜单中添加自定义页面。
Adding New Page
在站点根目录。 使用
hexo new page custom-name
创建一个新的自定义名称页面:1
2
3
4
5[root@hexo Hexo]# pwd
/Hexo
[root@hexo Hexo]# hexo new page about
INFO Validating config
INFO Created: /Hexo/source/about/index.mdSetting Front-matter Values
Front-matter
是位于文件开头的 YAML 或 JSON 块,用于配置您的作品的设置。 设置 front-matter 值和更详细的内容可以在 front-matter 中找到。 如果您愿意,您还可以在custom-name/index.md
中添加内容。1
2
3
4title: custom-name
date: 2014-12-22 12:39:04
---Editting Menu
Add
custom-name
tomenu
by editing NexT config file, like addingabout
page:1
2
3
4menu:
home: / || fa fa-home
archives: /archives/ || fa fa-archive
about: /about/ || fa fa-user渲染
1
2hexo clean
hexo g # 会将/Hexo/source/about/index.md 渲染为 /Hexo/public/about/index.html
使用存档页面作为主页
可以在 ==Hexo 配置文件==中配置archive
和index generator
的路径,例如
1 | archive_dir: / |
添加Tags页面
添加Tags
页面并在菜单中显示Tags
链接。 Tags
页面将显示网站的所有标签。 如果没有文章有标签,此页面将留空。
Adding New Page
站点根目录。 使用
hexo new page tags
创建新标签页面:1
2
3[root@hexo Hexo]# hexo new page tags
INFO Validating config
INFO Created: /Hexo/source/tags/index.md设置页面类型
编辑新页面并将==类型==更改为
tags
,主题将在该页面自动显示tags cloud
。 页面内容如下所示:1
2
3
4
5
6[root@hexo Hexo]# cat source/tags/index.md
---
title: tags
date: 2024-05-06 21:48:30
type: tags
---编辑菜单
通过编辑 ==NexT 配置文件==向菜单添加标签,如下所示:
1
2
3
4menu:
home: / || fa fa-home
archives: /archives/ || fa fa-archive
tags: /tags/ || fa fa-tags
如果您为站点启用任何评论系统,所有帖子和页面的评论都会显示。
如果要为
tags
和categories
页面禁用评论,参见https://theme-next.js.org/docs/third-party-services/comments#How-to-Disable-Comments-on-Page
默认的 Hexo 插件
hexo-generator-tag
提供了一个名为enable_index_page
的选项,该选项会与上面创建的 «Tags» 页面冲突。 确保您已禁用该选项。
1
2
3 # 没找到这个配置项,手动添加了
tag_generator:
enable_index_page: false
Tagcloud
默认情况下,NexT 在标签页中设置了Tagcloud
的字体颜色和大小。
从 NexT v7.0.2 开始,您可以自定义它们,只需在 ==NexT 配置文件==中设置相关值即可:
1 | # TagCloud settings for tags page. |
添加分类页面
Categories
页面的添加方式与tags
页面类似,只是名称不同:只需将标签替换为类别即可。
添加类别页面
1
2
3[root@hexo Hexo]# hexo new page categories
INFO Validating config
INFO Created: /Hexo/source/categories/index.md设置页面类型
编辑新页面并将==类型==更改为
categories
1
2
3
4
5
6[root@hexo Hexo]# cat source/categories/index.md
---
title: categories
date: 2024-05-06 22:29:28
type: categories
---编辑菜单
通过编辑 ==NexT 配置文件==向菜单添加标签,如下所示:
1
2
3
4
5
6menu:
home: / || fa fa-home
about: /about/ || fa fa-user
tags: /tags/ || fa fa-tags
categories: /categories/ || fa fa-th
archives: /archives/ || fa fa-archive
在文章中指定分类和标签
如果您想添加标签或类别页面,请继续阅读。
请阅读 Hexo 的分类和标签文档,了解如何为文章添加标签或分类。
以下代码向您展示了带有标签的文章示例:
1 | // 语法1 |
添加 Google 日历页面
请注意,您首先需要确保添加的日历设置为公开。 如果您不确定,请先按照这些说明设置公开 Google 日历,然后再添加。
有关创建和管理公共 Google 日历的更详细文档:https://support.google.com/calendar/answer/37083
Custom 404 Page
在站点根目录中,创建一个名为 404 的新文件夹,然后在其中创建一个新页面:
1 | [root@hexo Hexo]# hexo new page 404 |
确保 ==Hexo 配置文件==中禁用relative_link
:
1 | relative_link: false |
用户是否可以被重定向到404页面,取决于网站托管服务或Web服务器的设置,而不是Hexo。 例如,如果使用Nginx作为服务器,还需要在nginx.conf文件中配置404页面。
公益404
如果您想启用公益404(腾讯在中国提供的一项服务),请像这样编辑404/index.md
:
1 | --- |
还可以添加任何您想要的内容。
通过编辑 NexT 配置文件将 404 添加到菜单:
1 | menu: |
Misc主题设置
1 | # --------------------------------------------------------------- |
代码块样式预览
在以下网站预览所有样式
- Highlight (theme-next.js.org)
字体设置
NexT 为您提供 5 种特定的字体设置,它们是:
- 全局字体:整个网站使用的字体。
- 标题字体:网站标题使用的字体。
- 标题字体:文章标题使用的字体(h1、h2、h3、h4、h5、h6)。
- 文章字体:文章使用的字体。
- 代码字体:文章代码块使用的字体。
每种字体都将作为此类的第一个字体,如果内部字体设置不可用,NexT 将恢复使用内部字体设置。
- Non-code Font: Fallback to
"PingFang SC", "Microsoft YaHei", sans-serif
- Code Font: Fallback to
consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace
另外,每个部分都有一个外部属性,用于控制是否使用字体库 CDN。使用此功能可以帮助您使用系统中安装的字体并减少不必要的请求。
为了解决 Google Fonts API 在某些国家/地区的不稳定问题,NexT 通过设置
font.host
支持自定义字体库 URL。
另外,我们注意到对于某些网站的请求,Google Fonts 会返回 403。此时需要使用font.host
设置镜像站点。
相关问题:#613、#1333
1 | # --------------------------------------------------------------- |
并且每个选项都可以应用多个字体系列。这对于经常写中文和英文的人来说特别有用。如下:
1 | font: |
根据 CSS 字体模块 3 级规范:
除通用系列之外的字体系列名称必须以字符串形式引用,或以一个或多个标识符序列形式引用。为避免转义错误,请根据需要引用字体系列名称。
如果您仍需要更多自定义,以下更改将涵盖字体自定义功能。编辑站点根目录中的 source/_data/variables.styl
并添加两个变量:
1 | // Title Font, set it to font family you want. |
然后取消注释 NexT 配置文件中 custom_file_path
部分下的变量。
SEO设置
接下来提供了有用的选项以实现更好的搜索引擎优化(SEO)。
在 ==Hexo 配置文件==中设置 URL url: http://example.com 后,默认情况下 Hexo 会创建一个规范链接标签。更多详细信息请参阅[合并重复 URL](如何使用 rel=”canonical” 及其他方法指定规范网址 | Google 搜索中心 | 文档 | Google for Developers)。
1 | # --------------------------------------------------------------- |
Internationalization-i18n
编辑 ==Hexo 配置文件==,将 language
的值设置为你需要的语言,例如英语如下:
1 | language: en |
NexT 现在支持以下语言:Internationalization | NexT (theme-next.js.org)
语言目录中的文件是自动生成的,您不需要直接修改它们。如果您想添加或改进 NexT 主题的翻译,请通过 Crowdin 提交翻译。
Multilingual Switcher
在 Hexo 配置文件中设置多种语言,例如
1 | language: |
然后在 NexT 配置文件中打开 language_switcher
:
1 | # Show multilingual switcher in footer. |
注意:启用多语言切换时,会提示以下内容:
1 | WARN Since language_switcher is turned on, the caching is disabled to avoid potential hazards(禁用缓存以避免潜在的危险。). |
感觉速度确实慢了,没什么乱用。
覆盖默认翻译
如果您想自定义默认翻译,则无需修改语言目录中的翻译文件。您可以使用Data Files | Hexo覆盖所有翻译。
Create a
languages.yml
insource/_data
.插入以下代码:(注意两个空格的缩进)
1
2
3
4
5
6
7
8
9
10# language
zh-CN:
# items
post:
copyright:
# the translation you prefer
author: 本文博主
en:
menu:
schedule: Calendar
这种情况对于列表外的项目也适用。例如,Next 使用 Theme Inject
来引入评论系统。你可以将返回值重命名为中文,如下所示:
1 | # language |
插件标签:Tag Plugin
本质上应该是Markdown文件中的扩展语法支持。
- 标签插件(Tag Plugins) | Hexo
标签插件是 Hexo 支持的一种制作特殊样式内容的方法。例如,我们无法在标准 Markdown
中显示自定义大小的图片。那么我们就可以使用标签插件来解决它。Hexo 有很多标签可以帮助用户。而且 Hexo 还提供了与主题的接口,使主题能够创建自己的标签。NexT 提供以下标签:
- Button
- Caniuse
- Centered Quote
- Group Pictures
- Label
- Link Grid
- Mermaid
- WaveDrom
- Note
- Tabs
- Video
这些标签插件仅在主题 NexT 中可用。如果切换到其他 Hexo 主题,它们可能会导致渲染错误。
默认配置文件内容
1 | # --------------------------------------------------------------- |
居中引用Centered Quote
此tag
将创建前后两行的引言,并且引言的文字将居中显示。使用居中引言时,如果有多行文本,并且每行的长度不同,则引言将不对称,因此建议在只有单行文本时使用。例如在文章前和文章后都使用,以进行总结。
1 | {% centerquote %}Something{% endcenterquote %} |
视频
1 | {% video url %} |
Button
Button | NexT (theme-next.js.org)
Caniuse
Caniuse | NexT (theme-next.js.org)
Group Pictures
Group Pictures | NexT (theme-next.js.org)
Label
Label | NexT (theme-next.js.org)
Link Grid
Link Grid | NexT (theme-next.js.org)
Mermaid-流程图
Mermaid | NexT (theme-next.js.org)
WaveDrom
WaveDrom | NexT (theme-next.js.org)
Note (Bootstrap Callout)
Note (Bootstrap Callout) | NexT (theme-next.js.org)
PDF | NexT (theme-next.js.org)
第三方插件和服务设置
静态网站在某些功能上受到限制,因此我们需要第三方服务来扩展我们的网站。您可以随时使用 NexT 支持的第三方服务来扩展所需的功能。
1 | # --------------------------------------------------------------- |
Adding Plugins
插件扩展了 NexT 的功能。有两种类型的库:内部脚本和第三方插件。内部脚本默认从您的网站加载,它们是 NexT 基本功能所必需的。第三方插件提供了大量可选功能。它们默认从 jsDelivr CDN
加载,因为它在任何地方都很快。配置这些插件非常简单。例如,如果您想在您的站点中使用 pjax
,只需在 ==NexT 配置文件==中将 pjax
设置为 true
:
pjax
位于外部库文件部分
1 | # Easily enable fast Ajax navigation on your website. |
如果您想为任何插件指定 CDN 提供商,则需要设置/更新 CDN URL
。有关更多信息,请参阅高级设置。
数学公式渲染支持
1 | # --------------------------------------------------------------- |
Comment Systems-评论系统
1 | # --------------------------------------------------------------- |
概述
多评论系统支持
NexT 允许您同时启用多个评论系统。您可以修改以下配置来调整多个评论系统的样式或行为。
1 | # Multiple Comment System Support |
可以通过在 NexT 配置文件中将 comments.lazyload
的值设置为 true
来==启用延迟加载==。 NexT 使用 IntersectionObserver
来延迟加载评论,而 IE 和 2017 年之前发布的大多数浏览器均不支持此功能。
如何在页面上禁用评论
当你启用 Disqus
等评论服务时,所有新页面都会自动拥有评论服务。如果你想在某个页面中禁用它,只需在 front-matter
中添加 comments
键并将其值设置为 false
。如下所示:
1 | --- |
重命名评论计数文本
You can rename the post meta text of comment count using languages.yml
: Override Default Translations.
Disqus
Disqus 是一个全球评论系统,可以改善网站上的讨论并连接网络上的对话。
创建账户并登录Disqus,登录后点击首页的GET STARTED按钮,然后选择I want to install Disqus on my site选项,你就会看到Create a new site界面。
输入您的网站名称(将作为您的 Disqus shortname),然后从下拉菜单中选择一个类别。然后单击“创建网站”按钮。
选择
I don't see my platform listed, install manually with Universal Code
,为您的网站配置 Disqus,然后单击“完成设置”按钮。将
enable
设置为true
,添加获取到的Disqus短名称(shortname),并在NexT配置文件中的disqus
部分编辑其他配置如下:1
2
3
4disqus:
enable: false
shortname: your-short-disqus-name
count: true
DisqusJS
使用 Disqus API 渲染 Disqus 评论组件。
Get your Disqus API Key from Disqus API Application.
Go to the settings page of your Disqus Application, enter your domain in Settings → Domains.
Get your Disqus Shortname from General Settings - Disqus Admin.
Set the value
enable
totrue
, add the obtained Disqus API Key (apikey
) and Shortname (shortname
), and edit other configurations indisqusjs
section in the NexT config file as following:1
2
3
4
5
6
7
8
9
10
11
12# DisqusJS
# Demo: https://disqusjs.skk.moe
disqusjs:
enable: false
# API Endpoint of Disqus API (https://disqus.com/api/docs/)
# leave api empty if you are able to connect to Disqus API
# otherwise you need a reverse proxy for Disqus API
# For example:
# api: https://disqus.skk.moe/disqus/
api:
apikey: # register new application from https://disqus.com/api/applications/
shortname: # See: https://disqus.com/admin/settings/general/
Changyan (China)
畅言是业界领先的社交评论系统,支持PC和移动端两种访问方式,为网站评论提供了一种全新的方式。畅言拥有多种常用账号登录、三重过滤机制、实时数据统计、快速数据导出、全面支持移动端等领先功能,充分满足各大网站用户登录、评论、分享、点评的需求。
Create an account or log into Changyan, then add your site to get APP ID and APP KEY.
Set the value
enable
totrue
, and add the obtained APP ID (appid
) and APP KEY (appkey
) to thechangyan
section in the NexT config file as following:1
2
3
4
5
6# changyan
changyan:
enable: false
appid:
appkey:
count: true
注意:您发表评论后,需要一段时间才能看到评论数量的增加。
LiveRe
LiveRe是一个基于社交网站评论的内容平台,帮助用户自由交流。
Create an account or log into LiveRe, click on the
installation
button and select the free city version, then click on theinstall now
button.Copy the
data-uid
field in the installation code to get your LiveRe UID.Add the obtained LiveRe UID to the
livere_uid
section in the NexT config file as following:1
2
3
4# Support for LiveRe comments system.
# You can get your uid from https://livere.com/insight/myCode (General web site)
livere_uid: your_uid
Gitalk
Gitalk 是一个基于 Github Issue 和 Preact 的现代评论组件。
Click here to sign up for a new OAuth Application. Other content can be filled in at will, but be sure to fill in the correct callback URL (usually the domain name corresponding to the comment page). Then you will get a Client ID and a Client secret.
Create a repository you want to store Gitalk comments in your GitHub.
Set the value
enable
totrue
, add Client ID (client_id
) and Client secret (client_secret
) in step 1, add your Github username (github_id
andadmin_user
) and the created repository name (repo
) in step 2, and edit other configurations ingitalk
section in the NexT config file as following:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# Gitalk
# For more information: https://gitalk.github.io
gitalk:
enable: false
github_id: # GitHub repo owner
repo: # Repository name to store issues
client_id: # GitHub Application Client ID
client_secret: # GitHub Application Client Secret
admin_user: # GitHub repo owner and collaborators, only these guys can initialize gitHub issues
distraction_free_mode: true # Facebook-like distraction free mode
# When the official proxy is not available, you can change it to your own proxy address
proxy: https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token # This is official proxy address
# Gitalk's display language depends on user's browser or system environment
# If you want everyone visiting your site to see a uniform language, you can set a force language value
# Available values: en | es-ES | fr | ru | zh-CN | zh-TW
language:
Gitalk 依赖页面路径的 md5 值进行标记,如果页面的永久链接发生变化,评论将无法正确加载。
Utterances
基于 GitHub 问题构建的轻量级评论小部件。使用 GitHub 问题进行博客评论、维基页面等!
1 | # Utterances |
Isso
Isso – Ich schrei sonst – 是一个用 Python 和 JavaScript 编写的轻量级评论服务器。它旨在成为 Disqus 的替代品。
You need to install and configure Isso on your server first.
Set the value
isso
in the NexT config file as the valuedata-isso
in Isso script. An exemplary script tag is given in theIntegration
section of the Isso quickstart document, you need to modify it according to the URL of your server.1
2
3# Isso
# For more information: https://isso-comments.de
isso: # <data_isso>
统计和分析
只要page's host name
与 ==Hexo 配置文件==中设置的 url 选项不匹配,NexT 就不会将记录发送给分析服务提供商。这将防止本地调试污染分析。请确保您已正确配置 url,否则这些统计工具可能无法按预期工作。
1 | # --------------------------------------------------------------- |
分析工具
Google Analytics
Create an account and log into Google Analytics. More detailed documentation
编辑 NexT 配置文件,并在
google_analytics
部分下的tracking_id
中填写您的 Google 跟踪 ID。 Google 跟踪 ID 始终以UA-
开头。1
2
3
4# Google Analytics
google_analytics:
tracking_id: UA-XXXXXXXX-X
only_pageview: false当字段
only_pageview
设置为true
时,NexT 只会将pageview
事件发送到Google Analytics
。使用此字段而不是only_pageview: false
的好处是减少网站上的外部脚本,这将为您提供更好的性能,但没有完整的分析功能。
Baidu Analytics (China)
Login to Baidu Analytics and locate to site code getting page.
Copy the script ID after
hm.js?
, like the following picture:Edit NexT config file and change the value of
baidu_analytics
to your script ID.1
2# Baidu Analytics ID
baidu_analytics: your_id
Growingio Analytics
Official documentation: https://docs.growingio.com/v3/developer-manual/sdkintegrated/web-js-sdk/latest-jssdk
Edit NexT config file and change the value of growingio_analytics
to your project ID.
1 | # Growingio Analytics |
Cloudflare Web Analytics
Official documentation: https://www.cloudflare.com/web-analytics/
Edit NexT config file and change the value of cloudflare_analytics
to your project ID.
1 | # Cloudflare Web Analytics |
Microsoft Clarity Analytics
Official documentation: https://clarity.microsoft.com/
Edit NexT config file and change the value of clarity_analytics
to your project ID.
1 | # Microsoft Clarity Analytics |
Matomo Analytics (Self-managed)
编辑 NexT 配置文件并在 matomo 部分下的 server_url 和 site_id 中填写您的后端服务器的 url 和您的自定义站点 ID。
1 | # Matomo Analytics |
Umami Analytics (Self-managed)
Umami 是一个自托管的网络分析解决方案。官方文档:https://umami.is/
编辑 NexT 配置文件。将 umami 部分下的 script_url 填入您的跟踪脚本 URL,并将 website_id 的值更改为您的网站 ID。
1 | # Umami Analytics |
Plausible Analytics (Self-managed)
Opt for paid managed hosting or self-host it on your server. Official documentation: https://plausible.io/
Edit NexT config file. Fill script_url
under section plausible
with your tracking script URL, and change the value of site_domain
to your website domain.
1 | # Plausible Analytics |
统计工具
LeanCloud (China)
为 NexT 主题添加文章阅读次数计数。有关如何设置计数器并安全运行的文档可在 hexo-leancloud-counter-security 中找到。
获取app keys
创建账户或登录 LeanCloud,然后在仪表盘上点击按钮创建应用。
Go to the application you just created, select
Settings → App Keys
in the lower left corner, and you will see your APP ID and APP Key.
安装
Install hexo-leancloud-counter-security
by executing the following command in site root dir:
1 | npm install hexo-leancloud-counter-security |
Hexo配置
Edit Hexo config file and add following content:
1 | leancloud_counter_security: |
NexT配置
Edit NexT config file and fill options under leancloud_visitors
section.
1 | # Show number of visitors to each article. |
Firebase
Firebase Analytics 提供访客统计功能。
get apikey & projectid
Login to Firebase to get apiKey and projectId. The Web API Key gets generated once you go into the “Authentication” section for the first time.
NexT配置
Edit NexT config file and add or change
firestore
section:1
2
3
4
5firestore:
enable: true
collection: articles #required, a string collection name to access firestore database
apiKey: #required
projectId: #required
Busuanzi Counting (China)
Global Settings
在 NexT 配置文件中编辑
busuanzi_count
选项。当enable: true
时,启用全局设置。如果total_visitors
、total_views
、post_views
均为false
,Busuanzi
仅计数但不显示。Site UV Settings
当
total_visitors: true
时,将在页脚中显示站点 UV。您还可以通过将total_visitors_icon
设置为图标名称来使用font-awesome
。1
2
3busuanzi_count:
total_visitors: true
total_visitors_icon: fa fa-userSite PV Settings
当
total_views: true
时,将在页脚中显示站点 UV。您还可以通过将total_views_icon
设置为图标名称来使用font-awesome
。1
2
3busuanzi_count:
total_views: true
total_views_icon: fa fa-eyePer-page PV Settings
当
post_views: true
时,它将在帖子元数据中显示页面 PV。您还可以通过将post_views_icon
设置为图标名称来使用font-awesome
。1
2
3busuanzi_count:
post_views: true
post_views_icon: far fa-eye
网络参考
打开主题配置文件,找到以下代码,并按照此方式更改代码
1
2
3
4
5
6
7
8
9
10# Show Views / Visitors of the website / page with busuanzi.
# Get more information on http://busuanzi.ibruce.info/
busuanzi_count:
enable: true
total_visitors: true
total_visitors_icon: fa fa-user
total_views: true
total_views_icon: fa fa-eye
post_views: true
post_views_icon: fa fa-eye来到
\themes\next\layout\_partials
找到footer.swig
文件,添加如下代码1
2
3{% if theme.footer.counter %}
<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
{% endif %}
发布小部件和内容共享服务
1 | # --------------------------------------------------------------- |
搜索服务
1 | # --------------------------------------------------------------- |
Algolia Search
NexT 提供了 Algolia 搜索插件来搜索您的 Hexo 网站内容。需要注意的是,仅在 NexT 配置文件中启用 algolia_search
并不能让您正确使用 Algolia 搜索。您需要安装相应的 ==Hexo 插件==才能在 Algolia 上索引您的网站:Hexo Algolia
或 Hexo Algoliasearch
。
已知问题
鉴于 Algolia 的免费帐户限制,最新版本的
Hexo Algolia
插件删除了内容索引功能。
Hexo Algoliasearch
插件提供内容索引功能。 Algolia 免费帐户的“记录太大”也存在同样的问题。
按照下面描述的步骤完成 Algolia Search的安装。
注册
在 Algolia 注册后,您可以直接使用 GitHub 或 Google 帐户登录。客户首次注册帐户后,客户将获得从生效日期开始的 14 天免费 Algolia 服务评估期(“评估期”),但须遵守 Algolia 网站的限制。此后,Algolia 将提供免费的品牌版本,每月最多可容纳 10,000 条记录和 100,000 次操作。
如果弹出教程,你可以跳过它。直接==创建索引==,稍后会用到。
Algolia Config
Go to the
API Keys
page and find your credentials. You will need theApplication ID
and theSearch-only API key
in the following sections. TheAdmin API key
need to keep confidential. Never store your Admin API Key asapiKey
in Hexo config file: it would give full control of your Algolia index to others and you don’t want to face the consequences.In the
API Keys
page, click theAll API Keys
button to switch to the corresponding tab. Then click theNew API Key
button to activate a pop-up box where you can setup authorizations and restrictions with a great level of precision. EnteraddObject
,deleteObject
,listIndexes
,deleteIndex
features in ACL permissions that will be allowed for the given API key. And then click theCreate
button. Copy this newly created key to the clipboard, we call it aHigh-privilege API key
.
Algolia Plugin
Algolia 要求用户手动或通过提供的 API 上传其搜索索引数据。您需要选择安装以下两个插件之一。这两个插件都会索引您的网站并将选定的数据上传到 Algolia。
Hexo Algolia
Install and configure Hexo Algolia in your Hexo directory.
1
2cd hexo-site
npm install hexo-algolia在您的 Hexo 配置文件中,添加以下配置,并将应用程序 ID、仅搜索 API 密钥和 indexName 替换为在 Algolia 获取的相应字段。
1
2
3
4
5algolia:
applicationID: "Application ID"
apiKey: "Search-only API key"
indexName: "indexName"运行以下命令上传索引数据,密切关注命令的输出。
1
2
3
4
5export HEXO_ALGOLIA_INDEXING_KEY=High-privilege API key # Use Git Bash
# set HEXO_ALGOLIA_INDEXING_KEY=High-privilege API key # Use Windows command line
hexo clean
hexo algoliaHexo Algoliasearch
Install and configure Hexo Algoliasearch in your Hexo directory.
1
2cd hexo-site
npm install hexo-algoliasearch在您的 Hexo 配置文件中,添加以下配置,并将应用程序 ID、仅搜索 API 密钥、高权限 API 密钥和 indexName 替换为在 Algolia 获取的相应字段。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15algolia:
appId: "Application ID"
apiKey: "Search-only API key"
adminApiKey: "High-privilege API key"
indexName: "indexName"
chunkSize: 5000
fields:
- content:strip:truncate,0,500
- excerpt:strip
- gallery
- permalink
- photos
- slug
- tags
- title运行以下命令上传索引数据,密切关注命令的输出。
1
2hexo clean
hexo algolia
在NexT配置文件中,打开
algolia_search
的启用。同时,你需要关闭其他搜索插件,如Local Search
。你也可以根据需要调整标签中的文字。1
2
3
4
5# Algolia Search
algolia_search:
enable: true
hits:
per_page: 10
Local Search
本地搜索不需要任何外部第三方服务,可以被搜索引擎额外索引。建议大多数用户使用此搜索方法。
安装
Install
hexo-generator-searchdb
by executing the following command in site root dir:1
2
3
4[root@hexo ~]# cd /Hexo
[root@hexo Hexo]# npm install hexo-generator-searchdb
added 1 package in 4sHexo配置
Edit Hexo config file and ==add== following content:
1
2
3
4
5search:
path: search.xml
field: post
content: true
format: htmlNexT配置
Edit NexT config file to enable Local Search:
1
2
3
4
5
6
7
8
9
10
11
12
13# Local search
# Dependencies: https://github.com/next-theme/hexo-generator-searchdb
local_search:
enable: true
# If auto, trigger search by changing input.
# If manual, trigger search by pressing enter key or search button.
trigger: auto
# Show top n results per article, show all results by setting to -1
top_n_per_article: 1
# Unescape html strings to the readable one.
unescape: false
# Preload the search data when the page loads.
preload: false
聊天服务
1 | # --------------------------------------------------------------- |
Chatra
Chatra is a live chat messenger app for your website.
Enable Chatra
Visit Dashboard to get your ChatraID.
1
2
3
4
5# Chatra Support
chatra:
enable: true
async: true
id: <ChatraID>Activate sidebar button
After Chatra enabled, you can set
chat.enable
totrue
in NexT config file.1
2
3
4
5# A button to open designated chat widget in sidebar.
# Firstly, you need enable the chat service you want to activate its sidebar button.
chat:
enable: true
icon: fa fa-comment
Tidio
Tidio is a live chat messenger app for your website.
Enable Tidio
Visit Dashboard to get your Public Key.
1
2
3
4# Tidio Support
tidio:
enable: true
key: <Publick Key>Activate sidebar button
After Tidio enabled, you can set
chat.enable
totrue
in NexT config file.1
2
3
4
5# A button to open designated chat widget in sidebar.
# Firstly, you need enable the chat service you want to activate its sidebar button.
chat:
enable: true
icon: fa fa-comment
添加RSS订阅
1 | npm install hexo-generator-feed |
打开 Hexo 站点下的 _config.yml ,添加如下配置: 直接在底部复制粘贴以下内容即可
1 | # feed |
外部库文件
1 | # --------------------------------------------------------------- |
Pjax
Pjax 是一个独立的 JavaScript 模块,它使用 AJAX (XmlHttpRequest) 和 PushState() 来提供快速的浏览体验。
它允许您彻底改变标准网站(服务器端生成的或静态的)的用户体验,让用户感觉他们正在浏览应用程序,特别是对于那些带宽连接较低的用户。
请在帖子中使用图像的绝对路径或 Hexo
asset_img
标签,否则 Pjax 刷新期间图像可能无法加载。
You can enable it by setting value pjax
to true
in NexT config file.
1 | # Easily enable fast Ajax navigation on your website. |
Fancybox
NexT 支持 fancybox 插件,这是一个用于显示图像、视频等的 jQuery lightbox 脚本。 支持触摸、响应灵敏且完全可定制。
您可以通过在 NexT 配置文件中将 fancybox 值设置为 true 来启用它。
1 | fancybox: true |
Medium Zoom
Medium Zoom 是一个 JavaScript 库,用于像 Medium 一样缩放图像。
您可以通过在 NexT 配置文件中将mediumzoom 设置为 true 来启用它。
1 | # A JavaScript library for zooming images like Medium. |
Do not enable both
fancybox
andmediumzoom
.
Lazyload
Lozad.js 是现代原生 JavaScript 中的惰性加载器插件。 它会延迟长网页中图像的加载。 在用户滚动到视口之外的图像之前,不会加载它们。 这与图像预加载相反。
您可以通过在 NexT 配置文件中将延迟加载值设置为 true 来启用它。
1 | # Vanilla JavaScript plugin for lazyloading images. |
然后在站点根目录中运行以下命令以确保可以正确启用或禁用延迟加载:
1 | hexo clean |
Pangu Autospace
pangu.js会自动在页面上的所有汉字和六边形英文数字符号之间插入一个空格。
您可以通过在 NexT 配置文件中将 pangu 值设置为 true 来启用它。
1 | # Pangu Support |
Quicklink
Quicklink 是一个 JavaScript 插件,可通过在空闲时间预取视口内链接来加快后续页面加载速度。 支持 Chrome、Firefox、Edge,无需使用 polyfill。
您可以通过在 NexT 配置文件中将 Quicklink.enable 设置为 true 来启用它。
1 | ... |
Animation Effect-动画效果
NexT 默认启用动画效果,Anime.js
和 Animate.css
支持动画效果,因此它将等待 JavaScript 加载来显示内容。
如果您需要速度,可以将motion.enable
的值设置为 false
以禁用它。
编辑 NexT 配置文件并设置运动下所需的值以满足您的需求。 您可以在此处预览所有过渡变体:[NexT 动画效果预览](Animate.css (theme-next.js.org))。
1 | # --------------------------------------------------------------- |
Advanced Settings
Besides common Theme Settings and Third-party Plugins, NexT supports some advanced settings which makes NexT customizable.
请注意,如果以下这些设置错误,可能会导致异常行为。 仅当您知道它们是什么时才更改它们。
- Vendors
- Custom Files
- Injects
- Front-matter
Front Matter
Front-matter 是位于文件开头的 YAML 或 JSON 块,用于配置您的作品的设置。 当用 YAML 编写时,Front-matter 以三个破折号终止;当用 JSON 编写时,前面的内容以三个分号终止。
YAML
1 |
|
JSON
1 | "title": "Hello World", |
接下来扩展并提供更多变量。 它允许用户配置单个页面。
Settings & Their Default Values
Setting | Type | Description | Default |
---|---|---|---|
author |
string |
Author name for post copyright | author in Hexo config file |
post_link |
string |
The original link of the reposted article | None |
link |
string |
Clicking on the post title on the index or archive page will redirect to the set external link | None |
description |
string |
Docs here | None |
direction |
string |
Available value: rtl |
None |
header |
boolean |
Whether to display the post header | true |
mathjax |
boolean |
MathJax support | Depends on math.every_page in NexT config file |
sidebar |
boolean |
Whether the sidebar will be shown | Depends on sidebar.display in NexT config file |
copyright |
boolean |
Whether to display copyright notices below the post with creative_commons.license and creative_commons.post enabled |
true |
sticky |
number |
Pin the post to the top of the index page. hexo-generator-index plugin required | 0 |
quicklink |
object (1) |
Quicklink support | From NexT config file |
reward_settings |
object (1) |
Reward settings | From NexT config file |
toc |
object (1) |
Table of Contents in the sidebar | From NexT config file |
示例
1 | toc: |
测试发现,上面的语法好像不对,最终以下方式有效:
1 | toc: true |