hexo-theme-fluid 1.9.7 → 1.9.9
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/README.md +7 -18
- package/_config.yml +83 -30
- package/languages/de.yml +5 -0
- package/languages/en.yml +5 -0
- package/languages/eo.yml +5 -0
- package/languages/es.yml +5 -0
- package/languages/ja.yml +5 -0
- package/languages/ru.yml +6 -1
- package/languages/zh-CN.yml +5 -0
- package/languages/zh-HK.yml +5 -0
- package/languages/zh-TW.yml +11 -6
- package/layout/_partials/comments/cusdis.ejs +33 -1
- package/layout/_partials/comments/disqus.ejs +6 -1
- package/layout/_partials/comments/waline.ejs +4 -4
- package/layout/_partials/css.ejs +1 -1
- package/layout/_partials/footer/statistics.ejs +37 -2
- package/layout/_partials/footer.ejs +0 -4
- package/layout/_partials/head.ejs +5 -0
- package/layout/_partials/header/banner.ejs +39 -3
- package/layout/_partials/header/navigation.ejs +74 -1
- package/layout/_partials/plugins/analytics.ejs +19 -19
- package/layout/_partials/plugins/typed.ejs +4 -0
- package/layout/_partials/post/copyright.ejs +8 -2
- package/layout/_partials/post/meta-top.ejs +14 -0
- package/layout/_partials/post/toc.ejs +66 -2
- package/layout/about.ejs +1 -1
- package/layout/index.ejs +1 -0
- package/package.json +1 -1
- package/scripts/events/index.js +1 -0
- package/scripts/events/lib/footnote.js +11 -2
- package/scripts/events/lib/random-banner.js +45 -0
- package/scripts/filters/post-filter.js +24 -1
- package/scripts/helpers/wordcount.js +3 -6
- package/scripts/tags/checkbox.js +2 -1
- package/scripts/tags/fold.js +1 -1
- package/scripts/tags/note.js +1 -1
- package/source/css/_pages/_base/_widget/header.styl +98 -0
- package/source/css/_pages/_base/_widget/toc.styl +32 -1
- package/source/css/_pages/_base/base.styl +3 -0
- package/source/css/_pages/_base/keyframes.styl +8 -0
- package/source/css/_pages/_post/post-page.styl +6 -4
- package/source/img/random/default.png +0 -0
- package/source/js/color-schema.js +34 -21
- package/source/js/events.js +48 -3
- package/source/js/openkounter.js +173 -0
- package/source/js/umami-view.js +101 -0
- package/source/js/utils.js +11 -6
package/README.md
CHANGED
|
@@ -111,18 +111,16 @@ layout: about
|
|
|
111
111
|
<table>
|
|
112
112
|
<thead>
|
|
113
113
|
<tr>
|
|
114
|
-
<th align="center" style="width: 240px;">
|
|
115
|
-
<a href="https://flowus.cn/share/eebf2144-8db7-4d68-b31e-bc2c116871de">
|
|
116
|
-
<img src="https://github-production-user-asset-6210df.s3.amazonaws.com/32983588/243899272-092eeb46-9172-4c10-9e72-53561ff37a00.png" height="200px"><br>
|
|
117
|
-
<sub>首席赞助商 ORENCEAI</sub><br>
|
|
118
|
-
<sub>全新的 ChatGPT 人工智能对话平台</sub>
|
|
119
|
-
</a>
|
|
120
|
-
</th>
|
|
121
114
|
<th align="center" style="width: 240px;">
|
|
122
115
|
<a href="https://www.jetbrains.com/?from=hexo-theme-fluid">
|
|
123
116
|
<img src="https://raw.githubusercontent.com/fluid-dev/static/690616966f34a58d66aa15ac7b550dd7bbc03967/hexo-theme-fluid/jetbrains.svg" height="200px"><br>
|
|
124
117
|
<sub>免费开发工具提供方 JetBrains</sub><br>
|
|
125
|
-
|
|
118
|
+
</a>
|
|
119
|
+
</th>
|
|
120
|
+
<th align="center" style="width: 240px;">
|
|
121
|
+
<a href="https://dartnode.com">
|
|
122
|
+
<img src="https://dartnode.com/branding/DN-Open-Source-sm.png" height="200px"><br>
|
|
123
|
+
<sub>免费 VPS 提供方 DartNode</sub><br>
|
|
126
124
|
</a>
|
|
127
125
|
</th>
|
|
128
126
|
</tr>
|
|
@@ -146,21 +144,12 @@ layout: about
|
|
|
146
144
|
<table>
|
|
147
145
|
<thead>
|
|
148
146
|
<tr>
|
|
149
|
-
<th align="center"
|
|
147
|
+
<th align="center" width="240">
|
|
150
148
|
<div>
|
|
151
149
|
<img src="https://github.com/fluid-dev/static/blob/master/hexo-theme-fluid/sponsor.png?s=200&v=4" height="200px" alt="微信赞赏码"><br>
|
|
152
150
|
<sub>微信赞赏码</sub>
|
|
153
151
|
</div>
|
|
154
152
|
</th>
|
|
155
|
-
<th align="center" style="width: 240px;">
|
|
156
|
-
<div>
|
|
157
|
-
<a href="https://etherscan.io/address/0x0021395954710be29c0BFDCB3f98f4D2fa5A1448">
|
|
158
|
-
<img src="https://avatars.githubusercontent.com/u/6250754?s=200&v=4" height="200px" alt="ERC20 Token">
|
|
159
|
-
</a>
|
|
160
|
-
<br>
|
|
161
|
-
<sub>ERC20 Token: 0x0021395954710<br>be29c0BFDCB3f98f4D2fa5A1448</sub>
|
|
162
|
-
</div>
|
|
163
|
-
</th>
|
|
164
153
|
</tr>
|
|
165
154
|
</thead>
|
|
166
155
|
</table>
|
package/_config.yml
CHANGED
|
@@ -24,7 +24,7 @@ favicon: /img/fluid.png
|
|
|
24
24
|
# Icon for Apple touch
|
|
25
25
|
apple_touch_icon: /img/fluid.png
|
|
26
26
|
|
|
27
|
-
#
|
|
27
|
+
# 浏览器标签页中的标题分隔符,效果:文章名 - 站点名
|
|
28
28
|
# Title separator in browser tab, eg: article - site
|
|
29
29
|
tab_title_separator: " - "
|
|
30
30
|
|
|
@@ -62,7 +62,7 @@ code:
|
|
|
62
62
|
highlightjs:
|
|
63
63
|
# 在链接中挑选 style 填入
|
|
64
64
|
# Select a style in the link
|
|
65
|
-
# See: https://highlightjs.org/
|
|
65
|
+
# See: https://highlightjs.org/demo/
|
|
66
66
|
style: "github gist"
|
|
67
67
|
style_dark: "dark"
|
|
68
68
|
|
|
@@ -109,8 +109,10 @@ fun_features:
|
|
|
109
109
|
element: h1,h2,h3,h4,h5,h6
|
|
110
110
|
# Options: left | right
|
|
111
111
|
placement: left
|
|
112
|
-
|
|
112
|
+
|
|
113
|
+
# Options: hover | always
|
|
113
114
|
visible: hover
|
|
115
|
+
|
|
114
116
|
# Options: § | # | ❡
|
|
115
117
|
icon: ""
|
|
116
118
|
|
|
@@ -128,7 +130,7 @@ fun_features:
|
|
|
128
130
|
dark_mode:
|
|
129
131
|
enable: true
|
|
130
132
|
# 默认的选项(当用户手动切换后则不再按照默认模式),选择 `auto` 会优先遵循 prefers-color-scheme,其次按用户本地时间 18 点到次日 6 点之间进入暗色模式
|
|
131
|
-
# Default option (when the visitor switches manually, the default mode is no longer followed), choosing `auto` will give priority to prefers-color-scheme, and then enter the dark mode from 18:00 to 6:00 in the visitor
|
|
133
|
+
# Default option (when the visitor switches manually, the default mode is no longer followed), choosing `auto` will give priority to prefers-color-scheme, and then enter the dark mode from 18:00 to 6:00 in the visitor's local time
|
|
132
134
|
# Options: auto | light | dark
|
|
133
135
|
default: auto
|
|
134
136
|
|
|
@@ -154,7 +156,7 @@ color:
|
|
|
154
156
|
navbar_text_color_dark: "#d0d0d0"
|
|
155
157
|
|
|
156
158
|
# 副标题字体色
|
|
157
|
-
# Color of
|
|
159
|
+
# Color of subtitle text
|
|
158
160
|
subtitle_color: "#fff"
|
|
159
161
|
subtitle_color_dark: "#d0d0d0"
|
|
160
162
|
|
|
@@ -239,7 +241,7 @@ custom_css:
|
|
|
239
241
|
|
|
240
242
|
# 网页访问统计
|
|
241
243
|
# Analysis of website visitors
|
|
242
|
-
web_analytics:
|
|
244
|
+
web_analytics:
|
|
243
245
|
enable: false
|
|
244
246
|
|
|
245
247
|
# 遵循访客浏览器"请勿追踪"的设置,如果开启则不统计其访问
|
|
@@ -265,16 +267,6 @@ web_analytics: # 网页访问统计
|
|
|
265
267
|
sid:
|
|
266
268
|
cid:
|
|
267
269
|
|
|
268
|
-
# 51.la 站点统计 ID
|
|
269
|
-
# 51.la analytics
|
|
270
|
-
# See: https://www.51.la/user/site/index
|
|
271
|
-
woyaola: # 51.la 站点统计 ID,参见
|
|
272
|
-
|
|
273
|
-
# 友盟/cnzz 站点统计 web_id
|
|
274
|
-
# cnzz analytics
|
|
275
|
-
# See: https://web.umeng.com/main.php?c=site&a=show
|
|
276
|
-
cnzz:
|
|
277
|
-
|
|
278
270
|
# LeanCloud 计数统计,可用于 PV UV 展示,如果 `web_analytics: enable` 没有开启,PV UV 展示只会查询不会增加
|
|
279
271
|
# LeanCloud count statistics, which can be used for PV UV display. If `web_analytics: enable` is false, PV UV display will only query and not increase
|
|
280
272
|
leancloud:
|
|
@@ -290,6 +282,54 @@ web_analytics: # 网页访问统计
|
|
|
290
282
|
# If true, ignore localhost & 127.0.0.1
|
|
291
283
|
ignore_local: false
|
|
292
284
|
|
|
285
|
+
# OpenKounter 计数统计(基于 EdgeOne Pages),可用于 PV UV 展示
|
|
286
|
+
# OpenKounter count statistics (based on EdgeOne Pages), which can be used for PV UV display
|
|
287
|
+
# See: https://github.com/Mintimate/open-kounter
|
|
288
|
+
openkounter:
|
|
289
|
+
# OpenKounter API 服务器地址
|
|
290
|
+
# OpenKounter API server URL
|
|
291
|
+
server_url: https://open-kounter.mintimate.cn
|
|
292
|
+
# 统计页面时获取路径的属性,通常使用 window.location.pathname
|
|
293
|
+
# Get the attribute of the page path during statistics
|
|
294
|
+
path: window.location.pathname
|
|
295
|
+
# 开启后不统计本地路径(localhost、127.0.0.1、[::1])
|
|
296
|
+
# If true, ignore localhost & 127.0.0.1 & [::1]
|
|
297
|
+
ignore_local: false
|
|
298
|
+
|
|
299
|
+
# Umami Analytics,仅支持自部署。如果要展示 PV UV 需要填写所有配置项,否则只填写 `src` 和 `website_id` 即可
|
|
300
|
+
# Umami Analytics, only Self-host support. If you want to display PV UV need to set all config items, otherwise only set 'src' and 'website_id'
|
|
301
|
+
# See: https://umami.is/docs
|
|
302
|
+
umami:
|
|
303
|
+
# umami js 文件地址,需要在 umami 后台创建站点后获取
|
|
304
|
+
# umami js file url, get after create website in umami
|
|
305
|
+
src:
|
|
306
|
+
|
|
307
|
+
# umami 的 website id,需要在 umami 后台创建站点后获取
|
|
308
|
+
# umami website id, get after create website in umami
|
|
309
|
+
website_id:
|
|
310
|
+
|
|
311
|
+
# 如果你只想统计特定的域名可以填入此字段,多个域名通过逗号分隔,这可以避免统计 localhost。
|
|
312
|
+
# If you only want to tracker to specific domains you can fill in this field, multiple domain names are separated by commas, which can avoid tracker localhost
|
|
313
|
+
domains:
|
|
314
|
+
|
|
315
|
+
# 用于统计 PV UV 的开始时间,格式为 "YYYY-MM-DD"
|
|
316
|
+
# statistics on the start time, the format is "YYYY-MM-DD"
|
|
317
|
+
start_time: 2024-01-01
|
|
318
|
+
|
|
319
|
+
# 新建一个 umami viewOnly 用户,然后通过 login api 获取该用户 token
|
|
320
|
+
# create an umami viewOnly user, and then get user token through the login api
|
|
321
|
+
token:
|
|
322
|
+
|
|
323
|
+
# 填写 umami 部署的服务器地址,如 "https://umami.example.com"
|
|
324
|
+
# server url of umami deployment, such as "https://umami.example.com"
|
|
325
|
+
api_server:
|
|
326
|
+
|
|
327
|
+
# Canonical 用于向 Google 搜索指定规范网址,开启前确保 hexo _config.yml 中配置 `url: http://yourdomain.com`
|
|
328
|
+
# Canonical, to specify a canonical URL for Google Search, need to set up `url: http://yourdomain.com` in hexo _config.yml
|
|
329
|
+
# See: https://support.google.com/webmasters/answer/139066
|
|
330
|
+
canonical:
|
|
331
|
+
enable: false
|
|
332
|
+
|
|
293
333
|
# 对页面中的图片和评论插件进行懒加载处理,可见范围外的元素不会提前加载
|
|
294
334
|
# Lazy loading of images and comment plugin on the page
|
|
295
335
|
lazyload:
|
|
@@ -309,7 +349,7 @@ lazyload:
|
|
|
309
349
|
|
|
310
350
|
# 图标库,包含了大量社交类图标,主题依赖的不包含在内,因此可自行修改,详见 https://hexo.fluid-dev.com/docs/icon/
|
|
311
351
|
# Icon library, which includes many social icons, does not include those theme dependent, so your can modify link by yourself. See: https://hexo.fluid-dev.com/docs/en/icon/
|
|
312
|
-
iconfont: //at.alicdn.com/t/
|
|
352
|
+
iconfont: //at.alicdn.com/t/c/font_1736178_k526ubmyhba.css
|
|
313
353
|
|
|
314
354
|
|
|
315
355
|
#---------------------------
|
|
@@ -373,6 +413,10 @@ search:
|
|
|
373
413
|
# 首屏图片的相关配置
|
|
374
414
|
# Config of the big image on the first screen
|
|
375
415
|
banner:
|
|
416
|
+
# 是否开启所有页面的随机头图,仅在页面对应 banner_img 为空时生效,将图片放在 source/img/random/ 目录下
|
|
417
|
+
# Enable random banner for all pages, only works when banner_img is empty, put images in the directory `source/img/random/`
|
|
418
|
+
random_img: false
|
|
419
|
+
|
|
376
420
|
# 视差滚动,图片与板块会随着屏幕滚动产生视差效果
|
|
377
421
|
# Scrolling parallax
|
|
378
422
|
parallax: true
|
|
@@ -430,9 +474,9 @@ footer:
|
|
|
430
474
|
statistics:
|
|
431
475
|
enable: false
|
|
432
476
|
|
|
433
|
-
# 统计数据来源,使用 leancloud 需要设置 `web_analytics
|
|
434
|
-
# Data source. If use leancloud, you need to set the parameter in `web_analytics
|
|
435
|
-
# Options: busuanzi | leancloud
|
|
477
|
+
# 统计数据来源,使用 leancloud, umami, openkounter 需要设置 `web_analytics` 中对应的参数;使用 busuanzi 不需要额外设置,但是有时不稳定,另外本地运行时 busuanzi 显示统计数据很大属于正常现象,部署后会正常
|
|
478
|
+
# Data source. If use leancloud, umami, openkounter, you need to set the parameter in `web_analytics`
|
|
479
|
+
# Options: busuanzi | leancloud | umami | openkounter
|
|
436
480
|
source: "busuanzi"
|
|
437
481
|
|
|
438
482
|
# 国内大陆服务器的备案信息
|
|
@@ -463,7 +507,7 @@ index:
|
|
|
463
507
|
# Available: 0 - 100
|
|
464
508
|
banner_img_height: 100
|
|
465
509
|
|
|
466
|
-
# 头图黑色蒙版的不透明度,available: 0 - 1.0,
|
|
510
|
+
# 头图黑色蒙版的不透明度,available: 0 - 1.0,1 是完全不透明
|
|
467
511
|
# Opacity of the banner mask, 1.0 is completely opaque
|
|
468
512
|
# Available: 0 - 1.0
|
|
469
513
|
banner_mask_alpha: 0.3
|
|
@@ -473,8 +517,8 @@ index:
|
|
|
473
517
|
slogan:
|
|
474
518
|
enable: true
|
|
475
519
|
|
|
476
|
-
# 为空则按 hexo config.subtitle
|
|
477
|
-
# If empty, text based on `subtitle` in hexo config
|
|
520
|
+
# 为空则按 hexo config.subtitle 显示,支持列表格式来实现随机选择一行文字显示
|
|
521
|
+
# If empty, text based on `subtitle` in hexo config, support list format to random selection of a row for display
|
|
478
522
|
text: "An elegant Material-Design theme for Hexo"
|
|
479
523
|
|
|
480
524
|
# 通过 API 接口作为首页副标题的内容,必须返回的是 JSON 格式,如果请求失败则按 text 字段显示,该功能必须先开启 typing 打字机功能
|
|
@@ -575,7 +619,7 @@ post:
|
|
|
575
619
|
enable: false
|
|
576
620
|
# 统计数据来源
|
|
577
621
|
# Data Source
|
|
578
|
-
# Options: busuanzi | leancloud
|
|
622
|
+
# Options: busuanzi | leancloud | umami
|
|
579
623
|
source: "busuanzi"
|
|
580
624
|
|
|
581
625
|
# 在文章开头显示文章更新时间,该时间默认是 md 文件更新时间,可通过 front-matter 中 `updated` 手动指定(和 date 一样格式)
|
|
@@ -624,6 +668,9 @@ post:
|
|
|
624
668
|
# Table of contents (TOC) in the sidebar
|
|
625
669
|
toc:
|
|
626
670
|
enable: true
|
|
671
|
+
# 进入文章时是否默认展开全部目录
|
|
672
|
+
# Expand all TOC items on enter
|
|
673
|
+
expand_all: true
|
|
627
674
|
|
|
628
675
|
# 置于板块的左侧或右侧
|
|
629
676
|
# place in the board
|
|
@@ -644,7 +691,8 @@ post:
|
|
|
644
691
|
enable: true
|
|
645
692
|
|
|
646
693
|
# CreativeCommons license
|
|
647
|
-
#
|
|
694
|
+
# See: https://creativecommons.org/share-your-work/cclicenses/
|
|
695
|
+
# Options: BY | BY-SA | BY-ND | BY-NC | BY-NC-SA | BY-NC-ND | ZERO
|
|
648
696
|
license: 'BY'
|
|
649
697
|
|
|
650
698
|
# 显示作者
|
|
@@ -752,11 +800,16 @@ utterances:
|
|
|
752
800
|
# See: https://disqus.com
|
|
753
801
|
disqus:
|
|
754
802
|
shortname:
|
|
755
|
-
# 以下为 Disqusjs 支持, 国内用户如果想使用 Disqus
|
|
756
|
-
# The following are Disqusjs configurations, please ignore if DisqusJS is not required
|
|
803
|
+
# 以下为 Disqusjs 支持, 国内用户如果想使用 Disqus 建议配合使用,支持填入多个 apikey,建议自行搭建 api 端点
|
|
804
|
+
# The following are Disqusjs configurations, please ignore if DisqusJS is not required, it supports filling in multiple apikeys, it is recommended to build the API endpoint by yourself
|
|
757
805
|
# See: https://github.com/SukkaW/DisqusJS
|
|
758
806
|
disqusjs: false
|
|
759
807
|
apikey:
|
|
808
|
+
- 'KEY1'
|
|
809
|
+
#- 'KEY2'
|
|
810
|
+
api: https://disqus.skk.moe/disqus/
|
|
811
|
+
admin:
|
|
812
|
+
adminLabel:
|
|
760
813
|
|
|
761
814
|
# Gitalk
|
|
762
815
|
# 基于 GitHub Issues
|
|
@@ -955,7 +1008,7 @@ about:
|
|
|
955
1008
|
name: "Fluid"
|
|
956
1009
|
intro: "An elegant theme for Hexo"
|
|
957
1010
|
# 更多图标可从 https://hexo.fluid-dev.com/docs/icon/ 查找,`class` 代表图标的 css class,添加 `qrcode` 后,图标不再是链接而是悬浮二维码
|
|
958
|
-
# More icons can be found from https://hexo.fluid-dev.com/docs/en/icon/ `class` is the css class of the icon. If adding `qrcode`,
|
|
1011
|
+
# More icons can be found from https://hexo.fluid-dev.com/docs/en/icon/ `class` is the css class of the icon. If adding `qrcode`, the icon is no longer a link, but a hovering QR code
|
|
959
1012
|
icons:
|
|
960
1013
|
- { class: "iconfont icon-github-fill", link: "https://github.com", tip: "GitHub" }
|
|
961
1014
|
- { class: "iconfont icon-douban-fill", link: "https://douban.com", tip: "豆瓣" }
|
|
@@ -1057,7 +1110,7 @@ static_prefix:
|
|
|
1057
1110
|
internal_css: /css
|
|
1058
1111
|
internal_img: /img
|
|
1059
1112
|
|
|
1060
|
-
anchor: https://lib.baomitu.com/anchor-js/
|
|
1113
|
+
anchor: https://lib.baomitu.com/anchor-js/5.0.0/
|
|
1061
1114
|
|
|
1062
1115
|
github_markdown: https://lib.baomitu.com/github-markdown-css/4.0.0/
|
|
1063
1116
|
|
|
@@ -1087,7 +1140,7 @@ static_prefix:
|
|
|
1087
1140
|
|
|
1088
1141
|
valine: https://lib.baomitu.com/valine/1.5.1/
|
|
1089
1142
|
|
|
1090
|
-
waline: https://
|
|
1143
|
+
waline: https://lib.baomitu.com/waline/3.6.0/
|
|
1091
1144
|
|
|
1092
1145
|
gitalk: https://lib.baomitu.com/gitalk/1.8.0/
|
|
1093
1146
|
|
package/languages/de.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Share-alike'
|
|
58
58
|
NC: 'NC - Non-commercial'
|
|
59
59
|
ND: 'ND - No derivative works'
|
|
60
|
+
ZERO: 'CC0 - No Copyright'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: 'Alle Aufrufe: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'Stichwort'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'Blog funktioniert am besten mit aktiviertem JavaScript'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'Hell'
|
|
74
|
+
dark: 'Dunkel'
|
package/languages/en.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Share-alike'
|
|
58
58
|
NC: 'NC - Non-commercial'
|
|
59
59
|
ND: 'ND - No derivative works'
|
|
60
|
+
ZERO: 'CC0 - No Copyright'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: 'Views: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'Keyword'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'Blog works best with JavaScript enabled'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'Light'
|
|
74
|
+
dark: 'Dark'
|
package/languages/eo.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Share-alike'
|
|
58
58
|
NC: 'NC - Non-commercial'
|
|
59
59
|
ND: 'ND - No derivative works'
|
|
60
|
+
ZERO: 'CC0 - No Copyright'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: 'Vidoj: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'ŝlosivorto'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'Blogo funkcias plej bone kun JavaScript ebligita'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'Hela'
|
|
74
|
+
dark: 'Malhela'
|
package/languages/es.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Compartir igual'
|
|
58
58
|
NC: 'NC - No comercial'
|
|
59
59
|
ND: 'ND - Sin obras derivadas'
|
|
60
|
+
ZERO: 'CC0 - Sin derechos autorales'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: 'Vistas: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'Palabra clave'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'El blog funciona mejor con JavaScript habilitado'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'Claro'
|
|
74
|
+
dark: 'Oscuro'
|
package/languages/ja.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Share-alike'
|
|
58
58
|
NC: 'NC - Non-commercial'
|
|
59
59
|
ND: 'ND - No derivative works'
|
|
60
|
+
ZERO: 'CC0 - No Copyright'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: '閲覧合計数: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'キーワード'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'ブログは JavaScript を有効にすると最適に機能します'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'ライト'
|
|
74
|
+
dark: 'ダーク'
|
package/languages/ru.yml
CHANGED
|
@@ -22,7 +22,7 @@ tag:
|
|
|
22
22
|
title: 'Теги'
|
|
23
23
|
subtitle: 'Теги'
|
|
24
24
|
post_total: '%d сообщений всего'
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
about:
|
|
27
27
|
menu: 'О'
|
|
28
28
|
title: 'О'
|
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - Share-alike'
|
|
58
58
|
NC: 'NC - Non-commercial'
|
|
59
59
|
ND: 'ND - No derivative works'
|
|
60
|
+
ZERO: 'CC0 - No Copyright'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: 'Просмотров: {}'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: 'Ключевое слово'
|
|
68
69
|
|
|
69
70
|
noscript_warning: 'Блог лучше всего работает с включенным JavaScript'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: 'Светлая'
|
|
74
|
+
dark: 'Тёмная'
|
package/languages/zh-CN.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - 相同方式共享'
|
|
58
58
|
NC: 'NC - 非商业性使用'
|
|
59
59
|
ND: 'ND - 禁止演绎'
|
|
60
|
+
ZERO: 'CC0 - 无版权'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: '总访问量 {} 次'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: '关键词'
|
|
68
69
|
|
|
69
70
|
noscript_warning: '博客在允许 JavaScript 运行的环境下浏览效果更佳'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: '开灯'
|
|
74
|
+
dark: '关灯'
|
package/languages/zh-HK.yml
CHANGED
|
@@ -57,6 +57,7 @@ post:
|
|
|
57
57
|
SA: 'SA - 相同方式共享'
|
|
58
58
|
NC: 'NC - 非商業性使用'
|
|
59
59
|
ND: 'ND - 禁止演繹'
|
|
60
|
+
ZERO: 'CC0 - 無著作權'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: '總訪問量 {} 次'
|
|
@@ -67,3 +68,7 @@ search:
|
|
|
67
68
|
keyword: '關鍵字'
|
|
68
69
|
|
|
69
70
|
noscript_warning: '博客在允許 JavaScript 運行的環境下瀏覽效果更佳'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: '開燈'
|
|
74
|
+
dark: '關燈'
|
package/languages/zh-TW.yml
CHANGED
|
@@ -52,11 +52,12 @@ post:
|
|
|
52
52
|
posted: '發布於'
|
|
53
53
|
updated: '更新於'
|
|
54
54
|
licensed: '許可協議'
|
|
55
|
-
CC: 'CC -
|
|
56
|
-
BY: 'BY -
|
|
57
|
-
SA: 'SA -
|
|
58
|
-
NC: 'NC -
|
|
59
|
-
ND: 'ND -
|
|
55
|
+
CC: 'CC - 創用 CC 授權'
|
|
56
|
+
BY: 'BY - 姓名標示'
|
|
57
|
+
SA: 'SA - 相同方式分享'
|
|
58
|
+
NC: 'NC - 非商業性'
|
|
59
|
+
ND: 'ND - 禁止改作'
|
|
60
|
+
ZERO: 'CC0 - 公眾領域貢獻宣告'
|
|
60
61
|
|
|
61
62
|
footer:
|
|
62
63
|
pv: '總訪問量 {} 次'
|
|
@@ -66,4 +67,8 @@ search:
|
|
|
66
67
|
title: '搜尋'
|
|
67
68
|
keyword: '關鍵字'
|
|
68
69
|
|
|
69
|
-
noscript_warning: '
|
|
70
|
+
noscript_warning: '部落格在允許 JavaScript 執行的環境下瀏覽效果更佳'
|
|
71
|
+
|
|
72
|
+
darkmode:
|
|
73
|
+
light: '開燈'
|
|
74
|
+
dark: '關燈'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<% if (theme.cusdis.host && theme.cusdis.app_id) { %>
|
|
2
|
-
<div class="cusdis" style="width:100
|
|
2
|
+
<div class="cusdis" style="width:100%; overflow:visible; min-height:480px;">
|
|
3
3
|
<div id="cusdis_thread"
|
|
4
|
+
style="width:100%; overflow:visible;"
|
|
4
5
|
data-host="<%= theme.cusdis.host %>"
|
|
5
6
|
data-app-id="<%= theme.cusdis.app_id %>"
|
|
6
7
|
data-page-id="<%= md5(page.path) %>"
|
|
@@ -15,6 +16,37 @@
|
|
|
15
16
|
Fluid.utils.createScript('<%= url_join(theme.cusdis.host,
|
|
16
17
|
`/js/widget/lang/${ String(theme.cusdis.lang || 'zh-cn').toLowerCase() }.js`) %>');
|
|
17
18
|
Fluid.utils.createScript('<%= url_join(theme.cusdis.host, 'js/cusdis.es.js') %>');
|
|
19
|
+
|
|
20
|
+
// 取消容器滚动条,尝试让 iframe 展开显示
|
|
21
|
+
var container = document.querySelector('.cusdis');
|
|
22
|
+
var thread = document.querySelector('#cusdis_thread');
|
|
23
|
+
if (container) container.style.overflow = 'visible';
|
|
24
|
+
if (thread) thread.style.overflow = 'visible';
|
|
25
|
+
|
|
26
|
+
// 等待 widget 加载后调整 iframe 样式
|
|
27
|
+
setTimeout(function() {
|
|
28
|
+
try {
|
|
29
|
+
var iframe = thread && thread.querySelector('iframe');
|
|
30
|
+
if (iframe) {
|
|
31
|
+
iframe.style.width = '100%';
|
|
32
|
+
iframe.style.border = 'none';
|
|
33
|
+
iframe.style.overflow = 'visible';
|
|
34
|
+
iframe.style.minHeight = '600px';
|
|
35
|
+
iframe.setAttribute('scrolling', 'no');
|
|
36
|
+
|
|
37
|
+
// 若同源,尝试根据内容自适应高度
|
|
38
|
+
try {
|
|
39
|
+
var doc = iframe.contentDocument || iframe.contentWindow.document;
|
|
40
|
+
if (doc && doc.body) {
|
|
41
|
+
iframe.style.height = doc.body.scrollHeight + 'px';
|
|
42
|
+
}
|
|
43
|
+
} catch (e) {
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} catch (e) {
|
|
47
|
+
}
|
|
48
|
+
}, 600);
|
|
49
|
+
|
|
18
50
|
var schema = document.documentElement.getAttribute('data-user-color-scheme');
|
|
19
51
|
if (schema) {
|
|
20
52
|
document.querySelector('#cusdis_thread').dataset.theme = schema
|
|
@@ -8,7 +8,12 @@
|
|
|
8
8
|
Fluid.utils.createScript('<%= url_join(theme.static_prefix.disqusjs, 'disqus.js') %>', function() {
|
|
9
9
|
new DisqusJS({
|
|
10
10
|
shortname: '<%= theme.disqus.shortname %>',
|
|
11
|
-
apikey:
|
|
11
|
+
apikey: <%- JSON.stringify(theme.disqus.apikey) %>,
|
|
12
|
+
api: '<%= theme.disqus.api %>',
|
|
13
|
+
url: '<%= page.permalink %>',
|
|
14
|
+
identifier: '<%= url_for(page.path) %>',
|
|
15
|
+
admin: '<%= theme.disqus.admin %>',
|
|
16
|
+
adminLabel: '<%= theme.disqus.adminLabel %>'
|
|
12
17
|
});
|
|
13
18
|
});
|
|
14
19
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<% if (theme.waline.serverURL) { %>
|
|
2
2
|
<div id="waline"></div>
|
|
3
|
-
<script type="
|
|
3
|
+
<script type="module">
|
|
4
4
|
Fluid.utils.loadComments('#waline', function() {
|
|
5
|
-
Fluid.utils.createCssLink('<%= url_join(theme.static_prefix.waline, 'waline.
|
|
6
|
-
|
|
5
|
+
Fluid.utils.createCssLink('<%= url_join(theme.static_prefix.waline, 'waline.css') %>')
|
|
6
|
+
import('<%= url_join(theme.static_prefix.waline, 'waline.js') %>').then(({ init }) => {
|
|
7
7
|
var options = Object.assign(
|
|
8
8
|
<%- JSON.stringify(theme.waline || {}) %>,
|
|
9
9
|
{
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
path: <%= theme.waline.path %>
|
|
12
12
|
}
|
|
13
13
|
)
|
|
14
|
-
|
|
14
|
+
init(options);
|
|
15
15
|
Fluid.utils.waitElementVisible('#waline .vcontent', () => {
|
|
16
16
|
var imgSelector = '#waline .vcontent img:not(.vemoji)';
|
|
17
17
|
Fluid.plugins.imageCaption(imgSelector);
|
package/layout/_partials/css.ejs
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<!-- 主题依赖的图标库,不要自行修改 -->
|
|
10
10
|
<!-- Do not modify the link that theme dependent icons -->
|
|
11
|
-
<%- css('//at.alicdn.com/t/
|
|
11
|
+
<%- css('//at.alicdn.com/t/c/font_1749284_5i9bdhy70f8.css') %>
|
|
12
12
|
|
|
13
13
|
<%- css(theme.static_prefix.iconfont || theme.iconfont) %>
|
|
14
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div class="statistics">
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
2
|
+
<% let pv_texts = (theme.footer.statistics.pv_format || __('footer.pv')).split('{}') %>
|
|
3
|
+
<% let uv_texts = (theme.footer.statistics.uv_format || __('footer.uv')).split('{}') %>
|
|
4
4
|
|
|
5
5
|
<% if (theme.footer.statistics.source === 'leancloud') { %>
|
|
6
6
|
<% if (pv_texts.length >= 2) { %>
|
|
@@ -19,6 +19,23 @@
|
|
|
19
19
|
<% } %>
|
|
20
20
|
<% import_js(theme.static_prefix.internal_js, 'leancloud.js', 'defer') %>
|
|
21
21
|
|
|
22
|
+
<% } else if (theme.footer.statistics.source === 'openkounter') { %>
|
|
23
|
+
<% if (pv_texts.length >= 2) { %>
|
|
24
|
+
<span id="openkounter-site-pv-container" style="display: none">
|
|
25
|
+
<%- pv_texts[0] %>
|
|
26
|
+
<span id="openkounter-site-pv"></span>
|
|
27
|
+
<%- pv_texts[1] %>
|
|
28
|
+
</span>
|
|
29
|
+
<% } %>
|
|
30
|
+
<% if (uv_texts.length >= 2) { %>
|
|
31
|
+
<span id="openkounter-site-uv-container" style="display: none">
|
|
32
|
+
<%- uv_texts[0] %>
|
|
33
|
+
<span id="openkounter-site-uv"></span>
|
|
34
|
+
<%- uv_texts[1] %>
|
|
35
|
+
</span>
|
|
36
|
+
<% } %>
|
|
37
|
+
<% import_js(theme.static_prefix.internal_js, 'openkounter.js', 'defer') %>
|
|
38
|
+
|
|
22
39
|
<% } else if (theme.footer.statistics.source === 'busuanzi') { %>
|
|
23
40
|
<% if (pv_texts.length >= 2) { %>
|
|
24
41
|
<span id="busuanzi_container_site_pv" style="display: none">
|
|
@@ -35,5 +52,23 @@
|
|
|
35
52
|
</span>
|
|
36
53
|
<% } %>
|
|
37
54
|
<% import_js(theme.static_prefix.busuanzi, 'busuanzi.pure.mini.js', 'defer') %>
|
|
55
|
+
|
|
56
|
+
<% } else if (theme.footer.statistics.source === 'umami') { %>
|
|
57
|
+
<% if (pv_texts.length >= 2) { %>
|
|
58
|
+
<span id="umami-site-pv-container" style="display: none">
|
|
59
|
+
<%- pv_texts[0] %>
|
|
60
|
+
<span id="umami-site-pv"></span>
|
|
61
|
+
<%- pv_texts[1] %>
|
|
62
|
+
</span>
|
|
63
|
+
<% } %>
|
|
64
|
+
<% if (uv_texts.length >= 2) { %>
|
|
65
|
+
<span id="umami-site-uv-container" style="display: none">
|
|
66
|
+
<%- uv_texts[0] %>
|
|
67
|
+
<span id="umami-site-uv"></span>
|
|
68
|
+
<%- uv_texts[1] %>
|
|
69
|
+
</span>
|
|
70
|
+
<% } %>
|
|
71
|
+
<% import_js(theme.static_prefix.internal_js, 'umami-view.js', 'defer') %>
|
|
38
72
|
<% } %>
|
|
73
|
+
|
|
39
74
|
</div>
|
|
@@ -11,8 +11,4 @@
|
|
|
11
11
|
<!-- 备案信息 ICP for China -->
|
|
12
12
|
<%- partial('_partials/footer/beian.ejs') %>
|
|
13
13
|
<% } %>
|
|
14
|
-
<% if(theme.web_analytics.cnzz) { %>
|
|
15
|
-
<!-- cnzz Analytics Icon -->
|
|
16
|
-
<span id="cnzz_stat_icon_<%= theme.web_analytics.cnzz %>" style="display: none"></span>
|
|
17
|
-
<% } %>
|
|
18
14
|
</div>
|
|
@@ -15,8 +15,13 @@ var ogConfig = Object.assign({ image: ogImage && url_for(ogImage) }, theme.open_
|
|
|
15
15
|
|
|
16
16
|
<head>
|
|
17
17
|
<meta charset="UTF-8">
|
|
18
|
+
|
|
18
19
|
<link rel="apple-touch-icon" sizes="76x76" href="<%= url_for(theme.apple_touch_icon) %>">
|
|
19
20
|
<link rel="icon" href="<%= url_for(theme.favicon) %>">
|
|
21
|
+
<% if (theme.canonical.enable) { %>
|
|
22
|
+
<link rel="canonical" href="<%= url_join(config.url, page.canonical_path.replace('index.html', '')) %>"/>
|
|
23
|
+
<% } %>
|
|
24
|
+
|
|
20
25
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
|
|
21
26
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
22
27
|
<% if (theme.force_https) { %>
|