hexo-theme-fluid 1.8.13 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -21
- package/README.md +17 -21
- package/_config.yml +164 -79
- package/languages/de.yml +58 -33
- package/languages/en.yml +58 -33
- package/languages/eo.yml +58 -33
- package/languages/es.yml +69 -0
- package/languages/ja.yml +58 -33
- package/languages/zh-CN.yml +58 -33
- package/languages/zh-HK.yml +69 -0
- package/languages/zh-TW.yml +58 -33
- package/layout/.DS_Store +0 -0
- package/layout/404.ejs +3 -1
- package/layout/{_partial → _partials}/archive-list.ejs +4 -4
- package/layout/_partials/category-chains.ejs +19 -0
- package/layout/_partials/category-list.ejs +62 -0
- package/layout/{_partial → _partials}/comments/changyan.ejs +0 -0
- package/layout/{_partial → _partials}/comments/cusdis.ejs +0 -0
- package/layout/{_partial → _partials}/comments/disqus.ejs +0 -0
- package/layout/_partials/comments/giscus.ejs +36 -0
- package/layout/{_partial → _partials}/comments/gitalk.ejs +0 -0
- package/layout/{_partial → _partials}/comments/livere.ejs +0 -0
- package/layout/{_partial → _partials}/comments/remark42.ejs +0 -0
- package/layout/{_partial → _partials}/comments/twikoo.ejs +3 -1
- package/layout/{_partial → _partials}/comments/utterances.ejs +1 -1
- package/layout/{_partial → _partials}/comments/valine.ejs +3 -1
- package/layout/{_partial → _partials}/comments/waline.ejs +6 -3
- package/layout/_partials/comments.ejs +5 -0
- package/layout/_partials/css.ejs +26 -0
- package/layout/_partials/footer/beian.ejs +33 -0
- package/layout/_partials/footer/statistics.ejs +39 -0
- package/layout/_partials/footer.ejs +18 -0
- package/layout/{_partial → _partials}/head.ejs +7 -1
- package/layout/_partials/header/banner.ejs +33 -0
- package/layout/{_partial/nav.ejs → _partials/header/navigation.ejs} +3 -2
- package/layout/_partials/header.ejs +8 -0
- package/layout/{_partial → _partials}/paginator.ejs +0 -0
- package/layout/_partials/plugins/analytics.ejs +87 -0
- package/layout/_partials/plugins/anchorjs.ejs +24 -0
- package/layout/_partials/plugins/code-widget.ejs +71 -0
- package/layout/_partials/plugins/fancybox.ejs +11 -0
- package/layout/_partials/plugins/highlight.ejs +13 -0
- package/layout/_partials/plugins/math.ejs +46 -0
- package/layout/_partials/plugins/mermaid.ejs +5 -0
- package/layout/{_partial → _partials}/plugins/nprogress.ejs +0 -0
- package/layout/_partials/plugins/typed.ejs +48 -0
- package/layout/_partials/post/category-bar.ejs +18 -0
- package/layout/_partials/post/copyright.ejs +56 -0
- package/layout/_partials/post/meta-bottom.ejs +16 -0
- package/layout/_partials/post/meta-top.ejs +63 -0
- package/layout/_partials/post/sidebar-left.ejs +10 -0
- package/layout/_partials/post/sidebar-right.ejs +10 -0
- package/layout/_partials/post/toc.ejs +34 -0
- package/layout/_partials/scripts.ejs +32 -0
- package/layout/{_partial → _partials}/search.ejs +2 -3
- package/layout/about.ejs +5 -3
- package/layout/archive.ejs +1 -1
- package/layout/categories.ejs +10 -59
- package/layout/category.ejs +1 -1
- package/layout/index.ejs +13 -15
- package/layout/layout.ejs +19 -39
- package/layout/links.ejs +2 -8
- package/layout/page.ejs +28 -12
- package/layout/post.ejs +65 -59
- package/layout/tag.ejs +1 -1
- package/package.json +11 -3
- package/scripts/.DS_Store +0 -0
- package/scripts/events/.DS_Store +0 -0
- package/scripts/events/index.js +1 -0
- package/scripts/events/lib/compatible-configs.js +7 -8
- package/scripts/events/lib/footnote.js +1 -1
- package/scripts/events/lib/hello.js +6 -2
- package/scripts/events/lib/highlight.js +93 -24
- package/scripts/events/lib/injects.js +118 -0
- package/scripts/events/lib/merge-configs.js +37 -7
- package/scripts/filters/default-injects.js +27 -0
- package/scripts/filters/post-filter.js +7 -0
- package/scripts/helpers/date.js +25 -0
- package/scripts/helpers/engine.js +9 -0
- package/scripts/helpers/export-config.js +8 -0
- package/scripts/helpers/import.js +24 -0
- package/scripts/helpers/injects.js +7 -0
- package/scripts/helpers/scope.js +44 -0
- package/scripts/helpers/utils.js +17 -2
- package/scripts/tags/checkbox.js +4 -2
- package/scripts/utils/.DS_Store +0 -0
- package/scripts/utils/object.js +5 -0
- package/scripts/utils/resolve.js +15 -0
- package/source/.DS_Store +0 -0
- package/source/css/_pages/_archive/archive.styl +28 -0
- package/source/css/_pages/_base/_widget/anchorjs.styl +8 -0
- package/source/css/_pages/_base/_widget/banner.styl +2 -11
- package/source/css/_pages/_base/_widget/board.styl +1 -4
- package/source/css/_pages/_base/_widget/code-widget.styl +36 -0
- package/source/css/_pages/_base/_widget/copyright.styl +90 -0
- package/source/css/_pages/_base/_widget/footer.styl +4 -1
- package/source/css/_pages/_base/_widget/header.styl +161 -2
- package/source/css/_pages/_base/_widget/modal.styl +100 -0
- package/source/css/_pages/_base/_widget/ngrogress.styl +12 -0
- package/source/css/_pages/_base/_widget/noscript.styl +12 -0
- package/source/css/_pages/_base/_widget/pagination.styl +23 -0
- package/source/css/_pages/_base/_widget/scroll-btn.styl +2 -15
- package/source/css/_pages/_base/_widget/toc.styl +75 -0
- package/source/css/_pages/_base/base.styl +23 -3
- package/source/css/_pages/_base/color-schema.styl +30 -58
- package/source/css/_pages/_base/inline.styl +2 -2
- package/source/css/_pages/_category/category-bar.styl +59 -0
- package/source/css/_pages/_category/category-chain.styl +6 -0
- package/source/css/_pages/_category/{categories.styl → category-list.styl} +17 -11
- package/source/css/_pages/_index/index.styl +7 -5
- package/source/css/_pages/_links/links.styl +2 -1
- package/source/css/_pages/_post/comment.styl +27 -0
- package/source/css/_pages/_post/highlight.styl +65 -0
- package/source/css/_pages/_post/markdown.styl +91 -0
- package/source/css/_pages/_post/{post.styl → post-page.styl} +44 -75
- package/source/css/_pages/_post/{tag_plugin.styl → post-tag.styl} +29 -27
- package/source/css/_variables/base.styl +30 -9
- package/source/css/highlight-dark.styl +6 -0
- package/source/css/highlight.styl +6 -0
- package/source/css/main.styl +7 -0
- package/source/img/.DS_Store +0 -0
- package/source/img/default.png +0 -0
- package/source/img/{favicon.png → fluid.png} +0 -0
- package/source/js/boot.js +1 -9
- package/source/js/color-schema.js +52 -7
- package/source/js/events.js +15 -15
- package/source/js/leancloud.js +9 -2
- package/source/js/local-search.js +2 -2
- package/source/js/plugins.js +26 -94
- package/source/js/utils.js +28 -12
- package/.editorconfig +0 -13
- package/.eslintrc +0 -224
- package/.gitattributes +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -28
- package/.github/ISSUE_TEMPLATE/bug_report_zh.md +0 -33
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/ISSUE_TEMPLATE/feature_request_zh.md +0 -20
- package/.github/ISSUE_TEMPLATE/question.md +0 -11
- package/.github/ISSUE_TEMPLATE/question_zh.md +0 -14
- package/.github/workflows/limit.yaml +0 -18
- package/README_en.md +0 -125
- package/layout/_partial/beian.ejs +0 -36
- package/layout/_partial/css.ejs +0 -47
- package/layout/_partial/footer.ejs +0 -11
- package/layout/_partial/plugins/analytics.ejs +0 -66
- package/layout/_partial/plugins/math.ejs +0 -69
- package/layout/_partial/plugins/mermaid.ejs +0 -24
- package/layout/_partial/plugins/typed.ejs +0 -41
- package/layout/_partial/post-meta.ejs +0 -51
- package/layout/_partial/scripts.ejs +0 -72
- package/layout/_partial/statistics.ejs +0 -43
- package/layout/_partial/toc.ejs +0 -4
- package/source/css/_pages/_base/_widget/copy-btn.styl +0 -42
- package/source/css/_pages/_base/rewrite.styl +0 -556
- package/source/css/_pages/_category/category.styl +0 -0
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Bug report
|
|
3
|
-
about: Create a report to help us improve
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ':bug: bug'
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
#### Make sure
|
|
10
|
-
- [ ] Upgrade the latest [release](https://github.com/fluid-dev/hexo-theme-fluid/releases).
|
|
11
|
-
- [ ] Browser does not belong to IE and other old browsers
|
|
12
|
-
- [ ] It can be replicated through `hexo clean && hexo s` and cleared browser cache in the localhost.
|
|
13
|
-
- [ ] Not affected by other Hexo plugins
|
|
14
|
-
|
|
15
|
-
#### Describe the bug
|
|
16
|
-
<!-- A clear and concise description of what the bug is. -->
|
|
17
|
-
<!-- It is better to provide related items of _config.yml -->
|
|
18
|
-
|
|
19
|
-
#### To Reproduce
|
|
20
|
-
Steps to reproduce the behavior:
|
|
21
|
-
1. Go to '...', click on '....'
|
|
22
|
-
2. Scroll down to '....'
|
|
23
|
-
3. See error
|
|
24
|
-
|
|
25
|
-
<!-- It is better to provide the page link that can be reproduced -->
|
|
26
|
-
|
|
27
|
-
#### Screenshots
|
|
28
|
-
<!-- If applicable, add screenshots to help explain your problem. -->
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Bug 报告
|
|
3
|
-
about: 创建一份 Bug 报告帮助我们优化产品
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ':bug: bug'
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
<!-- 必读 -->
|
|
10
|
-
<!-- 1. 反馈 Bug 必须按照本模板提供足够详细的复现步骤和相关配置,否则请后退使用问题求助 -->
|
|
11
|
-
<!-- 2. 功能如果不正常工作,请先检查自己的环境和 Hexo 插件,特别是从其他主题更换过来的用户(最简单的方式:新建目录重新 hexo init) -->
|
|
12
|
-
<!-- 3. 只考虑本地出现的问题,如果本地运行正常,部署后有问题,这种不属于 BUG,请清除缓存或者等 CDN 刷新 -->
|
|
13
|
-
<!-- 4. 不确定是不是 BUG 的,请后退使用问题求助 -->
|
|
14
|
-
|
|
15
|
-
#### 请确认
|
|
16
|
-
- [ ] 是当前最新的 [Release 版本](https://github.com/fluid-dev/hexo-theme-fluid/releases)
|
|
17
|
-
- [ ] 浏览器不属于 IE 等非主流浏览器
|
|
18
|
-
- [ ] 本地 `hexo clean && hexo s`,并且清除浏览器缓存,仍可复现
|
|
19
|
-
- [ ] 已经排除是其他 Hexo 插件影响
|
|
20
|
-
|
|
21
|
-
#### Bug 描述
|
|
22
|
-
<!-- 例如,当 xxx 时,xxx 功能不工作,期望是 xxx 能工作,浏览器: Chrome -->
|
|
23
|
-
<!-- 如果涉及一些功能配置,最好提供 _config.yml 里相关配置项 -->
|
|
24
|
-
|
|
25
|
-
#### 复现步骤
|
|
26
|
-
该 Bug 复现步骤如下:
|
|
27
|
-
1. 在 xxx 页面点击 xxx 按钮
|
|
28
|
-
2. 然后向下滚动
|
|
29
|
-
3. 会出现 xxx
|
|
30
|
-
|
|
31
|
-
<!-- 最好提供部署后能复现的页面地址 -->
|
|
32
|
-
|
|
33
|
-
#### 截图
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Feature request
|
|
3
|
-
about: Suggest an idea for this project
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ':sparkles: enhancement'
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
#### Make sure
|
|
10
|
-
- [ ] Difficult to implemented through [custom](https://hexo.fluid-dev.com/docs/en/guide/#custom-js-css-html).
|
|
11
|
-
- [ ] Difficult to implemented through third-party plugins.
|
|
12
|
-
|
|
13
|
-
#### Is your feature request related to a problem? Please describe
|
|
14
|
-
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]. -->
|
|
15
|
-
|
|
16
|
-
#### Describe the solution you'd like
|
|
17
|
-
<!-- A clear and concise description of what you want to happen. -->
|
|
18
|
-
|
|
19
|
-
#### Describe alternatives you've considered
|
|
20
|
-
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 功能需求或优化
|
|
3
|
-
about: 创建一份合理可行的建议帮助我们提升产品
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ':sparkles: enhancement'
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
#### 如是功能需求,请确定符合以下情况
|
|
10
|
-
- [ ] 难以通过[自定义](https://hexo.fluid-dev.com/docs/guide/#自定义-js-css-html)实现
|
|
11
|
-
- [ ] 难以通过第三方插件实现
|
|
12
|
-
|
|
13
|
-
#### 请描述该需求尝试解决的问题
|
|
14
|
-
<!-- 例如,当 xxx 时,我总是被当前 xxx 的设计所困扰。 -->
|
|
15
|
-
|
|
16
|
-
#### 请描述您认为可行的解决方案
|
|
17
|
-
<!-- 例如,添加 xxx 功能能够解决问题。 -->
|
|
18
|
-
|
|
19
|
-
#### 考虑过的替代方案
|
|
20
|
-
<!-- 例如,如果用 xxx,也能解决该问题。 -->
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Question
|
|
3
|
-
about: Ask a question about use, need help
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
#### Make sure
|
|
7
|
-
- [ ] Upgrade the latest [release](https://github.com/fluid-dev/hexo-theme-fluid/releases)
|
|
8
|
-
- [ ] No solution found in [documentations](https://hexo.fluid-dev.com/docs/en/)
|
|
9
|
-
|
|
10
|
-
#### Describe the question
|
|
11
|
-
<!-- A clear and concise description of what the question is. -->
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 问题求助
|
|
3
|
-
about: 提出一个使用过程中遇到的问题,需要得到帮助
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
#### 请确认
|
|
7
|
-
- [ ] 是当前最新的 [Release 版本](https://github.com/fluid-dev/hexo-theme-fluid/releases)
|
|
8
|
-
- [ ] 在 [用户指南](https://hexo.fluid-dev.com/docs/) 中没有找到解决办法
|
|
9
|
-
|
|
10
|
-
#### 问题描述
|
|
11
|
-
<!--
|
|
12
|
-
例如,在使用 xxx 时出现了 xxx 报错。
|
|
13
|
-
如果是页面问题,需要提供浏览器版本(如果本地样式没问题,部署后有问题,请清除浏览器缓存)。
|
|
14
|
-
-->
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
name: Limit PRs
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches:
|
|
6
|
-
- master
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
limit_master_pr:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
name: Limits PR to master
|
|
12
|
-
steps:
|
|
13
|
-
- name: Limit action step
|
|
14
|
-
id: limit_action
|
|
15
|
-
uses: LukBukkit/action-pr-limits@v1
|
|
16
|
-
with:
|
|
17
|
-
whitelist: |
|
|
18
|
-
develop
|
package/README_en.md
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img alt="Fluid Logo" src="https://avatars2.githubusercontent.com/t/3419353?s=280&v=4" width="128">
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<p align="center">An elegant Material-Design theme for Hexo</p>
|
|
6
|
-
|
|
7
|
-

|
|
8
|
-
|
|
9
|
-
<p align="center">
|
|
10
|
-
<a title="Hexo Version" target="_blank" href="https://hexo.io"><img alt="Hexo Version" src="https://img.shields.io/badge/Hexo-%3E%3D%203.0-orange?style=flat"></a>
|
|
11
|
-
<a title="Node Version" target="_blank" href="https://nodejs.org"><img alt="Node Version" src="https://img.shields.io/badge/Node-%3E%3D%208.10.0-yellowgreen?style=flat"></a>
|
|
12
|
-
<a title="License" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/blob/master/LICENSE"><img alt="License" src="https://img.shields.io/github/license/fluid-dev/hexo-theme-fluid.svg?style=flat"></a>
|
|
13
|
-
<br>
|
|
14
|
-
<a title="GitHub Release" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/releases"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/fluid-dev/hexo-theme-fluid?style=flat"></a>
|
|
15
|
-
<a title="Npm Downloads" target="_blank" href="https://www.npmjs.com/package/hexo-theme-fluid"><img alt="Npm Downloads" src="https://img.shields.io/npm/dt/hexo-theme-fluid?color=red&label=npm"></a>
|
|
16
|
-
<a title="GitHub Commits" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/commits/master"><img alt="GitHub Commits" src="https://img.shields.io/github/commit-activity/m/fluid-dev/hexo-theme-fluid.svg?style=flat&color=brightgreen&label=commits"></a>
|
|
17
|
-
<br><br>
|
|
18
|
-
<a title="GitHub Watchers" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/watchers"><img alt="GitHub Watchers" src="https://img.shields.io/github/watchers/fluid-dev/hexo-theme-fluid.svg?label=Watchers&style=social"></a>
|
|
19
|
-
<a title="GitHub Stars" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/stargazers"><img alt="GitHub Stars" src="https://img.shields.io/github/stars/fluid-dev/hexo-theme-fluid.svg?label=Stars&style=social"></a>
|
|
20
|
-
<a title="GitHub Forks" target="_blank" href="https://github.com/fluid-dev/hexo-theme-fluid/network/members"><img alt="GitHub Forks" src="https://img.shields.io/github/forks/fluid-dev/hexo-theme-fluid.svg?label=Forks&style=social"></a>
|
|
21
|
-
</p>
|
|
22
|
-
|
|
23
|
-
<p align="center"><a title="Chinese" href="README.md">🇨🇳 中文简体</a> | 🇬🇧 English</p>
|
|
24
|
-
|
|
25
|
-
<p align="center">
|
|
26
|
-
<span>Docs:</span>
|
|
27
|
-
<a href="https://hexo.fluid-dev.com/docs/en/guide/">Theme-Guide</a>    
|
|
28
|
-
<a href="https://hexo.io/docs/front-matter">Post-Guide</a>
|
|
29
|
-
</p>
|
|
30
|
-
|
|
31
|
-
<p align="center">
|
|
32
|
-
<span>Preview: </span>
|
|
33
|
-
<a href="https://hexo.fluid-dev.com/">Fluid's blog</a>    
|
|
34
|
-
<a href="https://zkqiang.cn">zkqiang's blog</a>
|
|
35
|
-
</p>
|
|
36
|
-
|
|
37
|
-
## Quick Start
|
|
38
|
-
|
|
39
|
-
#### 1. Install Hexo
|
|
40
|
-
|
|
41
|
-
If you don't have a hexo blog, please follow [Hexo Docs](https://hexo.io/docs/) to install and initialize your blog。
|
|
42
|
-
|
|
43
|
-
#### 2. Install Fluid
|
|
44
|
-
|
|
45
|
-
**Way A:**
|
|
46
|
-
|
|
47
|
-
If your Hexo version >= 5.0.0, you can install Fluid via Npm:
|
|
48
|
-
|
|
49
|
-
```sh
|
|
50
|
-
npm install --save hexo-theme-fluid
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Then create `_config.fluid.yml` in the blog directory and copy the content of [_config.yml](https://github.com/fluid-dev/hexo-theme-fluid/blob/master/_config.yml).
|
|
54
|
-
|
|
55
|
-
**Way B:**
|
|
56
|
-
|
|
57
|
-
Download the [latest release](https://github.com/fluid-dev/hexo-theme-fluid/releases), then extract it to `themes` directory and renamed to `fluid`.
|
|
58
|
-
|
|
59
|
-
#### 3. Set theme
|
|
60
|
-
|
|
61
|
-
Edit `_config.yml` in the blog root directory as follows:
|
|
62
|
-
|
|
63
|
-
```yaml
|
|
64
|
-
theme: fluid
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
#### 4. Create about page
|
|
68
|
-
|
|
69
|
-
The about page needs to be created manually:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
hexo new page about
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Then edit `/source/about/index.md` and add `layout` attribute.
|
|
76
|
-
|
|
77
|
-
The modified example is as follows:
|
|
78
|
-
|
|
79
|
-
```yaml
|
|
80
|
-
---
|
|
81
|
-
title: about
|
|
82
|
-
date: 2020-02-23 19:20:33
|
|
83
|
-
layout: about
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
About content
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## How to Upgrade
|
|
90
|
-
|
|
91
|
-
[Please follow here](https://hexo.fluid-dev.com/docs/en/start/#theme-upgrade)
|
|
92
|
-
|
|
93
|
-
## Features
|
|
94
|
-
|
|
95
|
-
- [x] Image lazyload
|
|
96
|
-
- [x] Custom code highlighting scheme
|
|
97
|
-
- [x] Internationalization
|
|
98
|
-
- [x] Support for multiple comment plugins
|
|
99
|
-
- [x] Support for storing configuration in [Data Files](https://hexo.io/docs/data-files.html)
|
|
100
|
-
- [x] Custom static resource CDN
|
|
101
|
-
- [x] Detailed [documents](https://hexo.fluid-dev.com/docs/en/)
|
|
102
|
-
- [x] Built-in search plugin
|
|
103
|
-
- [x] Website analysis
|
|
104
|
-
- [x] Support for footnote
|
|
105
|
-
- [x] Support for LaTeX
|
|
106
|
-
- [x] Support for mermaid
|
|
107
|
-
- [x] Dark mode
|
|
108
|
-
|
|
109
|
-
## Contributors
|
|
110
|
-
|
|
111
|
-
[](https://github.com/fluid-dev/hexo-theme-fluid/graphs/contributors)
|
|
112
|
-
|
|
113
|
-
English docs translator:[@EatRice](https://eatrice.top/) [@橙子杀手](https://ruru.eatrice.top)
|
|
114
|
-
|
|
115
|
-
Contributors outside PR:[@zhugaoqi](https://github.com/zhugaoqi) [@julydate](https://github.com/julydate)
|
|
116
|
-
|
|
117
|
-
## Thanks
|
|
118
|
-
|
|
119
|
-
<a title="Thanks to JetBrains for providing the license" href="https://www.jetbrains.com/?from=hexo-theme-fluid" target="_blank">
|
|
120
|
-
<img src="https://raw.githubusercontent.com/fluid-dev/static/690616966f34a58d66aa15ac7b550dd7bbc03967/hexo-theme-fluid/jetbrains.svg" width="150" alt="JetBrains">
|
|
121
|
-
</a>
|
|
122
|
-
|
|
123
|
-
## Star Trending
|
|
124
|
-
|
|
125
|
-
[](https://starchart.cc/fluid-dev/hexo-theme-fluid)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<% if(theme.footer.beian.enable) { %>
|
|
2
|
-
<!-- 备案信息 -->
|
|
3
|
-
<div class="beian">
|
|
4
|
-
<span>
|
|
5
|
-
<a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">
|
|
6
|
-
<%- theme.footer.beian.icp_text %>
|
|
7
|
-
</a>
|
|
8
|
-
</span>
|
|
9
|
-
<% if(theme.footer.beian.police_text) { %>
|
|
10
|
-
<% if(theme.footer.beian.police_code) { %>
|
|
11
|
-
<span>
|
|
12
|
-
<a
|
|
13
|
-
href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=<%= theme.footer.beian.police_code %>"
|
|
14
|
-
rel="nofollow noopener"
|
|
15
|
-
class="beian-police"
|
|
16
|
-
target="_blank"
|
|
17
|
-
>
|
|
18
|
-
<% if(theme.footer.beian.police_icon) { %>
|
|
19
|
-
<span style="visibility: hidden; width: 0">|</span>
|
|
20
|
-
<img src="<%= url_for(theme.footer.beian.police_icon) %>" alt="police-icon"/>
|
|
21
|
-
<% } %>
|
|
22
|
-
<span><%- theme.footer.beian.police_text %></span>
|
|
23
|
-
</a>
|
|
24
|
-
</span>
|
|
25
|
-
<% } else { %>
|
|
26
|
-
<span class="beian-police">
|
|
27
|
-
<% if(theme.footer.beian.police_icon) { %>
|
|
28
|
-
<span style="visibility: hidden; width: 0">|</span>
|
|
29
|
-
<img src="<%= url_for(theme.footer.beian.police_icon) %>" alt="police-icon"/>
|
|
30
|
-
<% } %>
|
|
31
|
-
<span class="beian-police"><%- theme.footer.beian.police_text %></span>
|
|
32
|
-
</span>
|
|
33
|
-
<% } %>
|
|
34
|
-
<% } %>
|
|
35
|
-
</div>
|
|
36
|
-
<% } %>
|
package/layout/_partial/css.ejs
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<%- css_ex(theme.static_prefix.bootstrap, 'css/bootstrap.min.css') %>
|
|
2
|
-
|
|
3
|
-
<% if (is_post() || is_page()) { %>
|
|
4
|
-
<%- css_ex(theme.static_prefix.github_markdown, 'github-markdown.min.css') %>
|
|
5
|
-
<%- css_ex(theme.static_prefix.hint, 'hint.min.css') %>
|
|
6
|
-
|
|
7
|
-
<% if (theme.code.highlight.enable) { %>
|
|
8
|
-
<% var cssName %>
|
|
9
|
-
<% if (theme.code.highlight.lib === 'highlightjs') { %>
|
|
10
|
-
<% cssName = theme.code.highlight.highlightjs.style.toLowerCase().replace(/([^0-9])\s([^0-9])/g, '$1-$2').replace(/\s/g, '') %>
|
|
11
|
-
<%- css_ex(theme.static_prefix.highlightjs, `/styles/${ cssName }.min.css`) %>
|
|
12
|
-
<% } else if (theme.code.highlight.lib === 'prismjs') { %>
|
|
13
|
-
<% var style = theme.code.highlight.prismjs.style %>
|
|
14
|
-
<% if (/\.css$/.test(style)) { %>
|
|
15
|
-
<%- css(style) %>
|
|
16
|
-
<% } else { %>
|
|
17
|
-
<% if (!style || style === 'default') { %>
|
|
18
|
-
<% cssName = '' %>
|
|
19
|
-
<% } else { %>
|
|
20
|
-
<% cssName = style.toLowerCase().replace(/[\s\-]/g, '') %>
|
|
21
|
-
<% if (cssName === 'prism') { cssName = '' } %>
|
|
22
|
-
<% if (cssName === 'tomorrownight') { cssName = 'tomorrow' } %>
|
|
23
|
-
<% } %>
|
|
24
|
-
<%- css_ex(theme.static_prefix.prismjs, `/themes/${ cssName ? 'prism-' + cssName : 'prism' }.min.css`) %>
|
|
25
|
-
<% } %>
|
|
26
|
-
<% if (theme.code.highlight.line_number) { %>
|
|
27
|
-
<%- css_ex(theme.static_prefix.prismjs, '/plugins/line-numbers/prism-line-numbers.min.css') %>
|
|
28
|
-
<% } %>
|
|
29
|
-
<% } %>
|
|
30
|
-
<% } %>
|
|
31
|
-
|
|
32
|
-
<% if (theme.post.image_zoom.enable && page.image_zoom !== false) { %>
|
|
33
|
-
<%- css_ex(theme.static_prefix.fancybox, 'jquery.fancybox.min.css') %>
|
|
34
|
-
<% } %>
|
|
35
|
-
<% } %>
|
|
36
|
-
|
|
37
|
-
<!-- 主题依赖的图标库,不要自行修改 -->
|
|
38
|
-
<%- css('//at.alicdn.com/t/font_1749284_ba1fz6golrf.css') %>
|
|
39
|
-
|
|
40
|
-
<%- css(theme.static_prefix.iconfont || theme.iconfont) %>
|
|
41
|
-
|
|
42
|
-
<%- css_ex(theme.static_prefix.internal_css, 'main.css') %>
|
|
43
|
-
|
|
44
|
-
<!-- 自定义样式保持在最底部 -->
|
|
45
|
-
<% if (theme.custom_css) { %>
|
|
46
|
-
<%- css(theme.custom_css) %>
|
|
47
|
-
<% } %>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<footer class="text-center mt-5 py-3">
|
|
2
|
-
<div class="footer-content">
|
|
3
|
-
<%- theme.footer.content %>
|
|
4
|
-
</div>
|
|
5
|
-
<%- partial('_partial/statistics.ejs') %>
|
|
6
|
-
<%- partial('_partial/beian.ejs') %>
|
|
7
|
-
<% if(theme.web_analytics.cnzz) { %>
|
|
8
|
-
<!-- cnzz Analytics Icon -->
|
|
9
|
-
<span id="cnzz_stat_icon_<%= theme.web_analytics.cnzz %>" style="display: none"></span>
|
|
10
|
-
<% } %>
|
|
11
|
-
</footer>
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
<% if (theme.web_analytics.enable) { %>
|
|
2
|
-
|
|
3
|
-
<% if(theme.web_analytics.baidu) { %>
|
|
4
|
-
<!-- Baidu Analytics -->
|
|
5
|
-
<script defer>
|
|
6
|
-
var _hmt = _hmt || [];
|
|
7
|
-
(function () {
|
|
8
|
-
var hm = document.createElement("script");
|
|
9
|
-
hm.src = "https://hm.baidu.com/hm.js?<%= theme.web_analytics.baidu %>";
|
|
10
|
-
var s = document.getElementsByTagName("script")[0];
|
|
11
|
-
s.parentNode.insertBefore(hm, s);
|
|
12
|
-
})();
|
|
13
|
-
</script>
|
|
14
|
-
<% } %>
|
|
15
|
-
|
|
16
|
-
<% if (theme.web_analytics.google){ %>
|
|
17
|
-
<!-- Google Analytics -->
|
|
18
|
-
<script defer>
|
|
19
|
-
window.ga = window.ga || function () { (ga.q = ga.q || []).push(arguments) };
|
|
20
|
-
ga.l = +new Date;
|
|
21
|
-
ga('create', '<%= theme.web_analytics.google %>', 'auto');
|
|
22
|
-
ga('send', 'pageview');
|
|
23
|
-
</script>
|
|
24
|
-
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
|
25
|
-
<% } %>
|
|
26
|
-
|
|
27
|
-
<% if (theme.web_analytics.gtag){ %>
|
|
28
|
-
<!-- Google gtag.js -->
|
|
29
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=<%- theme.web_analytics.gtag %>"></script>
|
|
30
|
-
<script defer>
|
|
31
|
-
window.dataLayer = window.dataLayer || [];
|
|
32
|
-
function gtag(){dataLayer.push(arguments);}
|
|
33
|
-
gtag('js', new Date());
|
|
34
|
-
gtag('config', '<%- theme.web_analytics.gtag %>');
|
|
35
|
-
</script>
|
|
36
|
-
<% } %>
|
|
37
|
-
|
|
38
|
-
<% if(theme.web_analytics.tencent && theme.web_analytics.tencent.sid && theme.web_analytics.tencent.cid) { %>
|
|
39
|
-
<!-- Tencent Analytics -->
|
|
40
|
-
<script defer>
|
|
41
|
-
var _mtac = {};
|
|
42
|
-
(function () {
|
|
43
|
-
var mta = document.createElement("script");
|
|
44
|
-
mta.src = "//pingjs.qq.com/h5/stats.js?v2.0.4";
|
|
45
|
-
mta.setAttribute("name", "MTAH5");
|
|
46
|
-
mta.setAttribute("sid", "<%= theme.web_analytics.tencent.sid %>");
|
|
47
|
-
<% if(theme.web_analytics.tencent.cid) { %>
|
|
48
|
-
mta.setAttribute("cid", "<%= theme.web_analytics.tencent.cid %>");
|
|
49
|
-
<% } %>
|
|
50
|
-
var s = document.getElementsByTagName("script")[0];
|
|
51
|
-
s.parentNode.insertBefore(mta, s);
|
|
52
|
-
})();
|
|
53
|
-
</script>
|
|
54
|
-
<% } %>
|
|
55
|
-
|
|
56
|
-
<% if(theme.web_analytics.woyaola) { %>
|
|
57
|
-
<!-- 51.la Analytics -->
|
|
58
|
-
<script defer type="text/javascript" src="//js.users.51.la/<%= theme.web_analytics.woyaola %>.js"></script>
|
|
59
|
-
<% } %>
|
|
60
|
-
|
|
61
|
-
<% if(theme.web_analytics.cnzz) { %>
|
|
62
|
-
<!-- cnzz Analytics -->
|
|
63
|
-
<script defer src="//s4.cnzz.com/z_stat.php?id=<%- theme.web_analytics.cnzz %>&show=pic"
|
|
64
|
-
type="text/javascript"></script>
|
|
65
|
-
<% } %>
|
|
66
|
-
<% } %>
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
<%
|
|
2
|
-
var enable = theme.post.math.enable;
|
|
3
|
-
|
|
4
|
-
if (enable) {
|
|
5
|
-
if (is_post()) {
|
|
6
|
-
enable = !theme.post.math.specific || (theme.post.math.specific && page.math);
|
|
7
|
-
} else if (is_page()) {
|
|
8
|
-
enable = page.math;
|
|
9
|
-
} else {
|
|
10
|
-
enable = false;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
var lazy = false;
|
|
15
|
-
if (theme.lazyload.enable) {
|
|
16
|
-
var verRe = theme.static_prefix.mathjax.match(/@(\d{1,2})\.?(\d{0,2})\.?(\d{0,2})/);
|
|
17
|
-
if (verRe.length >= 4) {
|
|
18
|
-
ver = `${verRe[1]}.${verRe[2] || 'x'}.${verRe[3] || 'x'}`;
|
|
19
|
-
lazy = compareVersions(ver, '3.2.0') >= 0;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
%>
|
|
23
|
-
|
|
24
|
-
<% if (enable) { %>
|
|
25
|
-
<% var engine = theme.post.math.engine; %>
|
|
26
|
-
|
|
27
|
-
<% if(engine === 'mathjax') { %>
|
|
28
|
-
<!-- MathJax -->
|
|
29
|
-
<script>
|
|
30
|
-
MathJax = {
|
|
31
|
-
tex: {
|
|
32
|
-
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
|
33
|
-
},
|
|
34
|
-
loader: {
|
|
35
|
-
<%- lazy ? 'load: \[\'ui/lazy\'\]' : undefined %>
|
|
36
|
-
},
|
|
37
|
-
options: {
|
|
38
|
-
renderActions: {
|
|
39
|
-
findScript: [10, doc => {
|
|
40
|
-
document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
|
|
41
|
-
const display = !!node.type.match(/; *mode=display/);
|
|
42
|
-
const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
|
|
43
|
-
const text = document.createTextNode('');
|
|
44
|
-
node.parentNode.replaceChild(text, node);
|
|
45
|
-
math.start = { node: text, delim: '', n: 0 };
|
|
46
|
-
math.end = { node: text, delim: '', n: 0 };
|
|
47
|
-
doc.math.push(math);
|
|
48
|
-
});
|
|
49
|
-
}, '', false],
|
|
50
|
-
insertedScript: [200, () => {
|
|
51
|
-
document.querySelectorAll('mjx-container').forEach(node => {
|
|
52
|
-
let target = node.parentNode;
|
|
53
|
-
if (target.nodeName.toLowerCase() === 'li') {
|
|
54
|
-
target.parentNode.classList.add('has-jax');
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}, '', false]
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
</script>
|
|
62
|
-
|
|
63
|
-
<%- js_ex(theme.static_prefix.mathjax, "tex-svg.js", 'async') %>
|
|
64
|
-
|
|
65
|
-
<% } else if (engine === 'katex') { %>
|
|
66
|
-
<!-- KaTeX -->
|
|
67
|
-
<%- css_ex(theme.static_prefix.katex, "katex.min.css") %>
|
|
68
|
-
<% } %>
|
|
69
|
-
<% } %>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<%
|
|
2
|
-
var enable = theme.post.mermaid.enable;
|
|
3
|
-
|
|
4
|
-
if (enable) {
|
|
5
|
-
if (is_post()) {
|
|
6
|
-
enable = !theme.post.mermaid.specific || (theme.post.mermaid.specific && page.mermaid);
|
|
7
|
-
} else if (is_page()) {
|
|
8
|
-
enable = page.mermaid;
|
|
9
|
-
} else {
|
|
10
|
-
enable = false;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
var options = JSON.stringify(theme.post.mermaid.options);
|
|
15
|
-
%>
|
|
16
|
-
|
|
17
|
-
<% if (enable) { %>
|
|
18
|
-
<%- js_ex(theme.static_prefix.mermaid, 'mermaid.min.js') %>
|
|
19
|
-
<script>
|
|
20
|
-
if (window.mermaid) {
|
|
21
|
-
mermaid.initialize(<%- options %>);
|
|
22
|
-
}
|
|
23
|
-
</script>
|
|
24
|
-
<% } %>
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<% if(theme.fun_features.typing.enable && page.subtitle !== false) { %>
|
|
2
|
-
<%- js_ex(theme.static_prefix.typed, '/typed.min.js') %>
|
|
3
|
-
<script>
|
|
4
|
-
(function (window, document) {
|
|
5
|
-
var typing = Fluid.plugins.typing;
|
|
6
|
-
var title = document.getElementById('subtitle').title;
|
|
7
|
-
<% if (is_home() && theme.index.slogan.api && theme.index.slogan.api.enable) { %>
|
|
8
|
-
jQuery.ajax({
|
|
9
|
-
type: '<%= theme.index.slogan.api.method %>',
|
|
10
|
-
url: '<%= theme.index.slogan.api.url %>',
|
|
11
|
-
headers: <%- JSON.stringify(theme.index.slogan.api.headers || {}) %>,
|
|
12
|
-
dataType: 'json',
|
|
13
|
-
success: function(result) {
|
|
14
|
-
var text;
|
|
15
|
-
if (result) {
|
|
16
|
-
var keys = '<%= theme.index.slogan.api.keys %>'.split(',');
|
|
17
|
-
if (result instanceof Array) {
|
|
18
|
-
result = result[0];
|
|
19
|
-
}
|
|
20
|
-
for (const k of keys) {
|
|
21
|
-
var value = result[k];
|
|
22
|
-
if (typeof value === 'string') {
|
|
23
|
-
text = value;
|
|
24
|
-
break;
|
|
25
|
-
} else if (value instanceof Object) {
|
|
26
|
-
result = value;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
text ? typing(text) : typing(title);
|
|
31
|
-
},
|
|
32
|
-
error: function() {
|
|
33
|
-
typing(title);
|
|
34
|
-
}
|
|
35
|
-
})
|
|
36
|
-
<% } else { %>
|
|
37
|
-
typing(title);
|
|
38
|
-
<% } %>
|
|
39
|
-
})(window, document);
|
|
40
|
-
</script>
|
|
41
|
-
<% } %>
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<div class="mt-3">
|
|
2
|
-
<% if (theme.post.meta.author && theme.post.meta.author.enable && (page.author || config.author)) { %>
|
|
3
|
-
<span class="post-meta mr-2">
|
|
4
|
-
<i class="iconfont icon-author" aria-hidden="true"></i>
|
|
5
|
-
<%- page.author || config.author %>
|
|
6
|
-
</span>
|
|
7
|
-
<% } %>
|
|
8
|
-
<% if (theme.post.meta.date.enable) { %>
|
|
9
|
-
<span class="post-meta">
|
|
10
|
-
<i class="iconfont icon-date-fill" aria-hidden="true"></i>
|
|
11
|
-
<time datetime="<%= full_date(page.date, 'YYYY-MM-DD HH:mm') %>" pubdate>
|
|
12
|
-
<%= full_date(page.date, theme.post.meta.date.format) %>
|
|
13
|
-
</time>
|
|
14
|
-
</span>
|
|
15
|
-
<% } %>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<div class="mt-1">
|
|
19
|
-
<% if (theme.post.meta.wordcount.enable) { %>
|
|
20
|
-
<span class="post-meta mr-2">
|
|
21
|
-
<i class="iconfont icon-chart"></i>
|
|
22
|
-
<%- theme.post.meta.wordcount.format.replace('{}', wordcount(page)) %>
|
|
23
|
-
</span>
|
|
24
|
-
<% } %>
|
|
25
|
-
|
|
26
|
-
<% if (theme.post.meta.min2read.enable) { %>
|
|
27
|
-
<span class="post-meta mr-2">
|
|
28
|
-
<i class="iconfont icon-clock-fill"></i>
|
|
29
|
-
<% var awl = parseInt(theme.post.meta.min2read.awl) %>
|
|
30
|
-
<% var wpm = parseInt(theme.post.meta.min2read.wpm) %>
|
|
31
|
-
<%- theme.post.meta.min2read.format.replace('{}', min2read(page, { awl: awl, wpm: wpm })) %>
|
|
32
|
-
</span>
|
|
33
|
-
<% } %>
|
|
34
|
-
|
|
35
|
-
<% var views_texts = theme.post.meta.views.format.split('{}') %>
|
|
36
|
-
<% if (theme.post.meta.views.enable) { %>
|
|
37
|
-
<% if (theme.post.meta.views.source === 'leancloud') { %>
|
|
38
|
-
<!-- LeanCloud 统计文章PV -->
|
|
39
|
-
<span id="leancloud-page-views-container" class="post-meta" style="display: none">
|
|
40
|
-
<i class="iconfont icon-eye" aria-hidden="true"></i>
|
|
41
|
-
<%- views_texts[0] %><span id="leancloud-page-views"></span><%- views_texts[1] %>
|
|
42
|
-
</span>
|
|
43
|
-
<% } else if (theme.post.meta.views.source === 'busuanzi') { %>
|
|
44
|
-
<!-- 不蒜子统计文章PV -->
|
|
45
|
-
<span id="busuanzi_container_page_pv" style="display: none">
|
|
46
|
-
<i class="iconfont icon-eye" aria-hidden="true"></i>
|
|
47
|
-
<%- views_texts[0] %><span id="busuanzi_value_page_pv"></span><%- views_texts[1] %>
|
|
48
|
-
</span>
|
|
49
|
-
<% } %>
|
|
50
|
-
<% } %>
|
|
51
|
-
</div>
|