Compare commits

...

503 Commits
1.0.8 ... 4.13

Author SHA1 Message Date
Jerry
6c5d587f64 Merge branch 'dev' 2024-02-22 17:07:56 +08:00
Jerry
ee6b137e94 update 2024-02-22 17:07:29 +08:00
Jerry
e5e3998950 Merge branch 'dev' 2024-02-22 17:04:31 +08:00
Jerry
d9829167aa update 2024-02-22 17:04:11 +08:00
Jerry
097ea40a4a Merge branch 'dev' 2023-12-29 23:05:31 +08:00
Jerry
6ebe51e971 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2023-12-29 23:02:03 +08:00
Jerry
6a99a80758 update 2023-12-29 23:01:58 +08:00
Jerry Wong
b409207978 Create FUNDING.yml 2023-11-25 15:02:54 +08:00
Jerry
bf14e665d9 Merge branch 'dev' 2023-11-24 16:43:06 +08:00
Jerry
63fb690d02 4.11 2023-11-24 16:42:34 +08:00
Jerry
805afb2e70 Merge branch 'dev' 2023-10-09 19:55:30 +08:00
Jerry
7923a15e17 4.10 2023-10-09 19:54:18 +08:00
Jerry
0d40e75589 fix: 修復主頁滾動, 頂部圖有延遲的 bug closed #1372
fix: 修復當設置搜索文件為xml時,搜索 < 和 > 沒有結果的 bug closed #1369
fix: 修復 CDN 的 custom_format 沒配置,preconnect 報錯的 bug closed #1371
2023-09-26 17:47:47 +08:00
Jerry
f9a2ad70ce feat: preconnect 根據 CDN 配置引入
feat: 移除 anchor 的 button, 直接點擊標題跳轉
feat: 更改 headline 的 hover 效果
improvement: tabs content 裏最後一個元素 margin-bottom 改為 0
fix: float 浮動佈局導致評論寬度異常的 bug
2023-09-23 02:00:02 +08:00
Jerry
deccde649b 修正冲突 2023-08-06 19:05:00 +08:00
Jerry
775942ae3e breaking change: 重構 gallery 標籤外掛
improvement: 首頁社交圖標左右邊距調整
feat: 文章版權增加圖標
improvement: 重構 main.js 代碼
improvement: 優化 pjax 下的性能
fix: 修復子目錄下,pjax 跳轉 404 錯誤
feat: getScript 增加 attribute 配置
improvement: 優化手機端 toc 打開和關閉特效
improvement: 文章進入特效改為 transform, 優化 stylus
improvement: 目錄側邊欄出現滾動條時,元素不會被擠壓
feat: 文章左右對齊
improvement: 處理 waline 的 url 後面多 / 導致跨域的問題
fix: 修復夜間模式下,小屏幕的toc 滾動條顏色不明顯的 bug
fix: 修復設置字體超過17px時,toc 裏面的邊框異常的 bug
improvement: 優化語言文件部分用詞
improvement: disqus 和 disqusjs 的評論數獲取不到時,顯示為 0
improvement: disqusjs 的評論數改為 api 獲取
improvement: 代碼優化
improvement: 更新 plugins.yml
2023-08-06 18:43:39 +08:00
Jerry Wong
b6e02432fe Merge pull request #1321 from jerryc127/revert-1309-dev
Revert "允许不显示footer中的since年份"
2023-06-30 10:52:49 +08:00
Jerry Wong
7dded29438 Revert "允许不显示footer中的since年份" 2023-06-30 10:51:57 +08:00
Jerry
347f605def Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2023-06-24 16:15:00 +08:00
Jerry
c67b4304d2 breaking changes: 更改 rightside-bottom 為 rightside_bottom
feat: 置頂圖標改為在標題左側
feat: 可配置打賞按鈕的文字
feat: 側邊欄增加 系列文章顯示
feat: 增加 series 系列文章 標籤外掛
feat: 移除 addthis 分享
improvement: 代碼優化
improvement: tabs 標籤外掛的回到頂部箭頭位置調整
improvement: 更新 plugin.yml
2023-06-24 16:12:23 +08:00
Jerry Wong
37646cd831 Merge pull request #1309 from KRLHY/dev 2023-06-11 23:09:39 +08:00
KRLHY
be40690613 允许不显示footer中的since年份
since设置为false即不显示since年份,否则正常显示
2023-06-11 21:21:15 +08:00
Jerry
c90b00f3dd Merge branch 'dev' 2023-06-06 23:35:08 +08:00
Jerry
507780ebd6 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2023-06-06 23:32:44 +08:00
Jerry
5d52302a38 update 2023-06-06 23:32:36 +08:00
Jerry Wong
d943a01db3 Merge pull request #1281 from kifuan/dev
feat: 支持随机友链顺序
2023-05-22 19:11:28 +08:00
Jerry Wong
5944ffd811 Update flink.pug 2023-05-22 19:10:39 +08:00
kifuan
0066457cf0 fix: 使用 null 而不是空对象来正确判空 2023-05-15 00:38:30 +08:00
kifuan
f12ae8fbb3 fix: 当 site.data.link 为空时报错 2023-05-14 22:00:09 +08:00
kifuan
90a923eb4b chore: 格式 2023-05-14 17:57:18 +08:00
kifuan
ed5ba1d5a9 fix: 非 random 时静态渲染 2023-05-14 17:56:24 +08:00
kifuan
16ae63d0c4 fix: 缺省 random 2023-05-14 17:37:01 +08:00
kifuan
7bef2fa7cd fix: 静态渲染时顺序也要变 2023-05-14 17:28:37 +08:00
kifuan
3e1fdf52d4 精简一下 2023-05-14 12:36:49 +08:00
kifuan
759e63b643 feat: 支持随机友链 2023-05-14 12:31:02 +08:00
Jerry
6e0b29080d Merge branch 'dev' 2023-05-09 00:43:22 +08:00
Jerry
28d1744b9b feat: artalk 支持點擊打開大圖
feat: 設置了隨系統而切換淺色和深色模式後,評論和 mermaind 也會跟隨切換顏色
feat: artalk 最新評論,從 artalk 配置讀取頭像 CDN 和默認頭像
fix: 修復代碼塊在未展開時,點擊複製按鈕,無法複製的 bug
improvement: 代碼和性能優化
improvement: artalk 獲取評論數,由 LoadCountWidget 改為 loadCountWidget
2023-05-09 00:36:00 +08:00
Jerry Wong
52441b6bf5 Merge pull request #1269 from nitezs/dev
修复 Artalk 无法获取最新评论的 bug
2023-04-30 18:06:08 +08:00
Jerry Wong
0342df6ed7 Update artalk.pug 2023-04-30 18:05:52 +08:00
nite07
096973ecce 修复 Artalk 无法获取最新评论的 bug 2023-04-26 12:58:40 +08:00
Jerry
4e99420568 Merge branch 'dev' 2023-04-10 20:31:17 +08:00
Jerry
496234c8ad fix: 修復 CDN 的 internal_provider 設為 jsdelivr 時,主題的 js 無法加載的 bug 2023-04-10 20:30:16 +08:00
Jerry
a2f02a0b80 Merge branch 'dev' 2023-04-10 16:51:10 +08:00
Jerry
8d5ca45948 fix merge 2023-04-10 16:49:53 +08:00
Jerry
04e36c8d8a feat: 發佈 4.8.0
feat: 支持自定義 giscus 評論系統的 JS 地址
2023-04-10 16:45:45 +08:00
Jerry Wong
5c2894d3d5 Merge pull request #1252 from Lea321/dev
新增自定义深浅模式切换时间
2023-04-10 00:38:49 +08:00
Leonus
63353566d2 新增自定义深浅模式切换时间 2023-04-09 00:03:08 +08:00
Jerry
f0588a3967 代码优化 2023-04-08 21:09:43 +08:00
Jerry
0834720d32 代码优化 2023-04-08 21:02:27 +08:00
Jerry Wong
183d01b9eb Merge pull request #1248 from youngjuning/patch-3
chore: 优化 viewport seo
2023-04-08 15:30:03 +08:00
Jerry Wong
7e8d666bf7 Merge pull request #1241 from JamesY-Jey/add-social-style
新增给social配置添加样式参数
2023-04-08 15:11:17 +08:00
Jerry Wong
49b6c7436c Update _config.yml 2023-04-08 15:10:56 +08:00
洛竹
1e24c62f70 chore: 优化 viewport seo
https://www.omiod.com/meta-seo-inspector/meta-info.php?meta=viewport&utm_source=MSI_app&utm_medium=info_link&utm_term=viewport
2023-04-04 18:38:55 +08:00
JamesYao
5e30032a5f Merge branch 'add-social-style' of https://github.com/JamesY-Jey/hexo-theme-butterfly into add-social-style 2023-04-04 15:38:04 +08:00
JamesYao
47214b5a7c feat: add social icon color config 2023-04-04 15:37:55 +08:00
JamesYao
d62f047073 Merge branch 'jerryc127:dev' into add-social-style 2023-04-04 10:13:48 +08:00
Jerry Wong
5a13f01649 Merge pull request #1239 from LittleNyima/patch-abcjs
feat: 支持abcjs乐谱渲染
2023-04-03 18:53:53 +08:00
Jerry Wong
09b7342882 Merge branch 'dev' into patch-abcjs 2023-04-03 18:53:40 +08:00
Jerry
4c9395666d update 2023-04-03 18:51:42 +08:00
LittleNyima
f4d0687750 minor adjustments 2023-04-03 16:23:02 +08:00
Jerry Wong
e80ecb43ef Merge pull request #1245 from youngjuning/patch-2
chore: 宽屏 1500px 有些浪费空间,增加到 1700px
2023-04-03 15:04:17 +08:00
洛竹
93f7461d28 chore: 宽屏 1500px 有些浪费空间,增加到 1700px 2023-04-03 10:43:55 +08:00
JamesYao
841fbb0c5e Add social config style 2023-03-30 17:11:59 +08:00
LittleNyima
247e62a418 resolve conflicts with dev branch 2023-03-30 10:16:23 +08:00
Jerry
8199e25215 feat: 重構本地搜索
feat: Algolia 搜索,點擊文章內容也會跳轉到相應頁面
fix: 修復 fullpage loading 顯示滾動條的 bug close #1235
fix: 修復 safari 下,搜索內容被系統搜索框遮擋的 bug
improvement: 手機 safari 橫屏時,網頁全屏幕顯示
improvement: 當沒有開啟 beautify 時, hr 顯示默認的樣式
2023-03-28 20:40:43 +08:00
LittleNyima
b34eeb0425 feat: 支持abcjs乐谱渲染
- 添加相关可配置选项
 - 添加渲染与组件注册相关脚本
 - 添加默认cdn配置
2023-03-28 14:14:15 +08:00
Jerry
63dc605794 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2023-03-09 22:43:36 +08:00
Jerry
a7d6d0fb80 breaking changes: CDN 配置了 version 為 true, 本地鏈接也會加上版本號 closed #1218
breaking changes: CDN option 部分參數名字修改
feat: 升級 fancybox 到 v5
feat: 更新 facebook js 版本
feat: 移除 gitter 聊天插件 closed #1212
improvement: 社交圖標 hover 旋轉180度 closed #1195
improvement: 代碼優化
fix: 開啟 archor 後, pace.js 會隨着 archor 添加而觸發的問題
fix: 修復設置圖片時,圖片後綴大寫而導致識別錯誤的 bug closed #1205
2023-03-09 22:35:41 +08:00
Jerry Wong
768d9e370b Merge pull request #1219 from Weidows/patch-1
card_tags.color: true 时遇到limit失效问题
2023-03-04 13:16:46 +08:00
齐下无贰
a3e46f757b Update card_tags.pug 2023-03-04 10:53:34 +08:00
Jerry
9d22bb82c6 Merge branch 'dev' 2023-02-20 17:24:38 +08:00
Jerry
431b5fa7ce update 2023-02-20 17:23:00 +08:00
Jerry
8a50b80527 update 2023-02-20 17:21:01 +08:00
Jerry
3694ee01df Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2023-02-12 17:01:43 +08:00
Jerry
c579dad041 feat: gallery 標籤外掛增加 json 獲取
feat: 本地搜索,點擊文章內容也會跳轉到相應頁面
feat: 添加 docsearch
feat: 標籤頁支持配置 orderby 和 order 參數
feat: card_tags 可配置 orderby 和 order 參數
fix: 修復本地搜索,輸入 ?d 報錯的 bug closed #1192
fix: 修復 waline 在 pjax 模式下 css 沒有加載的 bug
fix: 修復 artalk 最新評論無法加載 closed #1191
fix: 修復 card_author 和 card_announcement 設為 false 後,aside 卡片沒有間距的 bug closed #1174
improvement: getCSS 重構
2023-02-12 16:56:18 +08:00
Jerry Wong
5baf759749 Merge pull request #1190 from SakuraWald/pr
FIX mathjax在ajax啓用時,可能的重置錯誤
2023-02-12 16:26:07 +08:00
SakuraWald
532b74edde FIX mathjax在ajax啓用時,可能的重置錯誤 2023-02-08 07:25:06 +08:00
Jerry
062641c8ab Merge branch 'dev' 2023-01-18 20:28:07 +08:00
Jerry
08fabdc2d1 update package.json 2023-01-18 20:27:31 +08:00
Jerry
6a50b62869 remove: 移除多余的代码 2023-01-17 15:02:42 +08:00
Jerry
396fb102da feat: 可配置 typed.js 的參數 closed #1154
fix: 修復 typeJSFn 重複賦值的 bug
fix: 修復固定狀態欄後,標題有陰影的 bug
fix: 修復 gallery 標籤將圖片鏈接截斷導致404無法加載圖片的 bug closed #1160
fix: 修復開啟導航欄固定後,點擊部分滾動向上的按鈕,滾動的目標部分被導航欄遮擋的 bug closed #1158
fix: 修復固定導航欄後,toc 被遮擋的 closed #1159
fix: 切換簡繁時,會改變 html 的 lang 屬性
2023-01-17 14:46:55 +08:00
Jerry
b019a1fd33 Merge branch 'dev' 2023-01-15 01:40:13 +08:00
Jerry
929a5608d3 fix: 修復 pjax 下, waline js 會重複加載的 bug 2023-01-15 01:39:16 +08:00
Jerry
9a3b41912a feat: 不蒜子可配置 CDN closed #1132
feat: gallery 標簽外掛增加圖片懶加載,增加 lazyload rowHeight 和 limit 屬性配置
feat: 可設置固定導航欄 closed #1150
fix: 修復開啟懶加載後,再使用 flink_url 的方式引入友鏈數據,友鏈頭像有可能不顯示的 bug closed #1146
fix: 修復閲讀模式下,代碼塊的背景顏色仍顯示彩色背景的 bug (自定義代碼塊) closed #1139
improvement: 搜索結果換行時不會拆分單詞顯示
improvement: 優化搜索結果顯示滾動條位置
improvement: css/js 優化
2023-01-14 00:36:34 +08:00
Jerry
0f915f47ef breaking changes: 移除 cnzz 分析
feat: 導航欄可隱藏博客名字
feat: 導航欄可設置 logo closed #1104
2022-12-22 00:16:54 +08:00
Jerry
e2565a9f39 breaking changes: cover 的顯示優化 #1101
feature: default_cover 可配置顏色
fix: 修復使用本地搜索時,輸入特殊符號沒有顯示結果的 bug closed #1110
fix: 修復 頂部圖和 footer 配置帶有/的顏色參數時,無法顯示顏色的 bug
improvement: 鼠標移動到分頁時,文章分頁按鈕增加説明文字
improvement: 文章頁的頂部圖顯示次序為 top_img > cover > default_top_img
improvement: canonical 的鏈接根據配置生成 #1111
2022-12-13 01:23:50 +08:00
Jerry
4cd26d183c update 2022-11-18 18:35:04 +08:00
Jerry
f218a0a14a breaking changes: 移除 subtitle 一句網調用(api 已失效)
feat: 右下角按鈕增加預覽進度顯示
feat: toc可設置是否顯示預覽進度
fix: 修復 TypeError: require(...) is not a function 的報錯 #1102
improvement: 日期設置相對日期時,文章的日期格式和最新評論的日期格式統一為 年月日
2022-11-18 18:30:25 +08:00
Jerry Wong
6c7debfd24 Merge pull request #1102 from GZTimeWalker/patch-1
fix: `TypeError: require(...) is not a function` when setup
2022-11-18 13:32:47 +08:00
Jerry Wong
eb88a5bb4a Update welcome.js 2022-11-18 13:32:35 +08:00
Jerry Wong
f07823903f Update init.js 2022-11-18 13:32:03 +08:00
GZTime
4bd5edd955 chore: remove semicolons 2022-11-16 03:45:54 +08:00
GZTime
ecf4d341e6 fix: TypeError: require(...) is not a function 2022-11-16 03:36:24 +08:00
Jerry
c6c58f7620 Merge branch 'dev' 2022-10-31 00:10:50 +08:00
Jerry
5c0d578e4c fix: 修復 mathjax 行內公式 導致行距過密的 bug
fix: 修復更新mathjax 新版本後,mathjax 會溢出屏幕而不是顯示滾動條的 bug
improvement: 避免沒更新主題文件而導致 anchor 配置報錯的問題
improvement: 更新 plugins.yml
2022-10-31 00:09:13 +08:00
Jerry
859cd4938b Merge branch 'dev' 2022-10-21 18:17:12 +08:00
Jerry
21f71cd0f2 breaking changes: Open_Graph_meta 設置更改,可配置其它參數
feature: 更新 Facebook sdk 到 v15
improvement: 更新 plugins.yml
Remove: 移除 meta keywords
2022-10-21 18:10:52 +08:00
Jerry
f775e97548 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-10-09 16:57:50 +08:00
Jerry
54a4fa381d improvement: update plugins.yml 2022-10-09 16:56:50 +08:00
Jerry Wong
bf3a43e62a Merge pull request #1075 from EmptyDreams/patch-1
修正`throttle`函数调用方式
2022-10-09 16:40:30 +08:00
Jerry Wong
274a499aff Update main.js 2022-10-09 16:27:24 +08:00
Jerry Wong
48781800f3 Merge pull request #1076 from wangyijin209/dev
Update tw_cn.js 增加`龍、歷、誌、製、壹、臺、臯、準、復、勐、鐘、註和範`的繁簡轉化
2022-10-09 15:08:05 +08:00
Jerry Wong
449fe2f876 Update tw_cn.js 2022-10-09 15:07:17 +08:00
wangyijin209
06ab48f607 Update tw_cn.js 2022-10-06 21:15:57 +08:00
wangyijin209
e0382c80ae Update tw_cn.js 2022-10-06 20:54:02 +08:00
wangyijin209
a1589c0212 Update tw_cn.js 2022-10-06 20:48:41 +08:00
wangyijin209
ff6fc30743 Update tw_cn.js 2022-10-06 20:43:46 +08:00
wangyijin209
fef6dcf6c6 Update tw_cn.js 2022-10-06 17:41:41 +08:00
空梦
5fd171bab0 修正throttle函数调用方式
只有在调用`throttle`返回的同一个对象时才能起到“节流”效果。
2022-10-05 21:14:11 +08:00
Jerry
0b0cb38b59 breaking changes: 增加 pace.js 加載動畫條 closed #935 2022-09-21 01:29:36 +08:00
Jerry
65b1ad32c8 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-09-03 15:57:20 +08:00
Jerry
13cf15c369 breaking changes: anchor設置更改,可單獨設置按鈕和自動更新anchor是否開啟,可設置button圖標,可設置button 總是顯示 closed #1025
improvement: 本地預覽,友情鏈接頁面刷新,內容不會重複顯示
2022-09-03 15:55:18 +08:00
Jerry Wong
6b7d0d9806 Merge pull request #1032 from KiritaniAyaka/patch-2
fix: fix mixed layout when screen eq 768px
2022-08-24 00:00:20 +08:00
Ayaka
c17b0cb553 Update main.js 2022-08-23 22:34:57 +08:00
Jerry
8ee052e93b Merge branch 'dev' 2022-08-18 00:39:29 +08:00
Jerry
c866315b87 feat: update 4.4.0 2022-08-18 00:38:09 +08:00
Jerry
2404eee5c1 fix 2022-08-18 00:31:53 +08:00
Jerry
5e656b7072 feat: update plugins.yml 2022-08-18 00:27:09 +08:00
Jerry Wong
a405217462 Merge pull request #1013 from dlinedev/dev
feat: Support typewriter effect speed options of Subtitle in _config.yml
2022-08-13 13:01:00 +08:00
Jerry Wong
8cfa1665b9 Update subtitle.pug 2022-08-13 12:59:53 +08:00
Dylan Lin
d12f5be271 docs: add default Effect Speed Options of Subtitle in _config.yml 2022-08-13 02:29:20 +08:00
Dylan Lin
26f2c1b4e3 feat: Support typewriter effect speed options of Subtitle in _config.yml 2022-08-12 17:15:32 +08:00
Jerry Wong
bb7fc446fc Merge pull request #965 from KiritaniAyaka/patch-1
fix: fix a minor problem about header border-radius style
2022-07-19 16:35:24 +08:00
Jerry Wong
49e4903b34 Merge pull request #977 from kkfive/dev
fix: artalk评论option无效
2022-07-19 16:21:03 +08:00
DreamyTZK
91641646a7 fix: artalk评论option无效 2022-07-17 14:31:24 +08:00
DreamyTZK
4b8492a377 Merge pull request #13 from jerryc127/dev
[pull] dev from jerryc127:dev
2022-07-17 14:28:32 +08:00
Jerry
a36c9ca6d2 feat: 在綫聊天新增facebook洽談外掛程式 closed #918
feat: 添加artalk評論 closed #933
fix: 修復 開啟 archor 後, facebook評論加載不正確的 bug
fix: 修復 facebook 評論數無法加載的 bug
2022-07-17 01:14:41 +08:00
Ayaka
6361f28328 Update head.styl 2022-07-08 17:42:09 +08:00
Jerry
7e83095920 Merge branch 'dev' 2022-06-27 01:27:45 +08:00
Jerry
dbb31dec99 fix: 當設置 comments 為 false 時,如果設置了顯示評論提供的閲讀數,閲讀數無法顯示的 bug
fix: findArchivesTitle bug
2022-06-27 01:23:35 +08:00
Jerry
057581b955 fix merge conflict 2022-06-24 02:10:04 +08:00
Jerry
fba180afaf update 4.3.0 2022-06-24 02:08:26 +08:00
Jerry Wong
b8b728898e Merge pull request #942 from ccknbc-forked/dev
fix:侧边栏归档卡片自定义排序异常
2022-06-19 21:55:30 +08:00
CC康纳百川
91d49fe7a2 fix:侧边栏归档卡片自定义排序异常 2022-06-18 18:35:31 +08:00
Jerry
931a0ba82d breaking changes: archives 隱藏 aside 設置更改
feat: tag 和 category 頁面可設置隱藏 aside
feat: 子歸檔頁面顯示的文章數量不再顯示總文章數量,而是對應的子歸檔文章數量
feat: 為一些數據加載增加 loading 顯示
improvement: 修改 note 圖標 class 名字,避免第三方圖標覆蓋主題樣式
2022-06-17 01:01:46 +08:00
Jerry
9a33e23a9c feat: 移除 katex copy-tex.css
feat: CDN可配置 cdnjs
feat: cdn可設置 version 和 custom format
feat: 點擊歸檔日期跳轉到頁面,標題顯示日期而不是‘歸檔’二字 closed #925
fix: Algolia搜索沒有結果 closed #923
2022-06-12 01:07:09 +08:00
Jerry Wong
945ea89685 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-05-22 16:22:26 +08:00
Jerry Wong
b4d3ea86bb feat: CDN 可配置為 unpkg
fix: 評論系統開啟時 busuanzi 的 page_pv 不顯示
2022-05-22 16:20:49 +08:00
Jerry Wong
ecebacad37 Merge pull request #917 from jerryc127/revert-914-dev
Revert "Feat: 添加系列文章目录"
2022-05-22 00:02:43 +08:00
Jerry Wong
e650f71086 Revert "Feat: 添加系列文章目录" 2022-05-22 00:02:14 +08:00
Jerry Wong
6d387eadcc Merge pull request #894 from pai233/dev
Feat: 添加Remark42评论系统支持
2022-05-22 00:01:59 +08:00
Jerry Wong
860f6c5ef9 Merge pull request #914 from qsgy-edge/dev
Feat: 添加系列文章目录
2022-05-21 23:59:42 +08:00
pai233
e56757ac29 Merge branch 'jerryc127:dev' into dev 2022-05-21 08:26:46 +08:00
qsgy-edge
08b7cd9dbb 添加系列文章目录 2022-05-20 16:55:51 +08:00
Jerry Wong
9a86429484 breaking changes: 適配 disqusjs 3.0
fix: 修復首頁文章 valine 評論數只顯示第一篇的 bug
fix: 修復子目錄下,第三方插件本地資源無法加載的 bug closed #908
fix: 評論系統開啟時 busuanzi 的 page_pv 不顯示的 bug closed #902
fix: 修復 pjax 下,使用 mermaid 跳轉會重新加載的 bug
2022-05-19 16:45:30 +08:00
Jerry Wong
6e58f68f0c fix: 修復首頁文章 valine 評論數只顯示第一篇的 bug
fix: 修復子目錄下,第三方插件本地資源無法加載的 bug closed #908
fix: 評論系統開啟時 busuanzi 的 page_pv 不顯示的 bug closed #902
fix: 修復 pjax 下,使用 mermaid 跳轉會重新加載的 bug
2022-05-19 16:37:01 +08:00
Jerry Wong
004a27decc Merge branch 'dev' 2022-05-19 15:39:05 +08:00
Jerry Wong
4df78b1966 fix pjax 2022-05-17 16:03:25 +08:00
Jerry Wong
b1e40b33d7 Merge pull request #897 from kkfive/patch-1
perf: 优化twikoo评论,无评论数容器时不调用API获取
2022-05-16 01:49:53 +08:00
DreamyTZK
cf38250fa9 perf: 优化twikoo评论,无评论数容器时不调用API获取 2022-05-15 14:18:10 +08:00
pai233
e3bb904e87 Merge branch 'dev' of https://github.com/pai233/hexo-theme-butterfly into dev 2022-05-13 10:22:46 +08:00
pai233
cbf52c3053 feat: Remark42支持显示最新评论 2022-05-13 10:22:16 +08:00
pai233
9351413b63 Update index.pug 2022-05-12 20:56:46 +08:00
pai233
1f3f2f471b feat: Remark42评论支持显示文章评论数 2022-05-12 08:39:56 +08:00
pai233
c68e872f0e feat: 将Remark42的可选配置归入option 2022-05-11 13:47:54 +08:00
pai233
1bc54d6eb3 Merge branch 'dev' of https://github.com/pai233/hexo-theme-butterfly into dev 2022-05-11 09:36:37 +08:00
pai233
f768d6fce0 删除不必要的空格 2022-05-11 09:35:39 +08:00
pai233
4dd146f787 Merge branch 'jerryc127:dev' into dev 2022-05-11 09:33:49 +08:00
pai233
7187a17896 feat: 添加Remark42配置说明 2022-05-11 09:31:51 +08:00
pai233
41ac7f170c feat: 增加Remark42评论系统主题色适应
feat: 增加Remark42主题评论系统自定义显示评论数
2022-05-11 09:27:21 +08:00
Jerry
fd21969278 Merge branch 'dev' 2022-05-11 00:20:35 +08:00
Jerry
9479f8a704 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-05-11 00:19:37 +08:00
Jerry
793e004a3a fix: CDN配置為 local 時 mathjax 字體缺失的 bug close #893 2022-05-11 00:18:19 +08:00
Jerry Wong
b3e5b7c30d Merge pull request #888 from kkfive/dev
perf: 调整本地搜索结果间距
2022-05-07 00:06:36 +08:00
pai233
060defa475 feat: 添加Remark42评论支持 2022-05-04 12:44:39 +08:00
DreamyTZK
c2c199bd16 perf: 调整本地搜索结果间距 2022-05-03 22:19:34 +08:00
Jerry
2e133e1cd6 Merge branch 'dev' 2022-05-03 19:06:55 +08:00
Jerry
3e30f301a0 update 2022-05-03 19:03:34 +08:00
Jerry
5b1473c2c8 breaking changes: waline 適配 V2
breaking changes: waline 的 visitor 改為 pageview
feat: algolia 搜索增加文章內容顯示和高亮
feat: 搜索內容顯示區域變大
2022-05-03 18:57:59 +08:00
Jerry
ec78f66470 fix merge failed 2022-04-14 00:39:19 +08:00
Jerry
a33602e023 feat: 本地搜索增加preload,cdn 配置 closed #859
feat: 搜索內容顯示區域變大
feat: algolia 搜索增加文章內容顯示和高亮
feat: 搜索內容增加 ... 縮略辨識
fix: algolia 第一次進入時會自動搜索
fix: mathjax 顯示不完全的 bug
2022-04-14 00:32:25 +08:00
Jerry Wong
ee3c143424 Merge pull request #836 from Android-KitKat/fix-related-post
fix: 标题中带有 HTML 关键字时,会破坏相关推荐的渲染。
2022-03-18 21:41:32 +08:00
Android
4461473aa6 fix: 标题中带有 HTML 关键字时,会破坏相关推荐的渲染。 2022-03-13 00:12:05 +08:00
Jerry
3cb2120630 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-03-08 18:03:02 +08:00
Jerry
df678dfde2 feat: 可配置文章版權模塊的作者超鏈接
feat: 歸檔頁面的側邊欄支持隱藏
improvement: 更新social-share cdn 版本
improvement: 調整分享按鈕導致的間距問題
improvement: html/css 優化
2022-03-08 18:00:22 +08:00
Jerry Wong
34bb030345 Merge pull request #807 from ImCa0/dev
新增 head 标签内 theme-color 的配置项
2022-03-08 17:49:08 +08:00
ImCaO
0726c2263f 添加缺省值 2022-02-28 09:48:51 +08:00
ImCaO
7ebed025f0 新增head标签内theme-color的配置项 2022-02-25 19:55:45 +08:00
Jerry
4248103024 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2022-02-19 00:43:57 +08:00
Jerry
ab6672429f breaking changes: cdn 可一鍵設置 本地文件/可單獨配置主題文件,第三方文件的 cdn
breaking changes: 移除 utterances,giscus, addtoany, busuanzi 的 cdn 配置
2022-02-19 00:43:01 +08:00
Jerry Wong
ca4c0e2a6b Merge pull request #799 from Gahotx/dev
fix: twikoo 评论区表情包去除灯箱渲染
2022-02-15 23:58:33 +08:00
Gahotx
26e8c618d8 fix: twikoo 评论区表情包去除灯箱渲染
improvement: 搜索和字数统计两个功能添加相应文档地址注释 (太多新人因为这两报错然后到群里问了)
2022-02-14 23:49:20 +08:00
Jerry
aa767f6fb5 Merge branch 'dev' 2022-02-13 15:27:10 +08:00
Jerry
c1ac4a5e16 breaking changes: 升級 fontawesome 到 v6 #689
feat: snackbar 增加圓角
feat: 增加 flink 標籤外掛
fix: 修復點擊 toc 外圍,控制檯報錯的 bug
fix: Facebook Comments 無法使用 #787
fix: chat_btn 聊天按鈕翻譯缺失 #791
fix: local search 的 content 設爲 false, 搜索無法運行的 bug #764
fix: Mermaid 圖表渲染後元素高度過大 #773
fix: 文章頁分享按鈕另開一行時, 導航頁寬度沒有 100% 的 bug #765
improvement: 語義化 toggle 標籤外掛
improvement: darkmode 下 toc 背景顏色更改
2022-02-13 15:23:13 +08:00
Jerry Wong
e0fd3c9f92 Merge pull request #768 from hsxyhao/dev
fix: QR_code空校验
2022-01-20 18:48:24 +08:00
王浩
96e8d624dc fix: QR_code空校验 2022-01-19 09:53:47 +08:00
Jerry
241f9b5873 improvement: 優化 pjax 下,右下角按鈕的動畫
fix: 修復頁面設置 aside 爲 true 時,js 報錯的 bug
fix: 修復部分頁面右下角按鈕位置遮擋的 bug
fix: 修復壓縮 html 代碼,友情鏈接頁面壓縮會報錯的 bug
fix: 修復safari上滑動側邊菜單欄會收起的 bug
2022-01-16 00:48:03 +08:00
Jerry
84ad5c5dd6 improvement: 優化 pjax 下,右下角按鈕的動畫
fix: 修復頁面設置 aside 爲 true 時,js 報錯的 bug
fix: 修復部分頁面右下角按鈕位置遮擋的 bug
fix: 修復壓縮 html 代碼,友情鏈接頁面壓縮會報錯的 bug
fix: 修復 safari 上滑動側邊菜單欄會收起的 bug
2022-01-16 00:47:05 +08:00
Jerry
31f17d1c64 label 4.0.0 2022-01-15 00:34:35 +08:00
Jerry
18d9d652a0 feat: 美化 firefox 瀏覽器滾動條
fix: Utterances 評論區在多個頁面顯示的是同一個評論區
fix: 修復評論配置爲 Livere 和 Facebook Comments 時,最新評論模塊仍然顯示的 bug
improvement: blueimp_md5 CDN 可配置
improvement: timeline 優化
improvement: css優化
improvement: 友情鏈接優化
2022-01-15 00:30:01 +08:00
Jerry
850c825fcf feat: toc 間隔調整, 直接子元素增加豎線辨識 closed #723
fix: 修復 toc 在小設備上顯示出屏幕外的 bug
fix: 修復在打賞按鈕周圍也會觸發打賞彈窗的 bug
fix: Waline 最近評論的時間只顯示 "剛剛" 的問題 (以docker的方式執行) #730
fix: 修復點擊右下角顯示按鈕時,按鈕沒有出現的 bug
remove: 移除 button 的 hover 效果
2021-12-22 22:39:27 +08:00
Jerry Wong
36d85c4c23 Merge pull request #730 from nitezs/dev
fix: 修復 Waline 最近評論的時間只顯示 "剛剛" 的問題
2021-12-18 21:03:31 +08:00
nitezs
002692886c fix: 修復 Waline 最近評論的時間只顯示 "剛剛" 的問題 2021-12-16 17:19:18 +08:00
Jerry
444081846c fix: 修復沒有配置 comments 的 use 時,會報錯的 bug
fix: 修復首頁置頂和更新時間的分割線間隔顯示問題
2021-11-25 00:03:31 +08:00
Jerry
ffeab5e20c breaking changes: 移除博天api
breaking changes: 移除 waline 的 avatar 和 avatar cdn 配置
feat: anchor 不再限制 post 頁開啟,可以在任何頁面開啟
feat: 文章標題支持點擊跳轉到此標題開始閲讀 closed #653
feat: toc可以設置全部展開 closed #709
feat: 增加 新的評論系統 giscus
feat: 支持新的評論名寫法,主題會處理評論名字大小寫,舊的會兼容
feat: 友情鏈接列表增加 fetch url 獲取
improvement: 鼠標移到最新評論內容,增加 title 顯示
fix: 修復 rightside 遮擋內容,導致內容無法點擊的 bug
fix: 修復 mermaid 在某些頁面(有元素 id 為 mermaid 時) 會無法加載的 bug
fix: 修復 搜索框不會自動 focus 的 bug
2021-11-14 17:50:11 +08:00
Jerry
f7c50586ce breaking changes: algolia 升級至 v4
feat:  本地搜索增加數據庫加載中和搜索中 loading 顯示
feat: 更改文章美化後,列表的顯示效果 closed #693 closed #686
improvement: UI 微調
2021-10-29 14:40:10 +08:00
Jerry
632cb37bc5 improvement: 禁止点击 button 会出现放大的行为 2021-10-12 23:43:47 +08:00
Jerry
cb82bfb7b6 feat: 替換 Justified Gallery 為 flickr-justified-gallery
feat: 完全移除 jquery
feat: 清除配置文件的CDN, 默認 CDN 不再顯示在 config
feat: 切換夜間模式後, mermaid 也會切換夜間主題
feat: 移除騰訊分析
feat: 移除右下角字體調整按鈕
feat: 本地搜索可處理 json
feat: 右下角按鈕自定義順序
feat: 右小角按鈕 UI 微調
improvement: 手機端更改閲讀模式退出按鈕到右下角
improvement: photofigcaption 和 fancybox 的 figcaption 優先顯示 圖片的title屬性,然後是 alt 屬性
improvement: 首頁ui微調
improvement: 禁止一些瀏覽器會出現點擊左下角按鈕出現放大網頁的行為
improvement: js 優化
fix: 修復窗口大小改變時,導航欄的ui 可能會錯亂的 bug
fix: 修復 pjax 下, twikoo 評論獲取是上一篇評論的 bug
fix: 壓縮 html 代碼後, mermaid 顯示正常
2021-10-12 23:27:56 +08:00
Jerry Wong
f5c3dcf327 Merge pull request #684 from Rr210/patch-2
本地搜索使用json替换xml,速度更快
2021-10-06 16:01:49 +08:00
Harry
312a766901 本地搜索使用json替换xml,速度更快
## xml文件格式本地测试
![](https://cdn.jsdelivr.net/gh/Rr210/image@master/hexo/api/20211006095512.png)
## json文件本地测试
![](https://cdn.jsdelivr.net/gh/Rr210/image@master/hexo/api/20211006095847.png)
## json文件线上测试
![](https://cdn.jsdelivr.net/gh/Rr210/image@master/hexo/api/20211006100635.png)
## 模式切换
两种模式 切换 只需要修改全局配置文件的搜索插件文件格式(json/xml)
2021-10-06 14:52:52 +08:00
Jerry
7e729cff79 feat: 新增標籤外掛 timeline closed #644
fix: 自建頁面圖片沒有 blur 效果
improvement: 優化 404 頁面 UI
improvement: lazyload 默認佔位圖改為透明圖片
improvement: 優化 lazyload blur 出現特效
improvement: 優化 css
2021-09-27 00:12:13 +08:00
Jerry
3708fdf569 breaking changes: 移除 html 的 font-size 改為瀏覽器默認大小
feat: 為文章單獨設置 TOC simple_style 顯示 closed #631
feat: page 頁頂部圖增加黑色遮罩 closed #671
feat: 首頁 pagination 更新 UI
fix: 修復使用本地搜索時,搜索插件配置為不搜索文章內容會無法使用搜索 的 bug
fix: 修復開啟 photofigcaption 後,導致inlineImg標籤外掛顯示錯亂的 bug
fix: 修復 字體過大/過小而導致 部分 ui 偏移的 bug
improvement: 主題 css 使用的 rem 改為 em 或 px
improvement: 修改没有顶部图下,文章页的标题大小 closed #669
improvement: 代碼優化
2021-09-20 17:55:20 +08:00
Jerry
de8e35d0d0 fix: 修復開啟 photofigcaption 後,導致 inlineImg 標籤外掛顯示錯亂的 bug close #667
fix: 修復使用本地搜索時,搜索插件配置為不搜索文章內容會無法使用搜索的 bug close #666
fix: 修復可能導致相關文章鏈接出錯的 bug close #549
improvement: 調整代碼框滾動條顏色 close #651
improvement: 當圖片沒有 figcaption 時,不會添加 figcaption 代碼
2021-09-18 22:10:50 +08:00
Jerry
484f036adb breaking changes: 刪除 hide_sidebar_menu_child 配置,改為直接在 menu 配置 close #640
feat: sidebar menu 點擊展開不再限制只能點擊按鈕 #640
feat: TWIKOO 評論圖片添加 lightbox
feat: 升級 facebook comment js 到 v11
fix: 修復可能導致相關文章鏈接出錯的bug #549
improvement: 調整代碼框 ocean theme 下滾動條顏色 close #651
improvement: 當圖片沒有 figcaption 時,不會添加 figcaption 代碼
improvement: 代碼優化
2021-09-01 16:10:39 +08:00
Jerry
7210f5b431 breaking changes: toc 配置更改,頁面支持 toc 顯示 close #636
feat: 代碼框設置高度限制,展開後按鈕不會消失,可點擊再次摺疊 close #637
feat: 增加 no-lightbox class 偵測,可配置 fancybox 和 medium-zoom 不應用於圖片 #636
fix: 修復開啟 lazyload 時, fancybox 的縮略圖顯示 lazyload 加載圖片的 bug
2021-08-18 00:07:31 +08:00
Jerry Wong
b5e3d2c2c3 Merge pull request #634 from Eurkon/dev
fix: 文章 post-info 中发表时间或更新时间 title 属性 undefined 问题
2021-08-12 22:42:07 +08:00
Eurkon
f1d1ae6639 fix: 文章 post-info 中发表时间 title 属性 undefined问题 2021-08-12 14:13:02 +08:00
Jerry
f1bf2413a0 breaking changes: 更新 fancybox 到 4
improvement: 網站資料顯示,但標籤和分類為0時,數量顯示為 0,而不是隱藏
improvement: subtitle 代碼優化, 1.當source設為false,同時sub也沒有配置,將會讀取hexo配置文件的 subtitle,2.無須使用轉義字符
improvement: 禁止ios點擊搜索框,頁面放大的問題
2021-08-08 15:36:22 +08:00
Jerry
45d6ced507 修復 Waline 評論系統 設置 avatarCDN 無效的 bug 2021-07-30 01:09:55 +08:00
Jerry
101cb45b90 fix: Waline 評論系統 設置 avatarCDN 無效的 bug 2021-07-30 01:00:32 +08:00
Jerry
43790dec07 breaking changes: 精簡各評論的配置
fix: 修復footer 在部分瀏覽器沒有顯示在底部的 bug
improvement: 修改配置文件註釋
2021-07-20 23:56:40 +08:00
Jerry
641fb56b22 improvement: 修改配置文件註釋 2021-07-20 23:19:14 +08:00
Jerry
7c859ef66d fix: 修復 footer 在部分瀏覽器沒有顯示在底部的 bug close #616 2021-07-20 23:09:57 +08:00
Jerry
42bc175718 Merge branch 'dev' 2021-07-10 22:32:24 +08:00
Jerry
bbb9beb8f9 Dependencies: update hexo-renderer-pug 2021-07-10 22:29:20 +08:00
Jerry
eca1487a5e fix: 修復 inline mathjax 有滾動條的 bug 2021-07-06 15:52:21 +08:00
Jerry Wong
3f796adc88 Merge pull request #607 from Android-KitKat/fix-flink
fix: 修复友情链接的头像带有灯箱的问题
2021-07-06 00:12:53 +08:00
Android
32b83a0d81 fix: 修复友情链接的头像带有 Medium Zoom 灯箱的问题 2021-07-05 03:14:48 +08:00
Android
ad87304302 fix: 修复友情链接的头像带有 FancyBox 灯箱的问题 2021-07-05 00:23:19 +08:00
Jerry
7b520c62f6 label 3.8.0 2021-07-04 18:40:01 +08:00
Jerry
026a348482 label 3.8.0 2021-07-04 18:34:42 +08:00
Jerry
829a3dbf32 breaking changes: 移除最新評論的評論服務商選擇,默認為第一個評論服務商
feat: 增加 waline avatarCDN 配置(最新評論也會更新)
feat: archives 的 標題 在 menu 配置中獲取
fix: 修復文章頁 mathjax 因字體小導致顯示重疊的 bug close #587
fix: 修復 mathjax 在列表下,導致 列表沒有樣式的 bug  close #586
improvement: 減少卡頓,apple 裝置首頁背景 background-attachment 設為 scroll
2021-06-09 14:33:55 +08:00
Jerry
54c6a509c7 breaking changes: 移除 waline 的 emojiCDN 和 emojiMaps 配置
fix: 修復 升級到 waline 1.x 而出現的 bug
2021-06-05 00:35:23 +08:00
Jerry
c214da4515 breaking changes: 移除 waline 的 emojiCDN 和 emojiMaps 配置
fix: 修復 升級到 waline 1.x 而出現的 bug
2021-05-31 22:23:14 +08:00
Jerry
de4037106b breaking changes: widget 寫法更改/可添加非sticky區域widget
feat: 升級facebook comment js 到 v10
fix: 修復當內容過少時, footer 沒有底部靠攏的bug
improvement: 404頁面不再顯示 rightside
2021-05-21 16:15:25 +08:00
Jerry
f0eaf2d8b0 label 3.7.7 2021-05-11 22:25:04 +08:00
Jerry
9e6958f25b improvement: 适配新版的 waline 夜间模式 2021-05-11 22:17:03 +08:00
Jerry
36527a3b81 fix: 修復標題/博客名有 ‘ 時,pjax 會報錯的bug
improvement: css調整
2021-05-09 00:53:56 +08:00
Jerry
c439930786 fix: 修復標題/博客名有 ‘ 時,pjax 會報錯的bug
improvement: css調整
2021-05-09 00:52:09 +08:00
Jerry
f4e5cef399 label: 3.7.5 2021-05-05 23:05:46 +08:00
Jerry
92121d7bbe label: 3.7.5 2021-05-05 23:03:28 +08:00
Jerry Wong
aced08c860 Merge pull request #559 from cooper1x/patch-2
Update _config.yml
2021-05-05 23:00:48 +08:00
Cooper
4e1cb0b2b5 Update _config.yml
fix:sub-menu二级目录示例写法
2021-05-05 22:27:39 +08:00
Jerry
aa7173fc69 feature: 增加 tags 標簽外掛 - label
improvement: 優化 pjax 下 404 頁面
2021-04-25 22:08:07 +08:00
Jerry
597f0d2019 fix: 修復開啟anchor後,瀏覽器上一頁/下一頁 跳轉會404的bug (文章頁的url hash 在pjax下變成 undefined)
fix: 修復開啟anchor後,文章頁跳轉回主頁,主頁網址的hash添加上文章頁最後一個標題的 bug
improvement: 優化 button tags 標簽外掛
2021-04-23 18:06:51 +08:00
Jerry
c48ce9af8c fix: 修復 lazyload 報 undefined 的 bug close #532 2021-03-30 22:35:40 +08:00
Jerry
531269c60e fix: 當標題有符號'時,disqus 和 disqusjs 無法加載的 bug 2021-03-30 01:36:46 +08:00
Jerry
637da0702b fix: 修復 github-issues 最新評論 獲取的url格式 bug
fix: 當標題有符號'時,disqus 和 disqusjs 無法加載的 bug
2021-03-30 01:31:17 +08:00
Jerry
6057297f44 Breaking Changes: lazyload 優化 (增加高斯模糊過度特效,增加配置 lazyload 範圍,佔位圖應用到全站)
Breaking Changes: site_verification 優化,需自行配置
2021-03-24 21:57:30 +08:00
Jerry
4b381350a1 fix: 修復 github-issues 最新評論 獲取的url格式bug 2021-03-22 16:56:15 +08:00
Jerry
6904850044 Merge branch 'dev' into master 2021-03-19 01:10:22 +08:00
Jerry
65d89334b2 label: 3.7.0
improvement: 一句 API 改爲 https
2021-03-19 01:08:50 +08:00
Jerry
1952046a8a improvement: 主頁分頁會定位到文章區域 close #519
fix: 修復設置highlight_height_limit後,highlight_shrink點擊無效的bug close #520
2021-03-17 17:27:35 +08:00
Jerry
ae09fb89b5 feature: 增加 tags 標簽外挂 inlineImg 2021-03-15 20:44:35 +08:00
Jerry
7bc46c47ed feat: 新增設置代碼行數限制,顯示展開按鈕
improvement: prismjs 可以配置 code_word_wrap
improvement: 搜索 hover 效果與其它目錄一致
improvement: css 優化
fix: 修復prismjs 無法識別的語言 顯示 null 而不是顯示 code 的 bug
fix: 修復默認代碼大小不會隨着字體放大/放小而改變的bug
fix: 修復prismjs 在ios safari 下自動換行的bug
2021-03-14 23:25:58 +08:00
Jerry
2f3094cc0a fix: 百度統計適配pjax #516 2021-03-04 16:22:04 +08:00
Jerry
6cba95298a improvement: 修改目录配置案例 2021-02-24 20:45:13 +08:00
Jerry
a4aec5971d Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2021-02-24 20:43:39 +08:00
Jerry
5ec82ca801 Breaking Change: 更改子目錄的寫法,與父目錄一致 2021-02-24 20:42:26 +08:00
Jerry Wong
92ab3fdc93 Merge pull request #510 from GZTimeWalker/dev
Add the layout of kbd tag
2021-02-24 20:03:59 +08:00
GZTime
245bdfc46f add the layout of kbd tag 2021-02-22 21:08:44 +08:00
Jerry Wong
2dbf4561bc Merge pull request #507 from weilining/dev
Improvement valine visitor
2021-02-22 15:59:15 +08:00
weilining
c25553c192 Improvement valine visitor 2021-02-21 01:28:34 +08:00
Jerry
b77a445180 feat: add gitalk option in config file 2021-02-20 23:15:34 +08:00
Jerry
41e1931a3a feat: gitalk 增加 option 配置
improvement: pug代碼優化
2021-02-20 23:10:28 +08:00
Jerry
b176ff0fa7 feat: 添加waline,valine 和twikoo 提供的文章閲讀數配置 close #502
improvement: 當文章頁cover 和cover 的 default_img都沒有配置時,會去讀取default_top_img的參數
improvement: 在完全沒有配置的情況下,運行時控制臺報null 的問題
2021-02-19 22:14:34 +08:00
Jerry
0cea722da8 remove: 移除 artitalk (如需要,請安裝 hexo-butterfly-artitalk)
remove: 移除 HexoPlusPlus_Talk(如需要,請安裝 hexo-butterfly-hpptalk)
2021-02-13 00:24:55 +08:00
Jerry Wong
f3f0666b26 Merge pull request #495 from ChenYFan/patch-1
【修复】HPP使用最新版本
2021-02-12 14:43:04 +08:00
ChenYFan
0314a980d9 Update _config.yml 2021-02-11 08:41:46 +08:00
Jerry
9e091ba85a Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2021-02-11 01:30:34 +08:00
Jerry
b199022d9b label: 3.7.0-b1 2021-02-11 01:30:20 +08:00
Jerry Wong
3958b486cc Merge pull request #494 from glahajeekn/dev
为 Butterfly 主题新增 HexoPlusPlus_Talk
2021-02-11 01:23:13 +08:00
Jerry
b063554dd2 update
update
2021-02-11 01:19:07 +08:00
Open-super
092e6c5e25 为 Butterfly 添加 HexoPlusPlus_Talk 2021-02-09 21:20:55 +08:00
choosk
1683998280 Update package.json 2021-02-08 14:34:25 +08:00
choosk
3eb7f23997 Update hpptalk.pug 2021-02-08 14:20:58 +08:00
choosk
e85315b256 Update _config.yml 2021-02-08 14:13:57 +08:00
Open-super
7c294e0482 新增HexoPlusPlus的说说 2021-02-08 14:12:09 +08:00
Jerry
4c5abe0cc5 Merge branch 'dev' into master 2021-02-03 15:43:37 +08:00
Jerry
d8cc723134 label:3.6.2 2021-02-03 15:42:58 +08:00
Jerry
4024fc7e22 fix: mathjax 和 katex 没有加载js的bug 2021-02-02 16:37:51 +08:00
Jerry
e8cfc6e083 Merge branch 'dev' into master 2021-02-01 16:36:21 +08:00
Jerry
45b093cda7 label:3.6.1 2021-02-01 16:35:11 +08:00
Jerry
a50a63905d fix: 文章頁有toc的界面出現滾動條
fix: 在layout標簽內的元素,如是position: fixed,其相對定位會更改 #482 #483
2021-02-01 16:01:33 +08:00
Jerry
823dc03090 Merge branch 'dev' into master 2021-01-30 16:47:46 +08:00
Jerry
defb1c5f31 label: 3.6.0 2021-01-30 16:45:56 +08:00
Jerry
2cd1aa5bc9 fix: 修復夜間模式下,閲讀模式代碼塊背景顔色的顯示bug
fix: 修復在 chrome上,進入頁面時,頁面元素會出現模糊到清晰的bug close #479
fix: 修復 文章頁面上滑子菜單圖標文字無法顯示的 bug close #481
improvement: meta description 限制在150字以內 close #480
improvement: pug優化和結構調整
2021-01-29 23:38:13 +08:00
Jerry
6962353af6 feat: 增加首頁評論數顯示
fix: 修復點擊toc後,滾動完toc的highlight在點擊的上一個元素
fix: 修復打賞按鈕Hover的bug close #473
improvement: 友情鏈接界面增加title顯示(top_img設為false時)
improvement: 優化toc顯示,當向上滾動時,導航欄不會遮擋 toc close #472
improvement: 升級facebook comment sdk版本
2021-01-25 19:39:53 +08:00
Jerry
d33dc5551c remove: 刪除部分多餘的代碼 2021-01-17 19:17:34 +08:00
Jerry
1a0e279cdb Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2021-01-17 18:34:06 +08:00
Jerry
d97ab894c8 feat: 最新評論更新 [
1. <a> 標簽將會顯示 `[鏈接]`
2. <img>標簽將會顯示 `[圖片]`
3. <pre><code> 標簽將顯示 `[代碼]`
4. github-issues 獲取到的 url 改爲對應文章地址,而不是issues地址
5. 時間 time 增加 datetime屬性
6. waline 獲取到頭像會先匹配 waline數據庫是否有qq頭像屬性
7. 部分評論顯示的時間改爲更新時間
]
2021-01-17 18:33:03 +08:00
Jerry Wong
817a31078d Merge pull request #471 from weilining/dev
feat: Post edit Easily browse and edit blog source code online
2021-01-17 18:29:51 +08:00
weilining
8a56d00c2f Update default.yml
fix i18n
2021-01-13 02:44:20 +08:00
weilining
2e7b65834f fix i18n 2021-01-13 02:30:25 +08:00
weilining
71dcb128bd recover code 2021-01-13 02:21:12 +08:00
weilining
0d4dce7fa6 add i18n && padding-left: 0.3rem && annotation 2021-01-13 02:13:52 +08:00
Jerry
b2025a7dbe feat: 增加 npm push github action 2021-01-12 23:38:33 +08:00
Jerry
7b2f32f30c fix: 修復評論裡行內元素(表情/圖片)變成塊級元素(換行)的bug
feat: 增加 npm push github action
2021-01-12 23:34:06 +08:00
weilining
9cac14411d feat: Post edit Easily browse and edit blog source code online 2021-01-11 03:33:52 +08:00
Jerry
a1f86a1573 feat: aside ‘查看更多’按鈕 改為 圖標顯示在右上角
improvement: pangu 改為全站渲染
2021-01-10 22:26:18 +08:00
Jerry
0eac648267 feat: 增加 post_pagination 配置(可關閉/配置分頁展示邏輯)
feat: 可配置最新評論的緩存時間
fix: 修復pjax下不會跳轉404頁面的bug
fix: 修復手持設備橫向翻轉時,menu 沒有進行判斷,而導致樣式錯亂的bug
fix: 修復文字點擊關閉random無效的bug
fix: 修復子目錄下,打賞圖片跳轉鏈接會錯誤的bug
improvement: 文章版權右上角改為 版權icon
improvement: pangu的操作範圍增大到 body-wrap裏的內容
improvement: pug 判斷優化
improvement: 最新評論js優化
remove: 移除 fragment_cache 配置(默認開啟)
remove: 移除百度推送(百度已棄用)和百度轉碼
2021-01-10 19:26:32 +08:00
Jerry
81fc48df40 feat: 增加配置 disable_top_img,禁用所有的top_img
fix: 修復 background-image 遇到連結有括號時會無法顯示的bug
fix: Readmode 標題邊距
fix: 修復twikoo 評論數獲取會因為地域問題報錯的bug
2021-01-03 00:04:09 +08:00
Jerry Wong
c373b64cfb Merge pull request #465 from alpaca0x0/dev
bg-image: url('')
2021-01-02 23:57:18 +08:00
alpaca0x0
1d98df49d5 bg-image: url('') 2020-12-31 16:13:31 +08:00
Jerry
24cf0a11e6 Merge branch 'dev' into master 2020-12-31 16:04:14 +08:00
Jerry
c43546d6e5 feat: twikoo增加 region 配置
fix: 修復twikoo 廣州地域下,最新評論無法讀取的bugs
fix: 修復waline背景設定無效的bugs
fix: 修復twikoo 廣州地域下,page 頁進入post頁,twikoo評論報錯的bugs
2020-12-31 16:01:20 +08:00
Jerry
a7e512d764 Merge branch 'dev' into master 2020-12-30 23:34:18 +08:00
Jerry
3bfb792b3c update: hexo version 2020-12-30 23:30:45 +08:00
Jerry
3b72c87996 label: 3.5.0 2020-12-30 23:26:54 +08:00
Jerry
4a69c623fc fix: 修復開啟gitalk評論數後與toc衝突的bug close #462
fix: 修復jquery在一些介面仍然載入問題
fix: 修復medium zoom 報錯的 bug
2020-12-27 15:51:00 +08:00
Jerry
80c03b15b1 feat: 新增 Microsoft Clarity
feat: 新增 Cloudflare Analytics
feat: aside 個人資料widget可關閉button
fix: 修復medium zoom 報錯的 bugs
2020-12-25 16:52:49 +08:00
Jerry
d5d5681981 feat: twikoo 增加 option 配置
feat: aside widget 增加排序(只對page頁和sticky內的有效)
feat: aside 增加自定義 widget
improvement: readmode 優化
improvement: html結構優化
2020-12-24 01:29:09 +08:00
Jerry
25cf081250 feat: 修改newest_comments的leancloud為valine,並刪除其配置,改為讀取valine配置
feat: 增加waline最新評論模塊
feat: 增加waline評論數顯示
feat: 增加waline評論
fix: 修復jquery在一些界面仍然加載問題
2020-12-19 00:44:58 +08:00
Jerry
eb823b0a2d Merge branch 'dev' into master 2020-12-15 18:54:32 +08:00
Jerry
83299dfd2f fix: 修復tabs 標簽外挂設爲-1時,按鈕點擊沒反應的bugs 2020-12-15 18:52:58 +08:00
Jerry
8f412c90da Merge branch 'dev' into master 2020-12-13 17:02:32 +08:00
Jerry
d82f69e83b label: 3.4.0 發佈
improvement: js優化
2020-12-13 17:00:34 +08:00
Jerry
6fda7ef004 feat: 當設置aside mobile為false時,toc仍然能顯示
fix: 修復resize 時,toc 的位置問題
fix: 修復當aside mobile設為false時,文章頁 js報錯的bugs close #444
2020-12-11 15:45:32 +08:00
Jerry
ecca2621c2 feat: twikoo 最新評論更新,增加QQ頭像顯示
fix: 修復關閉圖片嬾加載,最新評論圖片無法加載的bugs
fix: 修復某些情況下toc無法滾動的bugs close #442
fix: 修復pjax下,開啟anchor後,文章頁跳轉到其他頁面會出現網址加上toc最後一節錨點ID的bugs #442
2020-12-10 21:47:47 +08:00
Jerry
9536df735c fix: 當主頁設置不顯示頂部圖時,js報錯的bug 2020-12-09 22:54:18 +08:00
Jerry
8227acb1b7 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2020-12-09 16:01:48 +08:00
Jerry
3a1ed95c32 feat: 右下角增加字體調整按鈕
fix: 修復沒有滾動條時,右下角按鈕顯示問題  close #439
remove: 刪除ICP配置, 如需要,請使用custom_text配置 close #435
2020-12-09 15:58:58 +08:00
Jerry Wong
dc1c7c5efd Merge pull request #437 from Dreamy-TZK/dev
修改twikoo评论无法正常显示的问题
2020-12-07 21:17:09 +08:00
零度冷咖啡
97fe932ad9 🐛 修复无法获取twikoo评论标签元素ID的bug 2020-12-07 08:25:02 +08:00
零度冷咖啡
01e7929c02 Merge pull request #1 from jerryc127/dev
更新最新版
2020-12-07 08:22:17 +08:00
Jerry
02af3077e7 feat: 增加twikoo 最新評論 close #433
feat: 增加twikoo評論數顯示
feat: 增加toc簡潔模式
feat: 最新評論頭像增加lazyload
feat: fontawesome和google字體增加異步加載
fix: 修復上個版本導致的圖庫報沒有jQuery的bugs
fix: 修復上個版本導致aside 分類展開/收縮按鈕的bugs
improvement: toc點擊時改用document.getElementById獲取參數,避免有些字符導致無法跳轉 close #426
improvement: icp圖片限制大小  close #434
improvement: 最新評論優化,當沒有評論時顯示 '沒有評論'
improvement: 若瀏覽器支持,scroll將採用原生瀏覽器支持的滾動方法
improvement: 當屏幕沒有滾動條時,rightside會直接顯示
2020-12-05 22:28:54 +08:00
Jerry
88b1cc553c feat: 去除 jQuery (fancybox和圖庫 仍需要加載jQuery)
feat: 點擊文字特效增加隨機配置
feat: 可配置是否添加css前綴
fix: 修復子目錄下,配置justifiedGallery CDN(相對鏈接)後,連接會無法訪問的bugs
fix: 修復 pangu 配置post 後,仍在全站生效的bugs
improvement: 夜間模式下,廣告降低亮度
improvement: 手機端toc邊距微調
improvement: html格式優化
improvement: 搜索優化
improvement: 刪除不必要的語言文件
2020-11-21 00:27:01 +08:00
Jerry
6a1330de84 Merge branch 'dev' into master 2020-11-03 22:21:43 +08:00
Jerry
7f03c3f716 update: 更改文檔地址 2020-11-03 22:20:16 +08:00
Jerry
eb5a356a4e Merge branch 'dev' into master 2020-10-28 14:37:18 +08:00
Jerry
b230c8f2bd label: 3.3.0 發佈 2020-10-28 14:36:03 +08:00
Jerry
d2f5af32ae feat: 增加Twikoo評論 #402
improvement: 滾動到評論按鈕只要用評論的頁面就出現
improvement: aside狀態存localstore
fix: 修復disqusjs沒有設置api時,沒有反代的bugs
fix: 修復aside在font-matter aside為false時,收縮按鈕依舊出現和點擊按鈕會出現空白的bugs #398
2020-10-27 22:14:47 +08:00
Jerry
6b35388f33 feat: aside 可配置隐藏/增加按钮可展开或收缩aside 2020-10-21 21:54:14 +08:00
Jerry
c54f23bc14 fix: 修復上個版本導致的代碼塊部分css沒有生成的bugs
fix: 修復valine背景圖片再次出現時,由左到右移動的bugs
improvement: 調大sidebar的寬度
improvement: html結構調整,mobile-sidebar改為sidebar/search調整
remove: 刪除多餘的css和pug
2020-10-20 21:05:58 +08:00
Jerry Wong
71b15d86c1 Merge pull request #393 from wayne0926/dev
SEO优化格式修复
2020-10-17 17:44:06 +08:00
时过境迁Wayne
918a1da4c5 格式 2020-10-17 17:41:25 +08:00
时过境迁Wayne
b541a192d3 SEO优化格式修复 2020-10-17 13:01:13 +08:00
时过境迁Wayne
f7ba0a4b36 SEO优化 2020-10-16 20:50:46 +08:00
Jerry
666637ce99 fix: 退回之前的inject實現,解決上一個版本導致無法插入inject的bugs close #390 2020-10-15 14:39:51 +08:00
Jerry
8014ddb65e feat: 不再支持 butterfly.yml 寫法
improvement: 文章頁標題改為h1(seo)
improvement: 改用hexo 內置的 injector 插入 inject 的代碼
improvement: canonical 改為hexo提供的函數生成
improvement: 優化手機toc 的特效和按鈕出現的時機
remove: 刪除搜索不必要的配置
remove: 移除豆瓣配置,如需配置,請使用 hexo-butterfly-douban
fix: 修復上一個版本導致的搜索按鈕在pjax下無法點擊的bugs close #387
fix: 修復上一個版本更新的toc z-index 過低的bugs
2020-10-15 00:14:38 +08:00
Jerry
83b7232841 feat: 只支持 hexo 5.0.0 及以上版本
feat: toc改為aside顯示,去掉sidebar
feat: 手機toc ui 修改
feat: 去掉 toc auto_open 配置
feat: 文章標題改為居中
improvement: 完善note標籤在readmode上的顯示
improvement: 精簡css 和 js
improvement: pjax 優化
fix: 修復當文章頁top_img設為false時,閲讀模式下文章內容不顯示的bugs
2020-10-11 18:25:58 +08:00
Jerry
b078ebef14 fix: 修復網站壓縮後,mermaid 會無法生成顯示的Bugs
feat: Valine 增加 option 設置
2020-10-07 15:36:52 +08:00
Jerry
f4b07340f7 label: 3.2.0 2020-09-28 22:02:11 +08:00
Jerry
335fc25811 label: 3.2.0 2020-09-28 21:59:23 +08:00
Jerry
de11040293 label: 3.2.0
fix: 修復當hexo的_config沒有設置description時,會導致pjax在頁面與文章間切換會無效 close #381
improvement: 當隱藏部分沒配置時,左下角設置按鈕會消失 #353
improvement: 網站背景可配置 (顏色(HEX值/RGB值/顔色單詞/漸變色)/漸變色/圖片鏈接)
improvement: 夜間模式下,背景顔色/top-img/footer-bg 設置為顔色時,不再強制顯示黑色,而是改為遮罩降低亮度
2020-09-28 21:55:47 +08:00
Jerry Wong
baac097670 Merge pull request #353 from constown/dev
右下角按钮优化:
2020-09-25 00:22:06 +08:00
Jerry
d5670e25e4 fix: 修復上次更新導致部分用户本地搜索文章鏈接跳轉錯誤的bugs close #375 2020-09-21 13:59:32 +08:00
Jerry
a2551d2d29 fix: 修復本地搜索文章鏈接無法跳轉bugs
feat: 當點擊評論框時,valine背景圖片隱藏
feat: 網頁進入動畫效果可關閉
style: 部分css和js 調整
2020-09-19 23:46:53 +08:00
Jerry
c7318a3793 feat: 添加 artitalk 説説插件
style: 主題文件分類調正
2020-09-16 23:09:34 +08:00
Jerry
938e7a04c7 improvement: tags 設定彩色顯示後,字型大小將根據tag的文章數量而變化 close #365
improvement: 調整tags頁和categories頁在寬度小於768時的字體大小
2020-09-16 00:12:47 +08:00
Jerry
97bb8313d0 refactor: 最新評論 leancloud呼叫由js sdk 改為 rest api 呼叫。應用可以不與valine同一個
feat: 最新評論增加錯誤輸出
style: 刪除不必要的語言檔案
2020-09-13 16:58:56 +08:00
Jerry
554d05d576 feat: note 標籤優化(可自定義icon圖標/可覆蓋配置中的style)
feat: 增加部分特效 Mobile設置(activate_power_mode/fireworks/click_heart/ClickShowText)
feat: aside 分類 收縮/展開 增加slide效果
improvement: 更改canvas_ribbon_piao 為 canvas_fluttering_ribbon
improvement: darkmode 字體顔色加深
improvement: 優化nav的進入,應該修復一些用户在本地測試中無法顯示nav的bugs
improvement: 部分css和html優化
fix: 修復鼠標點擊文字特效,文字過長導致頁面有滾動條的bugs
remove: 移除anime js, 集成在fireworks的js裏
remove: 刪除特效js,改為cdn引入
2020-09-12 02:44:57 +08:00
Jerry Wong
17d8062968 Merge pull request #360 from jerryc127/revert-358-customized-chang
Revert "Add a flag for allowing to disable aside.card_author.button"
2020-09-12 02:41:46 +08:00
Jerry Wong
d4b69051aa Revert "Add a flag for allowing to disable aside.card_author.button" 2020-09-12 02:41:12 +08:00
Jerry Wong
59f6ce63e3 Merge pull request #358 from gcmiao/customized-chang
Add a flag for allowing to disable aside.card_author.button
2020-09-11 19:02:33 +08:00
gcmiao
cd78f639dd Add a flag for allowing to disable aside.card_author.button 2020-09-10 21:09:23 +02:00
Jerry
92b39ff515 test 2020-09-10 21:55:05 +08:00
Jerry
4f7fde92b2 change main in package.json 2020-09-10 21:35:02 +08:00
Jerry
8e4c20f6d4 label: 更新 3.1.1
chore: update hexo-renderer-stylus to 2.0.1
2020-09-06 22:13:37 +08:00
Jerry
e984efa35c fix: 修復開啟 prismjs 後, 在低版本的 safari 會出現 js 報錯的 Bugs 2020-09-06 22:11:59 +08:00
Jerry
cb21f7f46d fix: 修復開啟 prismjs 後, 在低版本的 safari 會出現 js 報錯的 Bugs 2020-09-06 22:09:06 +08:00
ConstOwn
b99bdc2c96 右下角按钮优化:
1.当用户不开启 “阅读模式、黑暗模式、简繁切换” 时,不显示 “齿轮” 图标。
2.当用户仅开启 “阅读模式” 时,首页不显示 “齿轮” 图标,文章中显示 “齿轮图标”
3.其他情况正常显示。
2020-09-06 11:56:45 +08:00
Jerry
8038af5aca fix: 補全新增的配置
improvement: Open_Graph 改為 hexo 內置 生成
feat: 增加 tag_per_img 配置(可為各個tag 單獨配置top_img)
feat: 增加 category_per_img 配置(可為各個category單獨配置top_img)
2020-09-05 17:20:31 +08:00
Jerry
25b0c733dc feat: 可設置首頁文章不顯示內容/description
feat: 主頁文章時間和文章頁文章時間可以配置顯示日期還是相對時間
feat: top_img 可配置 [留空(默認色)/顏色/漸變色/圖片鏈接/ false(不顯示top_img)]
feat: footer可配置背景 [留空/false(默認色)/顏色/漸變色/圖片鏈接/true(跟top_img一樣)]
improvement: preloader 在 pjax 下 每個頁面都會加載
improvement: 修改判斷,避免用户設置2個lightbox 而導致報錯(只能設置一個)
improvement: 精確時間顯示 (剛剛/幾分鐘前/幾小時前/幾天前/幾個月前)
improvement: 刪除不必要的語言文件和css
chore: update hexo-renderer-stylus to 2.0.1
2020-09-05 17:01:21 +08:00
Jerry
863cf1e780 Merge branch 'dev' into master 2020-09-04 00:42:50 +08:00
Jerry
8603db0545 fix: 修復關閉last push date 後, 報 'hour' 找不到的bugs 2020-09-02 00:04:32 +08:00
Jerry
85b8a83371 Merge branch 'dev' into master 2020-08-31 13:41:47 +08:00
Jerry
d381d63c08 label: 3.1.0 發佈
fix: 簡體中文的 ‘小時’ 修改為簡體
2020-08-31 13:40:02 +08:00
Jerry
51c4726c54 improvements: 代碼名全大寫
improvements: 補全card-categories和card-archives的 '查看更多‘鏈接 close #337
fix: 修復comments沒設置時,報Unexpected token ')'的bugs close #344
improvements: 優化js和html
fix: 修復toc 滾動百分比不準的Bugs
2020-08-31 01:31:59 +08:00
Jerry
593eb4734e label: 版本號更改 2020-08-29 01:16:46 +08:00
Jerry
fe97d2e63f feat: 增加 aside 最新評論部件
style: 部分css調整和html優化
improvements: 刪除pwa中的theme-color配置,默認生成meta theme-color  close #340
improvements: 優化最後更新時間顯示(1小時內顯示 剛剛,1小時到24小時 顯示 xx小時前,1天到365天 顯示 xx天前,365天后直接顯示日期)
2020-08-29 01:11:11 +08:00
Jerry
ee6f62f4bc fix: 修復在modern樣式下,note 標簽外掛沒有使用tags名時,沒有背景色和夜間模式文字顯示不清楚的bugs
fix: 修復主頁文章cover在深色模式下,邊角有小白邊的bugs close #278
fix: 修復note標簽外掛下,代碼塊顯示背景色的bugs close #339
2020-08-27 21:47:40 +08:00
Jerry
40fd319cb2 fix: 修復當關閉代碼渲染后,標簽外挂裏的代碼塊會被壓縮到一行的bugs
improvements: 優化網站最後更新時間顯示,’0天前‘改爲’今天‘
2020-08-24 22:56:58 +08:00
Jerry
4aacafdae1 feat: 適配hexo 5.1.0 prismjs caption
feat: code-font-size 也會影響行內代碼塊字體大小 #325
fix: 修復aside recent post的 time 在safari沒有顯示的bug
fix: 修復 prismjs 在 tags-toggle 外掛標簽裏,代碼塊顯示一行的bugs
style: 刪除不必要的css
2020-08-22 23:17:28 +08:00
Jerry Wong
ea7eb904fd Merge pull request #331 from HackerYunen/patch-1
Update card_author.pug
2020-08-22 21:20:09 +08:00
HackerYunen
fb5d6f1fd7 Update card_author.pug
同mobile-menus.pug一般,补齐URL。
2020-08-22 20:29:31 +08:00
Jerry
543cd94c9f feat: 適配 hexo 5.0.0 的 prismjs, 代碼主題和各項功能
refactor: 移除 代碼default主題
fix: 修復夜間模式下代碼塊有背景的bugs(沒開啟渲染的情況下)
feat: 增加 code font-size配置 close #322
refactor: 更改配置中 code-font 為 code-font-family
feat: Pjax下,刷新頁面時,會滾動到上次瀏覽的位置
fix: 修復mathjax溢出屏幕的Bugs close #321
2020-08-19 00:21:18 +08:00
Jerry
973306898a 1. style: 版本號更新 2020-08-18 00:52:55 +08:00
Jerry
c512a5fda5 1. chore: 只支持hexo 4.2.0以上版本
2. feat: 可隱藏Mobile sidebar 子菜單
3. refactor: archives和card-post 改為flex佈局
4. feat: 當寬度小於1024時,點擊toc滾動,增加滾動效果
5. feat: 點擊滾動,如果滾動是向上時,將會偏移60px, 避免導航欄遮擋 close #317
6. feat: 可配置font-size
7. refactor: 去除字體放大、縮小按鈕
8. refactor: 部分css由'px'改為'em',適應font-size值改變而改變
9.  feat: pjax增加exclude配置
10. fix: 修復canvas_nest 配置沒有生效的Bugs
11. feat: 新增 cnzz_analytics
12. feat: 騰訊分析改為騰訊移動分析,並適配pjax
13. perf: 改cookies為localstore存儲
14. feat: 設置中的theme_color可單獨配置幾個,而不需要全部開啟 close #314
15. feat: butterfly.yml 採用deepMerge, 與_config文件進行合併而不是替換
16. fix: 修復rightsize-bottom配置無效的bug
17. refactor: aside增加position sticky
18. refactor: 調整webinfo 寬度小時的顯示
19. feat: 更改addtoany item的寫法
20. refactor: aside 內容邊距調整
21. feat: 增加最後更新時間顯示
2020-08-18 00:33:05 +08:00
Jerry
d73960f2a2 Merge branch 'dev' into master 2020-08-11 21:20:01 +08:00
Jerry
195ae9f4c5 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2020-08-11 21:16:54 +08:00
Jerry
44e16d154a 🔖 3.0.1更新
🐛 修復導航側邊欄沒有進入特效的Bugs
2020-08-11 21:15:34 +08:00
Jerry Wong
6306887963 Merge pull request #306 from SerokSSR/dev
修復 comments.use 不能爲空的 bug
2020-08-08 13:15:30 +08:00
Akira Lin
1ac43323fc 修復評論不能爲空的 bug 2020-08-08 12:06:13 +08:00
Jerry
82979322c6 🐛 修復Hexo 5.0.0 以下版本, toc遇到中文不會滾動的bugs close #297, close #299 2020-08-07 18:11:26 +08:00
Jerry
988cbcc331 🐛 修復pjax下,同時開啓Open_Graph_meta和Livere,Livere評論後臺顯示的來源頁面與實際不同 的bugs #294 2020-08-06 21:45:16 +08:00
Jerry
fcd430902d Merge branch 'dev' into master 2020-08-05 22:04:47 +08:00
Jerry
065093e217 🔖 3.0.0 發佈 2020-08-05 22:02:23 +08:00
Jerry
8f27859cea 🐛 修復livere在pjax下的bugs 2020-08-03 18:02:44 +08:00
Jerry
ee45f6517f Merge branch 'dev' into master 2020-08-02 23:31:32 +08:00
Jerry
75f5e991d0 🐛 修復文章頁沒有lazyload的bugs 2020-08-02 23:29:44 +08:00
Jerry
67201ac58d 📝 更改注釋文字 2020-08-01 22:47:34 +08:00
Jerry
315d3b50df Merge branch 'dev' into master 2020-08-01 14:44:06 +08:00
Jerry
a7c3a8906a 🔖 升級到3.0.0-rc2 close #287,close #277,close #270,close #267,close #252,close #234,close #216 2020-08-01 14:39:25 +08:00
Jerry
507453671a 🐛 適配hexo 5.0.0 修復toc點擊不會跳轉的bugs
🐛 適配hexo 5.0.0 修復toc點擊不會跳轉的bugs
🍻 文件整理
🍻 UI微調
2020-08-01 01:50:01 +08:00
Jerry
ddb728d8f4 Merge branch 'pjax' into dev 2020-07-27 16:51:12 +08:00
Jerry
f4f725bb93 🎨 代碼優化 2020-07-27 16:48:41 +08:00
Jerry
d2943bbbb1 評論增加lazyload
 頭像/打賞圖片 增加lazyload
 調整移動端 ol ul 的邊距 #267
🐛 修復Valine 的requiredFields設置為空 無效的bugs
2020-07-26 15:33:47 +08:00
Jerry Wong
d5cf43a6b4 Merge pull request #279 from SerokSSR/pjax
整理 footer 配置項,同時修改部分用语
2020-07-22 16:56:41 +08:00
Akira Lin
6d0931eb9c Update footer.pug 2020-07-22 15:37:29 +08:00
Jerry
1a2568d645 添加第三方chat服務 crisp 2020-07-22 13:56:54 +08:00
shiroku
ca9b16ee10 修改部分用语 2020-07-22 11:08:06 +08:00
Jerry
5ee7976c4a 提升highlight-tool的加載速度
 可設置取消谷歌自動廣告代碼加載
🐛 修復pjax下側邊欄分類打開/收縮按鈕 直接跳轉的bugs
🐛 修復代碼塊向右偏移的bugs
🐛 修復子目錄下,404頁面的回到首頁鏈接錯誤的bugs
2020-07-20 22:21:05 +08:00
Jerry
546840e0a4 🐛 修復子目錄下,404頁面的回到首頁鏈接錯誤的bugs 2020-07-18 23:33:47 +08:00
Jerry
727a2d97d9 🐛 修復子目錄下,404頁面的‘回到首頁’鏈接錯誤的bugs 2020-07-18 23:30:37 +08:00
Jerry
4f64768011 disqus/disqusjs/facebook comments 可隨夜間模式按鈕切換而轉換主題
🐛 修復pjax下valine評論顯示不正常的bugs
🐛 修復facebook comments 在手機下寬度不是100%的bugs
2020-07-18 22:30:15 +08:00
Jerry
f7d57ac883 fix lazyload 2020-07-17 00:51:18 +08:00
Jerry
898cc31c58 pjax 2020-07-16 19:30:54 +08:00
Jerry Wong
5b6e008b84 Update issue templates 2020-07-02 00:12:14 +08:00
Jerry
4d34208391 💥 支持雙評論系統配置/評論配置整理
 增加mac light 代碼框
 增加文章過期提醒配置
 文章copyright 可單獨配置
 card-category 中category名稱和數字限制一行顯示
 簡繁轉換優化,placeholder文字也會被轉換
🐛 修復配置PWA參數時,如果網站是子目錄時,會出現加載不到文件的bugs
調整當card-category有收縮按鈕時的顯示佈局
2020-06-25 23:13:55 +08:00
Jerry Wong
67b49c01ba Merge pull request #250 from sviptzk/dev
F 修复某种情况下导致highlight没有第二个class名(plain)而导致的代码语言变为undefined
2020-06-24 13:46:27 +08:00
Jerry Wong
7c3945fe1e Merge branch 'dev' into dev 2020-06-24 13:45:07 +08:00
Antmoe
dbd6ba240b F 修复某种情况下导致highlight没有第二个class名(plain)而导致的代码语言变为undefined 2020-06-24 09:20:08 +08:00
Jerry
54b67987c1 Merge branch 'dev' 2020-06-24 00:52:33 +08:00
Jerry
2847e9a237 🐛 修復右下角按鈕被button標籤外掛遮擋的bugs
🐛 修復開啟photofigcaption後,圖庫會出現界面錯亂的Bugs
2020-06-24 00:50:15 +08:00
Jerry
26df41c772 Merge branch 'dev' 2020-06-20 22:10:55 +08:00
Jerry
1d293c0fc7 aplayer的間距調整
🐛 修復tabs外挂標簽與aplayer插件衝突而異常的bugs
2020-06-20 22:05:39 +08:00
Jerry
4e7051ad77 Merge branch 'dev' 2020-06-20 14:01:45 +08:00
Jerry
baa6f72d35 🐛 修復部分設備遇到mobile-sidebar無法滾動的bugs
🐛 修復BUTTON標籤嵌套使用在其他標籤時,生成多了br標籤而導致樣式不同的bugs
🐛 修復文章front-matter的highlight_shrink和toc為空時,會出現js報錯的bugs
2020-06-20 13:58:59 +08:00
Jerry
955b4bae6a Merge branch 'dev' 2020-06-18 20:13:59 +08:00
Jerry
4d9fca6ed6 🐛 修復文章頁面部分元素內部文字溢出的錯誤 2020-06-18 20:08:58 +08:00
Jerry
95ddf28f3b Merge branch 'dev' 2020-06-16 21:19:47 +08:00
Jerry
71c8a37af2 🔖 修改版本號 2020-06-16 21:18:16 +08:00
Jerry
e901f9ad35 Merge branch 'dev' 2020-06-16 18:43:13 +08:00
Jerry
aa8c509b96 🏷️ 更新至3.0.0-RC-1 close #189, close #192, close #223, close #224, close #229, close 232, close #240 2020-06-16 18:37:22 +08:00
Jerry
462422e279 Merge branch 'dev' 2020-05-21 16:29:44 +08:00
Jerry
0ad2c01fc9 🐛 fix: 修復因instantpage新版本bugs而導致fancybox和簡繁轉換無法正常工作的bugs 2020-05-21 16:27:44 +08:00
Jerry
bad24849bd Merge branch 'dev' 2020-05-01 19:00:12 +08:00
Jerry
a0655a37c8 🏷️ 更新2.3.5 更新內容查看 https://github.com/jerryc127/hexo-theme-butterfly/releases/tag/2.3.5 2020-05-01 18:58:09 +08:00
Jerry
eb242f0809 Merge branch 'dev' 2020-04-30 00:36:07 +08:00
Jerry
e8a47d040a 🐛 修復上次更新導致頁面跳動的bug 2020-04-30 00:32:43 +08:00
Jerry
b1795e3def Merge branch 'dev' 2020-04-28 15:35:58 +08:00
Jerry
250181c569 🐛 修復當博客root不是'/'時,引用本地圖片會顯示不出的bug close #211 2020-04-28 15:31:14 +08:00
Jerry
54b212ead3 Merge branch 'dev' 2020-04-27 14:45:26 +08:00
Jerry
91d285391d 🐛 修復tags頁標籤只顯示8個的bug 2020-04-27 14:44:25 +08:00
Jerry
4bbc035f54 Merge branch 'dev' 2020-04-27 02:40:24 +08:00
Jerry
92111f3c32 🐛 fix: 修復當menu沒設置圖標時,會報Cannot read property 'trim' of undefined 的bug
🐛 fix: 修復meta description 自動生成文章前200文字時部分沒有轉義的bug
2020-04-27 02:37:20 +08:00
Jerry
40ba3bb92f 🏷️ 更新2.3.0 2020-04-26 23:42:52 +08:00
Jerry
e2cb0242bb 🏷️ 2.3.0發佈 2020-04-26 23:37:37 +08:00
Jerry
6cf59387c8 🏷️ 2.3.0 發佈 2020-04-26 23:31:39 +08:00
Jerry
13a0a4af8e Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2020-04-26 23:31:03 +08:00
Jerry
0d56db50e4 🏷️ 2.3.0發佈 2020-04-26 23:29:38 +08:00
Jerry Wong
dad6fdbcc3 Merge pull request #194 from theWorkFsz/fix/article-sort-img-src
fix: 修复 articleSort 设置文章封面逻辑不一致的问题
2020-04-26 14:41:53 +08:00
Jerry
796b8e6df4 適配 valine 1.4.5, 增加emojiCDN和emojiMaps配置 2020-04-21 21:36:21 +08:00
Jerry
8953e2e1aa 增加facebook comments 2020-04-19 16:05:47 +08:00
Jerry
b512eb761d feat: 增加標籤外掛 tag-toggle
 feat: 增加頁面加載動畫preloader close #193
 feat: 適配hexo-generator-indexed插件
 feat: aside subtitle可配置,優先顯示配置內容、沒有的顯示頁面subtitle close #191
 feat: aside card-tags可配置是否顯示顏色
 feat: algolia-search highligh文字加深
 feat: 增加頁面keywords設置 #191
 feat: darkmode和readmode配色微調
🐛 fix: 修復hide-block 配置顏色顯示出錯的bug
🐛 fix: 修正zh-TW部分用語
2020-04-17 19:48:07 +08:00
horo
84efd46404 fix: 修复 articleSort 设置文章封面逻辑不一致的问题 2020-04-14 18:46:13 +08:00
Jerry
d62ec1b866 💥 改cdn_use為inject,可插入代碼到head或者bottom
💥 移除對文章隱藏的支持,如需要,請使用插件,hexo-hide-posts/hexo-generator-indexed
💥 移除subtitle金山詞霸每日一句,增加搏天api的隨機語錄
 subtitle修改為網頁加載完後再加載,防止api回應過慢而阻礙網頁顯示
 適配valine 1.4.0, 刪除部分valine夜間模式代碼
 meta增加article:published_time和article:modified_time
 當沒有設置Description時,會自動讀取文章前200個文字作為meta Description
 sidebar menu 增加頭像轉圈hover
💄 調整aside和mobile sidebar 網頁資訊佈局,當缺少一個時,寬度依舊平分
🐛 調整子目錄的排版(向左對齊),修復只能點擊子目錄文字才能跳轉的bug
🔥 pug精簡 刪除recent-post.pug  改為引用mixins/post-ui.pug
2020-04-12 02:40:54 +08:00
Jerry
e81a81c9d1 feat: 本地搜索支持顯示文章內容和高亮keyword
🐛 fix: 修復搜索結果在手機端無法滾動的bug
🐛 fix: 修復aside categories 查看更多跳轉到tags頁面的bug closes #188
2020-04-07 14:24:11 +08:00
Jerry
6c68ce1c4c feat: aside widget 增加部分參數可配置
 feat: aside widget的Categories,Tags,post,Archives可配置limit
 feat: 整合公告欄配置到aside去
🐛 fix: 修復當flink.yml內容為空時,報錯的bug
💄 fix: 修復darkmode下 aside 查看更多文字顏色太淺的bug
2020-04-06 01:49:47 +08:00
Jerry
eb11e4afeb 🐛 修復POST-META關閉閲讀分鐘和訪問量後,評論量前有分割線的bug
🐛 修復canvas_ribbon透明度變為1再變回預設值bug
🐛 修復當default_cover沒設置時,會出現無圖片的bug
🎨 部分js調整
2020-04-02 22:16:01 +08:00
Jerry
5e37ab641a feat: 在設置裏配置js/css(CDN_USE)時可以設定其他參數 closes #152
 feat: readmode下可以切換darkmode和lightmode
💄 fix: 高分辨率下的界面適配 closes #163
🐛 fix: 修復DarkMode下,note標簽的顯示bug
2020-03-30 21:45:13 +08:00
Jerry
559afab632 🔖 2.2.5發佈
更新内容請看 https://github.com/jerryc127/hexo-theme-butterfly/releases
2020-03-28 03:20:36 +08:00
Jerry
16a3ac510d 🔖 2.2.5發佈
更新内容請看 https://github.com/jerryc127/hexo-theme-butterfly/releases
2020-03-28 03:13:30 +08:00
Jerry
c134d4fc86 🐛 fix: 修復highlight_shrink設為false時,導致script報錯的bug
🐛 fix: 修復highlight_shrink設為true時,按鈕點擊無反應,沒有打開代碼框的bug
🐛 fix: 修復自動切換darkmode時,切換按鈕icon沒有變更的bug
2020-03-24 19:03:51 +08:00
Jerry
0ba52293a2 feat: 增加手動廣告位置
 feat: aside info 裏添加本站總文字
🎨 refactor: post-meta代碼結構
2020-03-20 18:28:13 +08:00
Jerry
ce72ba4f5d 🐛 fix: 修復簡繁轉換無效的bug 2020-03-19 15:42:52 +08:00
Jerry
c118e1e16a 🐛 1.修復首頁文章日期顯示錯誤的bug
🐛 2.修復因註釋掉豆瓣設置導致報Cannot read property 'meta' of undefined的bug
💄 3.調整文章頁post-meta和主頁post-meta的間距
💄 4.文章頁,當設置只顯示一個日期時,增加文字顯示
2020-03-19 01:15:45 +08:00
Jerry
67c013d6e7 🐛 1.修復Gitalk報Error: Cannot read property 'repository' of undefined 的bug
🐛 2.修復評論utterances 在display_mode設置為dark時,仍顯示light主題的bug
🐛 3.修復display_mode設置dark沒有效果的bug
🎨 4.評論增加夜間模式、文章頁判斷,減少不必要的js加載
2020-03-18 18:44:39 +08:00
Jerry
8bf11ddeb0 Breaking Change
1. 不再支持hexo 4.0.0以下版本
2. 添加hexo fragment_cache,加快生成速度
3. 完善V5圖標顯示,不再需要同時加載V4和v5圖標
4. 去除cheerio依賴
5. 整合豆瓣配置,增加配置遊戲,圖書頁面top_img,可設置是否設置meta,解決部分瀏覽器無法顯示圖片問題
6. 友情鏈接除列表外可自定義內容
7. 可設置主頁標題距離頂部距離
8. 側邊欄可隱藏,可設置手機頁面是否隱藏
9. 增加disqusjs和utterances 兩個評論
10. 主頁文章增加tags和更新日期顯示,可以配置post_meta
11. 首頁subtitle可關閉打字效果,可設置打字效果顯示一次或loop
12. 增加valine和gitalk的配置
13. darkmode配置整理
14. 增加404頁面
15. post_beautify改為beautify,頁面美化不再只限於post頁,page頁也一樣
16. 可設置是否顯示cover,可設置各位置的cover顯示
17. 增加mermaid,可畫流程圖、狀態圖、時序圖、甘特圖等等
18. 增加pangu配置,中英文之間添加空格
19. 整合部分配置
20. post-copyright增加decode網址 (可以顯示中文)
21. 增加部分顏色配置

Feature
1. 適配IE
2. 增加一個Tag Plugins: 圖庫集
3. 增加一個Tag Plugins: tag-hide 功能 inline/block
4. 去除page頁開頭顯示與標題一樣的內容
5. aside 公告欄設置,支持html代碼
6. 手機界面sidebar顯示進度條和加深對應的標題
7. 主頁subtitle 的 hitokoto 顯示內容出處
9. footer 的hexo鏈接改為https
10. 修改手機下,menus和toc的打開效果
11. 手機頁面下,搜索界面全屏顯示
12. SEO優化,標題欄改為h1顯示
13. 閲讀模式優化,可根據light mode 和darkmode調整背景
14. 當屏蔽js時,header會出現(之前用js控制,會隱藏)

Fixed
1. 修復Tencent Analytics的script加載為https #105
2. 修復相關文章,日期顯示錯誤bug
3. 修復gitalk報錯問題
4. 修復當valine background 是絕對地址時無法顯示的bug
5. 修復medium-zoom 無法使用的bug
6. 修復在safari下,點擊或移動到首頁文章cover,圓角變成正方形的bug #114
7. 修復在部分瀏覽器下,aside,友情鏈接頭像轉動變形的bug
8. 修復在寬度限制下,表格內容溢出屏幕外而出現滾動條的bug \#138
9. 修復gitalk js 在一些沒有設置評論的page里加載的bug
10. 修復tag plugins 的gist 在不同主題下的背景顏色問題(黑色主題下,文字不易觀看)
11. 修復highlight figcaption 顯示不全的bug
12. 修復disqus評論數無法獲取的bug
13. 修復子目錄在觸摸屏下點擊,偶爾不出現的bug
14. 修復a標籤太長(連續英文字母)不會換行的bug
15. 修復toc滾動時,閲讀進度條也跟著滾動的bug
16. 修復aside的圖片,可點擊顯示大圖bug
17. 修復activate-power-mode設置參數無效bug
18. 修復語言上的錯誤 \#156
19. 修復主頁在safari桌面端,首頁滾動卡頓的bug
2020-03-17 21:39:58 +08:00
Jerry
ddff0348b7 Merge branch 'master' of https://github.com/jerryc127/hexo-theme-butterfly 2020-03-17 21:38:27 +08:00
Jerry
321091befb Breaking Change
1. 不再支持hexo 4.0.0以下版本
2. 添加hexo fragment_cache,加快生成速度
3. 完善V5圖標顯示,不再需要同時加載V4和v5圖標
4. 去除cheerio依賴
5. 整合豆瓣配置,增加配置遊戲,圖書頁面top_img,可設置是否設置meta,解決部分瀏覽器無法顯示圖片問題
6. 友情鏈接除列表外可自定義內容
7. 可設置主頁標題距離頂部距離
8. 側邊欄可隱藏,可設置手機頁面是否隱藏
9. 增加disqusjs和utterances 兩個評論
10. 主頁文章增加tags和更新日期顯示,可以配置post_meta
11. 首頁subtitle可關閉打字效果,可設置打字效果顯示一次或loop
12. 增加valine和gitalk的配置
13. darkmode配置整理
14. 增加404頁面
15. post_beautify改為beautify,頁面美化不再只限於post頁,page頁也一樣
16. 可設置是否顯示cover,可設置各位置的cover顯示
17. 增加mermaid,可畫流程圖、狀態圖、時序圖、甘特圖等等
18. 增加pangu配置,中英文之間添加空格
19. 整合部分配置
20. post-copyright增加decode網址 (可以顯示中文)
21. 增加部分顏色配置
Feature
1. 適配IE
2. 增加一個Tag Plugins: 圖庫集
3. 增加一個Tag Plugins: tag-hide 功能 inline/block
4. 去除page頁開頭顯示與標題一樣的內容
5. aside 公告欄設置,支持html代碼
6. 手機界面sidebar顯示進度條和加深對應的標題
7. 主頁subtitle 的 hitokoto 顯示內容出處
9. footer 的hexo鏈接改為https
10. 修改手機下,menus和toc的打開效果
11. 手機頁面下,搜索界面全屏顯示
12. SEO優化,標題欄改為h1顯示
13. 閲讀模式優化,可根據light mode 和darkmode調整背景
14. 當屏蔽js時,header會出現(之前用js控制,會隱藏)
Fixed
1. 修復Tencent Analytics的script加載為https #105
2. 修復相關文章,日期顯示錯誤bug
3. 修復gitalk報錯問題
4. 修復當valine background 是絕對地址時無法顯示的bug
5. 修復medium-zoom 無法使用的bug
6. 修復在safari下,點擊或移動到首頁文章cover,圓角變成正方形的bug #114
7. 修復在部分瀏覽器下,aside,友情鏈接頭像轉動變形的bug
8. 修復在寬度限制下,表格內容溢出屏幕外而出現滾動條的bug \#138
9. 修復gitalk js 在一些沒有設置評論的page里加載的bug
10. 修復tag plugins 的gist 在不同主題下的背景顏色問題(黑色主題下,文字不易觀看)
11. 修復highlight figcaption 顯示不全的bug
12. 修復disqus評論數無法獲取的bug
13. 修復子目錄在觸摸屏下點擊,偶爾不出現的bug
14. 修復a標籤太長(連續英文字母)不會換行的bug
15. 修復toc滾動時,閲讀進度條也跟著滾動的bug
16. 修復aside的圖片,可點擊顯示大圖bug
17. 修復activate-power-mode設置參數無效bug
18. 修復語言上的錯誤 \#156
19. 修復主頁在safari桌面端,首頁滾動卡頓的bug
2020-03-17 21:28:27 +08:00
Jerry Wong
9c996d0a73 Merge pull request #156 from HolgerHuo/patch-1
A small translation mistake.
2020-03-14 00:13:26 +08:00
HolgerHuo
748709f56f A small translation mistake. 2020-03-13 15:10:22 +08:00
Jerry Wong
1ef2720c2c Create stale.yml 2020-03-07 21:44:03 +08:00
Jerry Wong
d85f71887b Merge pull request #142 from bmyjacks/Fix-#105
Fix Tencent Analytics #105
2020-03-01 22:51:07 +08:00
bmyjacks
9bb7c2bb99 Fix Tencent Analytics #105 2020-03-01 07:38:29 +08:00
Jerry Wong
c40db692bf Merge pull request #117 from flymin/master
add more options to gitalk
2020-02-13 20:03:37 +08:00
flymin
eec30fd6be add more options to gitalk 2020-02-07 11:53:29 +08:00
Jerry
24269f457e Fixed: 修復相關文章 日期顯示錯誤bug 2019-12-31 15:10:47 +08:00
Jerry
c002fd0e64 update README 2019-12-30 16:37:57 +08:00
Jerry Wong
ae717bd304 Merge pull request #90 from eallion/dev
修改 Disqus 为 Disqus.js 版
2019-12-28 14:06:28 +08:00
eallion
894c709b3c add disqus.js 2019-12-28 13:17:57 +08:00
eallion
d59ed0b401 auto push via Ubuntu 2019-12-27 23:11:48 +08:00
Charles Chin
96ef1478ef Merge pull request #1 from jerryc127/dev
解決gitalk報錯問題
2019-12-27 22:56:05 +08:00
Jerry
43b109bdb6 解決gitalk報錯問題 2019-12-27 21:44:24 +08:00
Jerry
995fc7cf9d 1. 修復當valine background 是絕對地址時無法顯示的bug 2019-12-22 00:50:59 +08:00
Jerry
e77ab81941 1. 修復2.1.0 medium-zoom 無法使用的bug 2019-12-20 14:12:01 +08:00
Jerry
eae694806c v2.1.0
1. 可設置隱藏文章
2. 適配 Hexo 的 Tag Plugins Code Block With marked lines 顯示
3. 可配置首頁cover顯示的位置
4. 更改深色模式下的配色
5. activate_power_mode 增加關閉顏色和抖動
6. 增加谷歌廣告,騰訊分析
7. 相關文章增加時間顯示,調整佈局,垂直居中
8. 文章頁面,top_img增加評論數顯示
9. 可以取消點擊圖片觀看大圖
10. mathjax和kathex可設置每頁都加載還是按需加載
11. 深色模式下,滾動條顔色的適配
12. 優化gitalk 在 dark mode下的顯示
13. 文章頁,文章標題過長時,只顯示三行內容
14. 深色模式下,背景圖片加上蒙板
15. 優化深色/閲讀模式下,canvas的顯示
16. 優化打賞的特效和移動到二維碼不會立刻消失
17. 優化sub-menu樣式
18. 修改aside 的tags顔色,在深色模式下不會出現觀看困難
19. 升級 normalize.css 到最新版
20. 優化手機上toc和menu的打開動畫
21. 優化代碼框打開關閉的特效
22. 精簡js,部分操作改為css控制
23. 優化主題的一些動畫,不會過於生硬

1. 修復當圖片被a標簽包圍時,點擊圖標沒有跳轉到對應網頁而是出現大圖觀看模式的bug
2. 修復當網址有subdirectory時,menu、打賞二維碼和lodding_bg 鏈接路徑錯誤的bug
3. 修復當網址有subdirectory時,
4. 修復katex 的 CSS無法讀取bug
5. 修復搜索按鈕在文章頁不顯示的bug
6. 修復gitalk css引用失敗的bug
7. 修復 點擊特效 煙花 無效的bug
8. 修復gitalk報path.startsWith is not a function的bug
9. 修復 閲讀模式下,背景沒有變純色的bug
10. 修復閲讀模式下,header 偶爾出現沒有靠攏頂部的bug
11. 修復Hexo Tag Plugins Block Quote 裏的鏈接顯示出外面的Bug
12. 修復aside歸檔日期過長導致錯位的bug
13. 修復toc為空時,toc按鈕仍存在的bug
14. 修復關閉懶加載後,頭像無法顯示的bug
15. 修復深色模式下,切換readmode偶爾會無效的bug
16. 修復在一些手機設備上,toc和menu的按鈕顯示不對齊的bug #72
2019-12-20 02:19:43 +08:00
Jerry
90726f1a59 update README 2019-11-21 22:08:02 +08:00
Jerry Wong
ae73a2114f Merge pull request #75 from noraj/patch-2
Move readme and translate it in english
2019-11-21 20:03:39 +08:00
Jerry Wong
20dcc61e0d Merge pull request #74 from noraj/patch-1
highlight themes
2019-11-21 20:03:23 +08:00
Alexandre ZANNI
f36450dbc0 Translate README in english 2019-11-21 11:52:37 +01:00
Alexandre ZANNI
2fc895102d Move readme 2019-11-21 11:48:33 +01:00
Alexandre ZANNI
e26637c5a8 highlight themes 2019-11-21 11:20:27 +01:00
Jerry
082df56112 1. 完善gitalk 在 dark mode下的顯示
2. 完善footer 有背景和無背景下,在dark mode下的顯示
3. 界面微調
4. 增加選項可關閉aside在手機上的顯示
5. 修復關閉夜間模式情況下,console報Uncaught ReferenceError: autoChangeMode is not defined 的bug
2019-11-08 22:25:00 +08:00
Jerry
27adaecf51 1. 修復gitalk報path.startsWith is not a function的bug #66
2. 修復在屏幕縮放字體大小而導致menu變爲sidebar模式的bug #64
3. just-gallery增加上下邊距
2019-11-07 01:45:00 +08:00
Jerry
a33e7e1d89 1. 修復gitalk報path.startsWith is not a function的bug #66
2. 修復在屏幕縮放字體大小而導致menu變爲sidebar模式的bug #64
3. just-gallery增加上下邊距
2019-11-07 01:23:29 +08:00
Jerry
da4a8d77d7 1. 修復 點擊特效 烟花 無效的Bug 2019-11-05 14:57:59 +08:00
Jerry
8cb366bdda 1. 修復gitalk css引用失敗的bug 2019-11-04 20:57:50 +08:00
Jerry
7f8e431226 1. 修復搜索按鈕在文章頁不顯示的bug 2019-11-03 18:24:26 +08:00
Jerry
b32ff6920b 1. 修復katex 的 CSS無法讀取bug 2019-11-03 13:36:39 +08:00
Jerry
25f128fb3d V2.0.0
Breaking change
1. 手機端界面卡片化,同時,手機端也可以顯示側邊欄的內容
2. 修復當menu過多時,header界面出現錯亂的bug。當menu過多時,會變為sidebar模式
3. 增加medium-zoom大圖查看模式
4. 增加鼠標點擊特效:文字和愛心 兩個點擊特效
5. 主頁subtitle可以調用第三方api(金山詞霸每日一句、一言網的一句話、一句網、今日詩詞)
6. 添加 snackbar 彈窗
7. 修改nightshift為darkmode,darkmode可隨系統設置而自動切換,可設置隨時間而切換darkmode
8. 修復hexo自帶的標籤外掛(Tag Plugins)顯示bug(Block Quote、Code Block With caption、Gist、Youtube、Vimeo)
9. 主題所需要的css和js可根據需要配置CDN
10. 更改darkmode的加載方式,網站設置dark mode後,現在進入網頁不會在'閃'一下
11. 背景特效和背景圖片在手機界面也會顯示
12. 增加justified-gallery圖片顯示(Tag Plugins)
Feature
1. 文章頁面,字數統計、閲讀時長和閲讀量前面添加icon
2. 更改懶加載js
3. 升級typed.js/instantpage.js到最新版
4. 搜索和右下角按鈕添加退出特效
Fixed
1. 修復在 Hexo 4.0.0下,一些按鈕點擊會跳出一個空白頁的bug
2. 修復在 Hexo 4.0.0下,分頁按鈕出現代碼的bug
3. 修復當沒有設置評論時,右下角依舊出現'直達評論'按鈕的bug
4. 優化sidebar的打開速度
5. 修復文章頁標題左右邊距不平等的bug
6. 修復keywords讀取的bug
7. 修復當post/page 內容為空時,footer位置錯亂的bug
8. 修復在手機safari,toc sidebar底部內容被遮擋的bug
9. 完善Dark mode,一些界面的配色
10. 修復 card-archives 查看更多 跳轉bug
Remove
1. 移除Gitment
2. 移除Gallery
2019-11-03 02:29:05 +08:00
Jerry
9e14fca4a7 V2.0.0
Breaking change
1. 手機端界面卡片化,同時,手機端也可以顯示側邊欄的內容
2. 修復當menu過多時,header界面出現錯亂的bug。當menu過多時,會變為sidebar模式
3. 增加medium-zoom大圖查看模式
4. 增加鼠標點擊特效:文字和愛心 兩個點擊特效
5. 主頁subtitle可以調用第三方api(金山詞霸每日一句、一言網的一句話、一句網、今日詩詞)
6. 添加 snackbar 彈窗
7. 修改nightshift為darkmode,darkmode可隨系統設置而自動切換,可設置隨時間而切換darkmode
8. 修復hexo自帶的標籤外掛(Tag Plugins)顯示bug(Block Quote、Code Block With caption、Gist、Youtube、Vimeo)
9. 主題所需要的css和js可根據需要配置CDN
10. 更改darkmode的加載方式,網站設置dark mode後,現在進入網頁不會在'閃'一下
11. 背景特效和背景圖片在手機界面也會顯示
12. 增加justified-gallery圖片顯示(Tag Plugins)
Feature
1. 文章頁面,字數統計、閲讀時長和閲讀量前面添加icon
2. 更改懶加載js
3. 升級typed.js/instantpage.js到最新版
4. 搜索和右下角按鈕添加退出特效
Fixed
1. 修復在 Hexo 4.0.0下,一些按鈕點擊會跳出一個空白頁的bug
2. 修復在 Hexo 4.0.0下,分頁按鈕出現代碼的bug
3. 修復當沒有設置評論時,右下角依舊出現'直達評論'按鈕的bug
4. 優化sidebar的打開速度
5. 修復文章頁標題左右邊距不平等的bug
6. 修復keywords讀取的bug
7. 修復當post/page 內容為空時,footer位置錯亂的bug
8. 修復在手機safari,toc sidebar底部內容被遮擋的bug
9. 完善Dark mode,一些界面的配色
10. 修復 card-archives 查看更多 跳轉bug
Remove
1. 移除Gitment
2. 移除Gallery
2019-11-03 02:25:27 +08:00
Jerry
336e221de5 V2.0.0
Breaking change
1. 手機端界面卡片化,同時,手機端也可以顯示側邊欄的內容
2. 修復當menu過多時,header界面出現錯亂的bug。當menu過多時,會變為sidebar模式
3. 增加medium-zoom大圖查看模式
4. 增加鼠標點擊特效:文字和愛心 兩個點擊特效
5. 主頁subtitle可以調用第三方api(金山詞霸每日一句、一言網的一句話、一句網、今日詩詞)
6. 添加 snackbar 彈窗
7. 修改nightshift為darkmode,darkmode可隨系統設置而自動切換,可設置隨時間而切換darkmode
8. 修復hexo自帶的標籤外掛(Tag Plugins)顯示bug(Block Quote、Code Block With caption、Gist、Youtube、Vimeo)
9. 主題所需要的css和js可根據需要配置CDN
10. 更改darkmode的加載方式,網站設置dark mode後,現在進入網頁不會在'閃'一下
11. 背景特效和背景圖片在手機界面也會顯示
12. 增加justified-gallery圖片顯示(Tag Plugins)
Feature
1. 文章頁面,字數統計、閲讀時長和閲讀量前面添加icon
2. 更改懶加載js
3. 升級typed.js/instantpage.js到最新版
4. 搜索和右下角按鈕添加退出特效
Fixed
1. 修復在 Hexo 4.0.0下,一些按鈕點擊會跳出一個空白頁的bug
2. 修復在 Hexo 4.0.0下,分頁按鈕出現代碼的bug
3. 修復當沒有設置評論時,右下角依舊出現'直達評論'按鈕的bug
4. 優化sidebar的打開速度
5. 修復文章頁標題左右邊距不平等的bug
6. 修復keywords讀取的bug
7. 修復當post/page 內容為空時,footer位置錯亂的bug
8. 修復在手機safari,toc sidebar底部內容被遮擋的bug
9. 完善Dark mode,一些界面的配色
10. 修復 card-archives 查看更多 跳轉bug
Remove
1. 移除Gitment
2. 移除Gallery
2019-11-03 02:21:01 +08:00
Jerry
32d1cd3f53 v1.2.2
1. 修復在hexo 4.0.0下,分頁按鈕渲染不完全的bug
2019-10-20 13:16:08 +08:00
Jerry
1e06a6ca5e v1.2.1
1. 修復在safari上,頭像旋轉顯示框框的bug
2019-09-25 23:37:09 +08:00
Jerry
6c26f20427 更改版本號 2019-09-24 02:30:14 +08:00
Jerry
dc65869042 1. 更改手機頁面的menu和toc的顯示方式和顯示特效(ipad也能看TOC)
2. 可設置禁止複製網站内容
3. 可設置複製時,内容自動加上版權信息
4. 可修改tag的top_img
5. 可修改category的top_img
6. 可修改valine的背景
7. archives頁UI優化
8. ICP增加icon #37
9. 可設置主頁top_img的高度
10. 可設置主頁site-info的位置
11. category頁和tag頁的UI可以設置與主頁UI一樣 #31
12. 主頁subtitle可設置多個句子(不再限制2個) #37
13. 設置menu時,頭尾添加空格不受影響
14. 調整post頁的佈局
15. 书签添加icon
16. 公告icon效果
17. 首頁歸檔模塊,可設置數量限制,會顯示'查看更多'按鈕
18. 右下角按鈕調整。
19. 修复文章cover隨機图片生成,同一篇文章,不同地方的cover顯示不一样的bug
20. 修復gitalk語言設置無效的bug #35
21. 修復post頁面,當沒有設置word count時,閲讀量前有'|"
22. 修复sub-menu在safari的显示问题
23. 修复tags页评论居中问题
24. 修复header a hover 白色问题
25. 修復夜間模式下footer的顔色bug
26. 修復英文語言下,書簽英文顯示不完整的問題
2019-09-24 02:17:07 +08:00
Jerry
2b90e15596 Merge branch 'dev' of https://github.com/jerryc127/hexo-theme-butterfly into dev 2019-09-24 02:11:41 +08:00
Jerry
2eb15123f9 1. 更改手機頁面的menu和toc的顯示方式和顯示特效(ipad也能看TOC)
1. 更改手機頁面的menu和toc的顯示方式和顯示特效(ipad也能看TOC)
3. 可設置複製時,内容自動加上版權信息
4. 可修改tag的top_img
5. 可修改category的top_img
6. 可修改valine的背景
7. archives頁UI優化
8. ICP增加icon #37
9. 可設置主頁top_img的高度
10. 可設置主頁site-info的位置
11. category頁和tag頁的UI可以設置與主頁UI一樣 #31
12. 主頁subtitle可設置多個句子(不再限制2個) #37
13. 設置menu時,頭尾添加空格不受影響
14. 調整post頁的佈局
15. 书签添加icon
16. 公告icon效果
17. 首頁歸檔模塊,可設置數量限制,會顯示'查看更多'按鈕
18. 右下角按鈕調整。
19. 修复文章cover隨機图片生成,同一篇文章,不同地方的cover顯示不一样的bug
20. 修復gitalk語言設置無效的bug #35
21. 修復post頁面,當沒有設置word count時,閲讀量前有'|"
22. 修复sub-menu在safari的显示问题
23. 修复tags页评论居中问题
24. 修复header a hover 白色问题
25. 修復夜間模式下footer的顔色bug
26. 修復英文語言下,書簽英文顯示不完整的問題
2019-09-24 02:09:51 +08:00
Jerry Wong
eecfaaf124 Merge pull request #39 from jerryc127/revert-37-dev
Revert "添加部分功能"
2019-09-22 20:36:17 +08:00
Jerry Wong
05766e396f Revert "添加部分功能" 2019-09-22 20:35:41 +08:00
Jerry Wong
94c51b5d04 Merge pull request #37 from larscheng/dev
添加部分功能
2019-09-20 14:43:16 +08:00
zhengql
f6d70e5863 1. Feature: 可设置首页背景图片屏占比
2. Optimization: 优化多级菜单的使用方式
3. Optimization: 支持自定义多个主頁subtitle
4. Optimization: ICP备案信息可显示备案图标
2019-09-19 23:30:21 +08:00
LarsCheng
3d09a9331b Merge pull request #3 from jerryc127/dev
Dev
2019-09-14 20:43:49 +08:00
Jerry
83dc0559c0 1. Feature: 可設置内联代码块样式 #26
2. Feature: 可設置夜間模式作爲默認樣式
3. Feature: 可設置是否顯示code language名稱
4. Feature: 可設置是否展開或關閉代碼框
5. Feature: 可設置背景圖片/顔色
6. Feature: 可設置是否顯示footer背景
7. Feature: 增加 canvas-nest.js
8. Feature: 頭像可設置效果(轉圈圈)
9. Feature: menu可設置分組
9. Fix: 優化打賞和搜索打開特效
10. Fix: 優化sidebar的打開特效,避免與文章頁特效不同步
11. Fix: 適配**hexo-blog-encrypt**,現在可以顯示toc
12. Fix: 修復設置不顯示評論時,直達評論按鈕沒有消失的bug
13. Fix: 修復post頁底欄,當沒有顯示評論,不顯示TOC,評論和toc都不顯示 這三種狀態下按鈕的bug
14. Fix: 修復代碼框左右滑動時,代碼名字跟著滑動的bug
15. Fix: 其他page頁標題的字體顯示
16. Fix: 修復當設置開啓canvas_ribbons,進入網站會先顯示canvas_ribbons的bug
17. Fix: 完善夜間模式下,字體顯示問題
18. Fix: 修復代碼框 複製 和 代碼名 z-index bug #25
19. Fix: 完善阅读模式
2019-09-08 16:17:07 +08:00
Jerry
91bb944931 1. 更改版本號 2019-08-29 01:22:23 +08:00
Jerry
bade41acd7 1. Fix: 更改package.json 2019-08-29 01:18:39 +08:00
Jerry
da8ffda39b 1. Feature: 手機menu界面重新設計
2. Feature: 文章頁增加美化(原 melody主題功能),並增加更改標題前綴圖標和顔色
3. Feature: PC端增加直達評論按鈕
4. Feature: 可以對單獨文章設置是否顯示版權信息
5. Fix: 修復閲讀模式下,調整字體大小對代碼無效的bug
6. Fix: 調整Valine字體顯示問題
7. Fix: 修正夜間模式下Valine的適配問題
8. Fix: 修復Valine設置notify和verify無效的bug (thx @VincentTV )
9. Remove: 去掉主題"閲讀更多"按鈕
2019-08-29 01:09:28 +08:00
LarsCheng
51288ec8b6 Merge pull request #1 from jerryc127/dev
Dev
2019-08-28 19:55:38 +08:00
Jerry
3bf033c9e4 1. Fix: 修復使用hexo-asset-image,開啓懶加載后,圖片會出現無法加載問題 2019-08-16 23:33:56 +08:00
hwy0127@gmail.com
bb8e98c68a 1. 修复 '返回顶部'箭头无法点击的bug 2019-08-12 18:07:44 +08:00
267 changed files with 13978 additions and 6879 deletions

13
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: ['https://buy.stripe.com/3cs6rP6YA91sbbG5kk','https://jsd.012700.xyz/gh/jerryc127/CDN/Photo/wechat.jpg'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

82
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,82 @@
name: Bug report
description: Create a report to help us improve
title: '[Bug]: '
body:
- type: markdown
attributes:
value: |
重要:請依照該模板來提交
Please follow the template to create a new issue
- type: input
id: butterfly-ver
attributes:
label: 使用的 Butterfly 版本? | What version of Butterfly are you use?
description: 檢視主題的 package.json | Check the theme's package.json
validations:
required: true
- type: dropdown
id: modify
attributes:
label: 是否修改过主题文件? || Has the theme files been modified?
options:
- 是 (Yes)
- 不是 (No)
validations:
required: true
- type: dropdown
id: browser
attributes:
label: 使用的瀏覽器? || What browse are you using?
options:
- Chrome
- Edge
- Safari
- Opera
- Other
validations:
required: true
- type: dropdown
id: platform
attributes:
label: 使用的系統? || What operating system are you using?
options:
- Windows
- macOS
- Linux
- Android
- iOS
- Other
validations:
required: true
- type: textarea
id: dependencies
attributes:
label: 依賴插件 | Package dependencies Information
description: 在 Hexo 根目錄下執行`npm ls --depth 0` | Run `npm ls --depth 0` in Hexo root directory
render: Text
validations:
required: true
- type: textarea
id: description
attributes:
label: 問題描述 | Describe the bug
description: 請描述你的問題現象 | A clear and concise description of what the bug is.
placeholder: 請儘量提供截圖來定位問題 | If applicable, add screenshots to help explain your problem
value:
validations:
required: true
- type: input
id: website
attributes:
label: 出現問題網站 | Website
description: 請提供下可復現網站地址 | Please supply a website url which can reproduce problem.
placeholder:
validations:
required: true

18
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
blank_issues_enabled: false
contact_links:
- name: Questions about Butterfly
url: https://github.com/jerryc127/hexo-theme-butterfly/discussions
about: 一些使用問題請到 Discussion 詢問。 Please ask questions in Discussion.
- name: Butterfly Q&A
url: https://butterfly.js.org/posts/98d20436/
about: Butterfly Q&A
- name: Telegram
url: https://t.me/bu2fly
about: 'Official Telegram Group'
- name: QQ 群
url: https://jq.qq.com/?_wv=1027&k=KU9105XR
about: '群號 1070540070'

View File

@@ -0,0 +1,14 @@
name: Feature request
description: Suggest an idea for this project
title: '[Feature]: '
body:
- type: textarea
id: feature-request
attributes:
label: 想要的功能 | What feature do you want?
description: 請描述你需要的新功能 | A clear and concise description of what the feature is.
placeholder:
value:
validations:
require: true

19
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: npm publish
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://registry.npmjs.org'
- run: npm install
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

19
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
with:
days-before-issue-stale: 30
days-before-pr-stale: -1
days-before-close: 7
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
close-pr-message: 'This issue has not seen any activity since it was marked stale. Closing.'
stale-issue-label: 'Stale'
exempt-issue-labels: 'pinned,bug,enhancement,documentation,Plan'
operations-per-run: 1000

204
LICENSE
View File

@@ -1,8 +1,202 @@
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

108
README.md
View File

@@ -1,37 +1,111 @@
<div align="right">
<a title="Chinese" href="/README_CN.md">中文</a>
</div>
# hexo-theme-butterfly
[预览](https://jerryc.me/)
![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/master?color=%231ab1ad&label=master)
![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/dev?label=dev)
![https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff](https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff)
![hexo version](https://img.shields.io/badge/hexo-5.3.0+-0e83c)
![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531)
一款基于[hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody)修改的主题
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png)
## 安装
📢 Demo: [Butterfly](https://butterfly.js.org/) || [CrazyWong](https://blog.crazywong.com/)
在你的博客根目录里
📖 Docs: [English](https://butterfly.js.org/en/posts/butterfly-docs-en-get-started/) || [Chinese](https://butterfly.js.org/posts/21cfbf15/)
Based on [hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody) theme.
## 💻 Installation
### GIT
> If you are in Mainland China, you can download in [Gitee](https://gitee.com/immyw/hexo-theme-butterfly.git)
Stable branch [recommend]:
```
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
```
如果想要安裝比較新的dev分支可以
Dev branch:
```
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
```
## 应用主题
修改hexo配置文件`_config.yml`,把主题改为`Butterfly`
### NPM
```
theme: Butterfly
> It supports Hexo 5.0.0 or later
In Hexo site root directory
```powershell
npm i hexo-theme-butterfly
```
>如果你没有pug以及stylus的渲染器请下载安装 npm install hexo-renderer-jade hexo-renderer-stylus --save or yarn add hexo-renderer-jade hexo-renderer-stylus
## ⚙ Configuration
## 文档
Set theme in the hexo work folder's root config file `_config.yml`:
可查看或[这里](https://docs.jerryc.me/)或[这里](https://jerryc.me/posts/21cfbf15)
> theme: butterfly
If you don't have pug & stylus renderer, try this:
## 截图
![image](https://user-images.githubusercontent.com/16351105/58887365-1272f780-8718-11e9-9329-3292c6ba20d4.png)
![image](https://user-images.githubusercontent.com/16351105/58887457-3cc4b500-8718-11e9-9417-2bdea603c92e.png)
> npm install hexo-renderer-pug hexo-renderer-stylus
## 🎉 Features
- [x] Card UI Design
- [X] Support sub-menu
- [x] Two-column layout
- [x] Responsive Web Design
- [x] Dark Mode
- [x] Pjax
- [x] Read Mode
- [x] Conversion between Traditional and Simplified Chinese
- [X] TOC catalog is available for both computers and mobile phones
- [X] Built-in Syntax Highlighting Themes (darker/pale night/light/ocean/mac/mac light), also support customization
- [X] Code Blocks (Display code language/close or expand Code Blocks/Copy Button/word wrap)
- [X] Disable copy/Add a Copyright Notice to the Copied Text
- [X] Search (Algolia Search/Local Search)
- [x] Mathjax and Katex
- [x] Built-in 404 page
- [x] WordCount
- [x] Related articles
- [x] Displays outdated notice for a post
- [x] Share (Sharejs/Addtoany)
- [X] Comment (Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/artalk)
- [x] Multiple Comment System Support
- [x] Online Chats (Chatra/Tidio/Daovoice/Crisp/messenger)
- [x] Web analytics
- [x] Google AdSense
- [x] Webmaster Verification
- [x] Change website colour scheme
- [x] Typewriter Effect: activate_power_mode
- [x] Background effects (Canvas ribbon/canvas_ribbon_piao/canvas_nest)
- [x] Mouse click effects (Fireworks/Heart/Text)
- [x] Preloader/Loading Animation/pace.js
- [x] Busuanzi visitor counter
- [x] Medium Zoom/Fancybox
- [x] Mermaid
- [x] Justified Gallery
- [x] Lazyload images
- [x] Instantpage/Pangu/Snackbar notification toast/PWA......
## ✨ Contributors
<a href="https://github.com/jerryc127/hexo-theme-butterfly/graphs/contributors">
<img src="https://contrib.rocks/image?repo=jerryc127/hexo-theme-butterfly" />
</a>
## 📷 Screenshots
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png)

111
README_CN.md Normal file
View File

@@ -0,0 +1,111 @@
<div align="right">
<a title="English" href="/README.md">English</a>
</div>
# hexo-theme-butterfly
![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/master?color=%231ab1ad&label=master)
![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/dev?label=dev)
![https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff](https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff)
![hexo version](https://img.shields.io/badge/hexo-5.3.0+-0e83c)
![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png)
📢 預覽: [Butterfly](https://butterfly.js.org/) || [CrazyWong](https://blog.crazywong.com/)
📖 文檔: [中文](https://butterfly.js.org/posts/21cfbf15/) || [English](https://butterfly.js.org/en/posts/butterfly-docs-en-get-started/)
一款基於[hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody)修改的主題
## 💻 安裝
### Git 安裝
> 本倉庫同時上傳到 [Gitee](https://gitee.com/immyw/hexo-theme-butterfly.git),如果你訪問 Github 緩慢,可從 Gitee 中下載。
在博客根目錄裡安裝穩定版【推薦】
```powershell
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
```
如果想要安裝比較新的dev分支可以
```powershell
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
```
### npm 安裝
> 此方法只支持Hexo 5.0.0以上版本
在博客根目錄裡
```powershell
npm i hexo-theme-butterfly
```
## ⚙ 應用主題
修改hexo配置文件`_config.yml`,把主題改為`Butterfly`
```
theme: butterfly
```
>如果你沒有pug以及stylus的渲染器請下載安裝 npm install hexo-renderer-pug hexo-renderer-stylus --save
## 🎉 特色
- [x] 卡片化設計
- [X] 支持二級目錄
- [x] 雙欄設計
- [x] 響應式主題
- [x] 夜間模式
- [x] Pjax
- [x] 文章閲讀模式
- [x] 簡體和繁體轉換
- [X] 電腦和手機都可查看TOC目錄
- [X] 內置多種代碼配色darker/pale night/light/ocean/mac/mac light可自定義代碼配色
- [X] 代碼塊顯示代碼語言/關閉或展開代碼塊/代碼複製/代碼自動換行
- [X] 可關閉文字複製/可開啟內容複製增加版權信息)
- [X] 兩種搜索( Algolia 搜索和本地搜索)
- [x] Mathjax 和 Katex
- [x] 內置404頁面
- [x] 顯示字數統計
- [x] 顯示相關文章
- [x] 過期文章提醒
- [x] 多種分享系統Sharejs/Addtoany
- [X] 多種評論系統Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/artalk
- [x] 支持雙評論部署
- [x] 多種在線聊天Chatra/Tidio/Daovoice/Crisp/messenger
- [x] 多種分析系統
- [x] 谷歌廣告/手動廣告位置
- [x] 各種站長驗證
- [x] 修改網站配色
- [x] 打字特效 activate_power_mode
- [x] 多種背景特效(靜止彩帶/動態彩帶/Canvas Nest
- [x] 多種鼠標點擊特效(煙花/文字/愛心)
- [x] 內置一種 Preloader 加載動畫和 pace.js 加載動畫條
- [x] 不蒜子訪問統計
- [x] 兩種大圖模式Medium Zoom/Fancybox
- [x] Mermaid 圖表顯示
- [x] 照片牆
- [x] 圖片懶加載
- [x] Instantpage/Pangu/Snackbar彈窗/PWA......
## ✨ 貢獻者
<a href="https://github.com/jerryc127/hexo-theme-butterfly/graphs/contributors">
<img src="https://contrib.rocks/image?repo=jerryc127/hexo-theme-butterfly" />
</a>
## 📷 截圖
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png)
![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png)

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,11 @@
sidebar:
catalog: Catalog
have_read: You've read
footer:
driven: Driven
framework: Framework
theme: Theme
copy:
success: Copy successfully
error: Copy error
noSupport: The browser does not support
success: Copy Successful
error: Copy Error
noSupport: Browser Not Supported
page:
articles: Articles
@@ -17,38 +13,42 @@ page:
category: Category
archives: Archives
sticky: Sticky
no_title: No title
archives: Archives
read_more: Read more
card_post_count: comments
no_title: Untitled
post:
created: Created
updated: Updated
wordcount: Word count
min2read: "Reading time: %s min"
page_pv: Post View
wordcount: Word Count
min2read: Reading Time
min2read_unit: mins
page_pv: Post Views
comments: Comments
copyright:
author: Author
link: Link
copyright_notice: Copyright Notice
copyright_content: 'All articles in this blog are licensed under <a href="%s">%s</a> unless stating additionally.'
recommend: Related Articles
edit: Edited on
search: Search
algolia_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}."
hits_stats: "${hits} results found in ${time} ms"
search:
title: Search
load_data: Loading the Database
algolia_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}."
hits_stats: '${hits} results found in ${time} ms'
local_search:
label: Local search
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}"
powered_by: Powered by
local_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}"
hits_stats: '${hits} results found'
pagination:
prev: Previous Post
next: Next Post
prev: Previous
next: Next
comment: Comment
@@ -61,27 +61,63 @@ aside:
card_tags: Tags
card_archives: Archives
card_recent_post: Recent Post
card_bookmark: Add to bookmark
card_webinfo:
headline: Info
article_name: Article
runtime_name: Run time
runtime:
name: Runtime
unit: days
last_push_date:
name: Last Update
site_wordcount: Total Count
site_uv_name: UV
site_pv_name: PV
more_button: View More
card_newest_comments:
headline: Latest Comments
loading_text: loading...
error: Unable to retrieve comments, please check the configuration
zero: No comments
image: image
link: link
code: code
card_toc: Contents
card_post_series: Series
donate: Donate
date_suffix:
just: Just now
min: minutes ago
hour: hours ago
day: days ago
month: months ago
donate: Sponsor
share: Share
bookmark:
title: Bookmark
message_prev: Press
message_next: to bookmark this page
rightside:
readmode_title: Read Mode
font_plus_title: Increase font size
font_minus_title: Decrease font size
translate_title: Traditional Chinese and Simplified Chinese Conversion
night_mode_title: Dark Mode
translate_title: Toggle Between Traditional Chinese And Simplified Chinese
night_mode_title: Toggle Between Light And Dark Mode
back_to_top: Back To Top
toc: Table Of Contents
scroll_to_comment: Scroll To Comments
setting: Setting
aside: Toggle between Single-column and Double-column
chat: Chat
runtime_unit: days
copy_copyright:
author: Author
link: Link
source: Source
info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
Snackbar:
chs_to_cht: You have switched to Traditional Chinese
cht_to_chs: You have switched to Simplified Chinese
day_to_night: You have switched to Dark Mode
night_to_day: You have switched to Light Mode
loading: Loading...
load_more: Load More
error404: Page Not Found

View File

@@ -1,15 +1,11 @@
sidebar:
catalog: Catalog
have_read: You've read
footer:
driven: Driven
framework: Framework
theme: Theme
copy:
success: Copy successfully
error: Copy error
noSupport: The browser does not support
success: Copy Successful
error: Copy Error
noSupport: Browser Not Supported
page:
articles: Articles
@@ -17,38 +13,42 @@ page:
category: Category
archives: Archives
sticky: Sticky
no_title: No title
archives: Archives
read_more: Read more
card_post_count: comments
no_title: Untitled
post:
created: Created
updated: Updated
wordcount: Word count
min2read: "Reading time: %s min"
page_pv: Post View
wordcount: Word Count
min2read: Reading Time
min2read_unit: mins
page_pv: Post Views
comments: Comments
copyright:
author: Author
link: Link
copyright_notice: Copyright Notice
copyright_content: 'All articles in this blog are licensed under <a href="%s">%s</a> unless stating additionally.'
recommend: Related Articles
edit: Edited on
search: Search
algolia_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}."
hits_stats: "${hits} results found in ${time} ms"
search:
title: Search
load_data: Loading the Database
algolia_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}."
hits_stats: '${hits} results found in ${time} ms'
local_search:
label: Local search
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}"
powered_by: Powered by
local_search:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}"
hits_stats: '${hits} results found'
pagination:
prev: Previous Post
next: Next Post
prev: Previous
next: Next
comment: Comment
@@ -61,26 +61,63 @@ aside:
card_tags: Tags
card_archives: Archives
card_recent_post: Recent Post
card_bookmark: Add to bookmark
card_webinfo:
headline: Info
article_name: Article
runtime_name: Run time
runtime:
name: Runtime
unit: days
last_push_date:
name: Last Update
site_wordcount: Total Count
site_uv_name: UV
site_pv_name: PV
more_button: View More
card_newest_comments:
headline: Latest Comments
loading_text: loading...
error: Unable to retrieve comments, please check the configuration
zero: No comments
image: image
link: link
code: code
card_toc: Contents
card_post_series: Series
donate: Donate
date_suffix:
just: Just now
min: minutes ago
hour: hours ago
day: days ago
month: months ago
donate: Sponsor
share: Share
bookmark:
title: Bookmark
message_prev: Press
message_next: to bookmark this page
rightside:
readmode_title: Read Mode
font_plus_title: Increase font size
font_minus_title: Decrease font size
translate_title: Traditional Chinese and Simplified Chinese Conversion
night_mode_title: Dark Mode
translate_title: Toggle Between Traditional Chinese And Simplified Chinese
night_mode_title: Toggle Between Light And Dark Mode
back_to_top: Back To Top
toc: Table Of Contents
scroll_to_comment: Scroll To Comments
setting: Setting
aside: Toggle between Single-column and Double-column
chat: Chat
runtime_unit: days
copy_copyright:
author: Author
link: Link
source: Source
info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
Snackbar:
chs_to_cht: You have switched to Traditional Chinese
cht_to_chs: You have switched to Simplified Chinese
day_to_night: You have switched to Dark Mode
night_to_day: You have switched to Light Mode
loading: Loading...
load_more: Load More
error404: Page Not Found

View File

@@ -1,9 +1,5 @@
sidebar:
catalog: 目录
have_read: 你已经读了
footer:
driven: 驱动
framework: 框架
theme: 主题
copy:
@@ -17,35 +13,39 @@ page:
category: 分类
archives: 归档
sticky: 置顶
card_post_count: 条评论
no_title: 无题
archives: 时间轴
read_more: 阅读更多
post:
created: 发表于
updated: 更新于
wordcount: 字数总计
min2read: "阅读时长: %s 分钟"
min2read: 阅读时长
min2read_unit: 分钟
page_pv: 阅读量
comments: 评论数
copyright:
author: 文章作者
link: 文章链接
copyright_notice: 版权声明
copyright_content: '本博客所有文章除特别声明外,均采用 <a href="%s">%s</a> 许可协议。转载请注明来自 <a href="%s">%s</a>'
copyright_content: '本博客所有文章除特别声明外,均采用
<a href="%s" target="_blank">%s</a> 许可协议。转载请注明来自 <a href="%s" target="_blank">%s</a>'
recommend: 相关推荐
edit: 编辑
search: 搜索
algolia_search:
input_placeholder: 搜索文章
hits_empty: "找不到您查询的内容:${query}"
hits_stats: "找到 ${hits} 条结果,用时 ${time} 毫秒"
search:
title: 搜索
load_data: 数据库加载中
algolia_search:
input_placeholder: 搜索文章
hits_empty: '找不到您查询的内容:${query}'
hits_stats: '找到 ${hits} 条结果,用时 ${time} 毫秒'
local_search:
label: 本地搜索
input_placeholder: 搜索文章
hits_empty: "找不到您查询的内容:${query}"
powered: "提供支持"
by:
local_search:
input_placeholder: 搜索文章
hits_empty: '找不到您查询的内容:${query}'
hits_stats: '共找到 ${hits} 篇文章'
pagination:
prev: 上一篇
@@ -62,26 +62,63 @@ aside:
card_tags: 标签
card_archives: 归档
card_recent_post: 最新文章
card_bookmark: 加入书签
card_webinfo:
headline: 网站资讯
article_name: 文章数目
runtime_name: 已运行时间
runtime:
name: 已运行时间
unit:
last_push_date:
name: 最后更新时间
site_wordcount: 本站总字数
site_uv_name: 本站访客数
site_pv_name: 本站总访问量
more_button: 查看更多
card_newest_comments:
headline: 最新评论
loading_text: 正在加载中...
error: 无法获取评论,请确认相关配置是否正确
zero: 没有评论
image: 图片
link: 链接
code: 代码
card_toc: 目录
card_post_series: 系列文章
donate: 打赏
date_suffix:
just: 刚刚
min: 分钟前
hour: 小时前
day: 天前
month: 个月前
donate: 赞助
share: 分享
bookmark:
title: 添加书签
message_prev:
message_next: 键将本页加入书签
rightside:
readmode_title: 阅读模式
font_plus_title: 放大字体
font_minus_title: 缩小字体
translate_title: 简繁转换
night_mode_title: 夜间模式
night_mode_title: 浅色和深色模式转换
back_to_top: 回到顶部
toc: 目录
scroll_to_comment: 直达评论
setting: 设置
aside: 单栏和双栏切换
chat: 聊天
runtime_unit:
copy_copyright:
author: 作者
link: 链接
source: 来源
info: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Snackbar:
chs_to_cht: 你已切换为繁体中文
cht_to_chs: 你已切换为简体中文
day_to_night: 你已切换为深色模式
night_to_day: 你已切换为浅色模式
loading: 加载中...
load_more: 加载更多
error404: 页面没有找到

View File

@@ -1,15 +1,11 @@
sidebar:
catalog: 目錄
have_read: 你已經讀了
footer:
driven: Power by
theme: Theme
framework: 框架
theme: 主題
copy:
success: 複製成功
error: 複製錯誤
noSupport: 瀏覽器不支
noSupport: 瀏覽器不支
page:
articles: 文章總覽
@@ -17,37 +13,40 @@ page:
category: 分類
archives: 歸檔
sticky: 置頂
no_title: 無題
archives: 時間軸
read_more: 閲讀更多
card_post_count: 條評論
no_title: 無標題
post:
created: 發表於
updated: 更新於
wordcount: 字數總計
min2read: "閲讀時長: %s 分鐘"
page_pv: 閲讀量
min2read: 閱讀時長
min2read_unit: 分鐘
page_pv: 閱讀量
comments: 評論數
copyright:
author: 文章作者
link: 文章鏈接
link: 文章連結
copyright_notice: 版權聲明
copyright_content: '本博客所有文章除特別聲明外,均採用
copyright_content: '本部落格所有文章除特別聲明外,均採用
<a href="%s" target="_blank">%s</a> 許可協議。轉載請註明來自 <a href="%s" target="_blank">%s</a>'
recommend: 相關推薦
edit: 編輯
search: 搜索
algolia_search:
input_placeholder: 搜索文章
hits_empty: "找不到您查詢的內容:${query}"
hits_stats: "找到 ${hits} 條結果,用時 ${time} 毫秒"
local_search:
label: 本地搜索
input_placeholder: 搜索文章
hits_empty: "找不到您查詢的內容:${query}"
powered: "提供支持"
by:
search:
title: 搜尋
load_data: 資料庫載入中
algolia_search:
input_placeholder: 搜尋文章
hits_empty: '找不到您查詢的內容:${query}'
hits_stats: '找到 ${hits} 條結果,用時 ${time} 毫秒'
local_search:
input_placeholder: 搜尋文章
hits_empty: '找不到您查詢的內容:${query}'
hits_stats: '共找到 ${hits} 篇文章'
pagination:
prev: 上一篇
next: 下一篇
@@ -63,26 +62,63 @@ aside:
card_tags: 標籤
card_archives: 歸檔
card_recent_post: 最新文章
card_bookmark: 加入書籤
card_webinfo:
headline: 網站資訊
article_name: 文章數目
runtime_name: 已運行時間
runtime:
name: 已執行時間
unit:
last_push_date:
name: 最後更新時間
site_wordcount: 本站總字數
site_uv_name: 本站訪客數
site_pv_name: 本站總訪問量
more_button: 檢視更多
card_newest_comments:
headline: 最新評論
loading_text: 正在載入中...
error: 無法獲取評論,請確認相關配置是否正確
zero: 沒有評論
image: 圖片
link: 連結
code: 程式碼
card_toc: 目錄
card_post_series: 文章系列
donate: 打賞
date_suffix:
just: 剛剛
min: 分鐘前
hour: 小時前
day: 天前
month: 個月前
donate: 贊助
share: 分享
bookmark:
title: 添加書籤
message_prev:
message_next: 鍵將本頁加入書籤
rightside:
readmode_title: 讀模式
font_plus_title: 放大字體
font_minus_title: 縮小字體
readmode_title: 讀模式
translate_title: 簡繁轉換
night_mode_title: 夜間模式
night_mode_title: 淺色和深色模式轉換
back_to_top: 返回頂部
toc: 目錄
scroll_to_comment: 直達評論
setting: 設定
aside: 單欄和雙欄切換
chat: 聊天
runtime_unit:
copy_copyright:
author: 作者
link: 連結
source: 來源
info: 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
Snackbar:
chs_to_cht: 你已切換為繁體中文
cht_to_chs: 你已切換為簡體中文
day_to_night: 你已切換為深色模式
night_to_day: 你已切換為淺色模式
loading: 載入中...
load_more: 載入更多
error404: 頁面沒有找到

View File

@@ -1,11 +1,8 @@
extends includes/layout.pug
block content
include ./includes/mixins/article-sort.pug
#archive
.article-sort-title= _p('page.articles') + ' - ' + site.posts.length
.article-sort-title= `${_p('page.articles')} - ${getArchiveLength()}`
+articleSort(page.posts)
include includes/pagination.pug
#aside_content.aside_content
include includes/aside.pug
include includes/pagination.pug

View File

@@ -1,11 +1,14 @@
extends includes/layout.pug
block content
include ./includes/mixins/article-sort.pug
#category
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug
#aside_content.aside_content
include includes/aside.pug
if theme.category_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts.category_ui
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#category
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug

View File

@@ -1,31 +0,0 @@
.flink
each i in site.data.link
p.comment-word= i.class_name
.post-cards
ul.md-links
each item in i.link_list
li.md-links-item
a(href=item.link title=item.name target="_blank")
if theme.lazyload.enable
img.lozad(data-src=item.avatar onerror=`onerror=null;src='${theme.lodding_bg.flink}'` height="72px")
else
img(src=item.avatar onerror=`onerror=null;src='${theme.lodding_bg.flink}'` height="72px")
div(class="md-links-title")= item.name
<br/>
div(class="md-links-des")=item.descr
hr
div
p(style="font-size:15px;font-weight:bold")= theme.Flink.info_headline
ul
li= theme.Flink.name
li= theme.Flink.address
li= theme.Flink.avatar
li= theme.Flink.info
hr
.comment_int
p.comment-word= theme.Flink.comment

View File

@@ -1,4 +0,0 @@
extends includes/layout.pug
block content
include includes/gallery/layout.pug

12
layout/includes/404.pug Normal file
View File

@@ -0,0 +1,12 @@
- var top_img_404 = theme.error_404.background || theme.default_top_img
#body-wrap.error404
include ./header/index.pug
#error-wrap
.error-content
.error-img
img(src=url_for(top_img_404) alt='Page not found')
.error-info
h1.error_title= '404'
.error_subtitle= theme.error_404.subtitle || _p('error404')

View File

@@ -1,98 +1,65 @@
if (theme.algolia_search.enable)
script(async src=url_for('/js/search/algolia.js'))
if (theme.mathjax && theme.mathjax.enable)
if(!is_tag() && !is_category() && !is_archive())
include ./third-party/mathjax.pug
if (theme.katex && theme.katex.enable)
if(!is_tag() && !is_category() && !is_archive())
include ./third-party/katex.pug
if (theme.local_search && theme.local_search.enable)
script(async src=url_for('/js/search/local-search.js'))
div
script(src=url_for(theme.asset.utils))
script(src=url_for(theme.asset.main))
if theme.fireworks && theme.fireworks.enable
script(src='https://cdn.jsdelivr.net/npm/animejs@latest/anime.min.js')
script(src=url_for('/js/third-party/fireworks.js'))
if theme.translate.enable
script(src=url_for(theme.asset.translate))
if theme.nightshift.enable
script(src=url_for('js/nightshift.js'))
if theme.medium_zoom
script(src=url_for(theme.asset.medium_zoom))
else if theme.fancybox
script(src=url_for(theme.asset.fancybox))
if (theme.canvas_ribbon && theme.canvas_ribbon.enable)
include ./third-party/canvas-ribbon.pug
if theme.instantpage
script(src=url_for(theme.asset.instantpage), type='module')
if (theme.canvas_ribbon_piao && theme.canvas_ribbon_piao.enable)
include ./third-party/canvas-ribbon-piao.pug
if theme.lazyload.enable
script(src=url_for(theme.asset.lazyload))
if theme.baidu_push && theme.baidu_push.enable
script(src=url_for('js/baidupush.js'))
if theme.snackbar.enable
script(src=url_for(theme.asset.snackbar))
if theme.activate_power_mode.enable
script(src=url_for('js/activate-power-mode.js'))
script.
POWERMODE.colorful = true; // make power mode colorful
POWERMODE.shake = true; // turn off shake
document.body.addEventListener('input', POWERMODE);
if theme.pangu.enable
!= partial("includes/third-party/pangu.pug", {}, { cache: true })
if theme.translate && theme.translate.enable
script(src=url_for('/js/tw_cn.js'))
script.
translateInitilization()
.js-pjax
if needLoadCountJs
!= partial("includes/third-party/card-post-count/index", {}, { cache: true })
if loadSubJs
include ./third-party/subtitle.pug
if is_home() && theme.subtitle.enable
script(src="https://cdn.jsdelivr.net/npm/typed.js@2.0.9")
script.
var typed = new Typed(".subtitle", {
strings: ['!{theme.subtitle.sub1}','!{theme.subtitle.sub2}'],
startDelay: 300,
typeSpeed: 100,
loop: true,
backSpeed: 50
});
include ./third-party/math/index.pug
if is_home()
script.
//首頁fullpage
function alignContent() {
for (var n = $(window).height(), e = document.querySelectorAll(".full_page"), i = 0; i < e.length; i++)
e[i].style.height = n + "px";
$("#site-info").each(function () {
var x = $(this).height();
$(this).css("top", (n-x)/2)
})
}
include ./third-party/abcjs/index.pug
function recent_post_padding() {
$(".recent-post-info").each(function () {
var k = $(".recent-post-item").height();
var e = $(this).height();
$(this).css({"padding-top": (k-e)/2 , "padding-bottom": (k-e)/2 })
})
}
if commentsJsLoad
include ./third-party/comments/js.pug
alignContent();
!= partial("includes/third-party/prismjs", {}, { cache: true })
//recent-post-item垂直置中
if ($(window).width() > 768) {
recent_post_padding();
}
$(window).bind("resize", function () {
if theme.aside.enable && theme.newest_comments.enable
if theme.pjax.enable
!= partial("includes/third-party/newest-comments/index", {}, { cache: true })
else if (!is_post() && page.aside !== false)
!= partial("includes/third-party/newest-comments/index", {}, { cache: true })
alignContent()
!= fragment_cache('injectBottom', function(){return injectHtml(theme.inject.bottom)})
if ($(window).width() > 768) {
recent_post_padding();
}
})
!= partial("includes/third-party/effect", {}, { cache: true })
if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv
script(async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js")
!= partial("includes/third-party/chat/index", {}, { cache: true })
if theme.instantpage.enable
script(src="https://cdn.jsdelivr.net/npm/instant.page@1.2.2/instantpage.min.js" type="module")
if theme.aplayerInject && theme.aplayerInject.enable
if theme.pjax.enable || theme.aplayerInject.per_page
include ./third-party/aplayer.pug
else if page.aplayer
include ./third-party/aplayer.pug
if theme.lazyload.enable
script(src=url_for(theme.lazyload.script))
script.
const observer = lozad(); // lazy loads elements with default selector as '.lozad'
observer.observe();
if theme.pjax.enable
!= partial("includes/third-party/pjax", {}, { cache: true })
if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv
script(async data-pjax src= theme.asset.busuanzi || '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js')
!=partial('includes/third-party/search/index', {}, {cache: true})

View File

@@ -1,21 +0,0 @@
if theme.aside.card_author
include widget/card_author.pug
if theme.aside.card_announcement
include widget/card_announcement.pug
if theme.aside.card_recent_post
include widget/card_recent_post.pug
if theme.aside.card_categories
include widget/card_categories.pug
if theme.aside.card_tags
include widget/card_tags.pug
if theme.aside.card_archives
include widget/card_archives.pug
if theme.aside.card_webinfo
include widget/card_webinfo.pug

View File

@@ -1,13 +0,0 @@
if theme.disqus && theme.disqus.enable
#disqus_thread
script.
var unused = null;
var disqus_config = function () {
this.page.url = '!{ page.permalink }';
this.page.identifier = '!{ page.path }';
this.page.title = '!{ page.title }';
}
var d = document, s = d.createElement('script');
s.src = "https://" + '!{theme.disqus.shortname}' +".disqus.com/embed.js";
s.setAttribute('data-timestamp', '' + +new Date());
(d.head || d.body).appendChild(s);

View File

@@ -1,13 +0,0 @@
if theme.gitalk && theme.gitalk.enable
#gitalk-container
script.
var gitalk = new Gitalk({
clientID: '!{theme.gitalk.client_id}',
clientSecret: '!{theme.gitalk.client_secret}',
repo: '!{theme.gitalk.repo}',
owner: '!{theme.gitalk.owner}',
admin: '!{theme.gitalk.admin}',
id: md5(decodeURI(location.pathname)),
language: '!{lang}'
})
gitalk.render('gitalk-container')

View File

@@ -1,13 +0,0 @@
if theme.gitment && theme.gitment.enable
#gitment-container
script.
var gitment = new Gitment({
id: md5(decodeURI(location.pathname)),
owner: '!{theme.gitment.owner}',
repo: '!{theme.gitment.repo}',
oauth: {
client_id: '!{theme.gitment.client_id}',
client_secret: '!{theme.gitment.client_secret}'
}
})
gitment.render('gitment-container')

View File

@@ -1,35 +0,0 @@
if theme.disqus && theme.disqus.enable
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
span= ' ' + _p('comment')
include ./disqus.pug
else if theme.laibili && theme.laibili.enable
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
span= ' ' + _p('comment')
include ./laibili.pug
else if theme.gitment && theme.gitment.enable
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
span= ' ' + _p('comment')
include ./gitment.pug
else if theme.gitalk && theme.gitalk.enable
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
span= ' ' + _p('comment')
include ./gitalk.pug
else if theme.valine && theme.valine.enable
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
span= ' ' + _p('comment')
include ./valine.pug

View File

@@ -1,11 +0,0 @@
if theme.laibili && theme.laibili.enable
#lv-container(data-id="city" data-uid=theme.laibili.uid)
script.
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; }
j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;
e.parentNode.insertBefore(j, e);
})(document, 'script');

View File

@@ -1,25 +0,0 @@
if theme.valine && theme.valine.enable
#vcomment.vcomment
script(src='https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js')
script.
var notify = '#{ theme.valine.notify }' == true ? true : false;
var verify = '#{ theme.valine.verify }' == true ? true : false;
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '#{ theme.valine.guest_info }'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
guest_info = guest_info.length == 0 ? GUEST_INFO :guest_info;
window.valine = new Valine({
el:'#vcomment',
notify:notify,
verify:verify,
appId:'#{theme.valine.appId}',
appKey:'#{theme.valine.appKey}',
placeholder:'#{theme.valine.placeholder}',
avatar:'#{theme.valine.avatar}',
guest_info:guest_info,
pageSize:'#{theme.valine.pageSize}',
lang:'#{theme.valine.lang}',
recordIP: true
});

View File

@@ -1,66 +0,0 @@
-
var algolia = 'undefined';
var env = process.env;
if (theme.algolia_search.enable) {
algolia = JSON.stringify({
appId: env.ALGOLIA_APP_ID || config.algolia.appId || config.algolia.applicationID,
apiKey: env.ALGOLIA_API_KEY || config.algolia.apiKey,
indexName: env.ALGOLIA_INDEX_NAME || config.algolia.indexName,
hits: theme.algolia_search.hits,
// search languages
languages: {
input_placeholder: _p("algolia_search.input_placeholder"),
hits_empty: _p("algolia_search.hits_empty"),
hits_stats: _p("algolia_search.hits_stats")
}
})
}
var localSearch = 'undefined';
if (theme.local_search && theme.local_search.enable) {
localSearch = JSON.stringify({
path: config.search.path,
languages: {
// search languages
hits_empty: _p("local_search.hits_empty")
}
})
}
var translate = 'undefined';
if (theme.translate && theme.translate.enable){
var defaultEncoding;
translate = JSON.stringify({
defaultEncoding: theme.translate.defaultEncoding,
translateDelay: theme.translate.translateDelay,
cookieDomain: theme.translate.cookieDomain,
msgToTraditionalChinese: theme.translate.msgToTraditionalChinese,
msgToSimplifiedChinese: theme.translate.msgToSimplifiedChinese
})
}
script.
var GLOBAL_CONFIG = {
root: '!{config.root}',
algolia: !{algolia},
localSearch: !{localSearch},
translate: !{translate},
highlight_copy: '!{theme.highlight_copy}',
copy: {
success: '!{_p("copy.success")}',
error: '!{_p("copy.error")}',
noSupport: '!{_p("copy.noSupport")}'
},
bookmark: {
title: '!{_p("bookmark.title")}',
message_prev: '!{_p("bookmark.message_prev")}',
message_next: '!{_p("bookmark.message_next")}'
},
runtime_unit: '!{_p("runtime_unit")}'
}

View File

@@ -1,22 +1,17 @@
#footer.layout
- var now = new Date()
- var nowYear = now.getFullYear()
if theme.since && theme.since != nowYear
.copyright!= `&copy;${theme.since} - ${nowYear} By ${config.author}`
else
.copyright!= `&copy;${nowYear} By ${config.author}`
if theme.footer_copyright.enable
#footer-wrap
if theme.footer.owner.enable
- var now = new Date()
- var nowYear = now.getFullYear()
if theme.footer.owner.since && theme.footer.owner.since != nowYear
.copyright!= `&copy;${theme.footer.owner.since} - ${nowYear} By ${config.author}`
else
.copyright!= `&copy;${nowYear} By ${config.author}`
if theme.footer.copyright
.framework-info
span= _p('footer.driven') + ' '
a(href='http://hexo.io')
span Hexo
span= _p('footer.framework') + ' '
a(href='https://hexo.io')= 'Hexo'
span.footer-separator |
span= _p('footer.theme') + ' '
a(href='https://github.com/jerryc127/hexo-theme-butterfly')
span Butterfly
if theme.footer_custom_text
.footer_custom_text!=`${theme.footer_custom_text}`
if theme.ICP.enable
.icp
a(href=theme.ICP.url)
span=theme.ICP.text
a(href='https://github.com/jerryc127/hexo-theme-butterfly')= 'Butterfly'
if theme.footer.custom_text
.footer_custom_text!=`${theme.footer.custom_text}`

View File

@@ -1 +0,0 @@
#gallery!= page.content

View File

@@ -1,118 +1,68 @@
- var without_index = url.replace('index.html', '')
- var without_html = without_index.replace('.html', '')
- var photo_check = page.cover || theme.avatar
- var photo_link = url_check (photo_check) ? photo_check : config.url + photo_check
- var pageTitle
- is_archive() ? page.title = findArchivesTitle(page, theme.menu, date) : ''
- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
- else if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
- else if (is_current('/404.html', [strict])) pageTitle = _p('error404')
- else pageTitle = page.title || config.title || ''
meta(http-equiv="x-dns-prefetch-control" content="on")
if theme.canonical
link(rel="canonical" href=without_html)
- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : ''
- var tabTitle = is_home() || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
- var pageCopyright = config.copyright || config.author
- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff'
- var themeColorDark = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_dark || '#0d0d0d'
- var themeColor = theme.display_mode === 'dark' ? themeColorDark : themeColorLight
if theme.twitter_meta
meta(name="twitter:card" content="summary_large_image")
meta(name="twitter:title" content=pageTitle_no_include_blog_name)
meta(name="twitter:description" content=pageDescription)
meta(name="twitter:image" content=photo_link)
meta(charset='UTF-8')
meta(http-equiv="X-UA-Compatible" content="IE=edge")
meta(name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover")
title= tabTitle
meta(name="author" content=pageAuthor)
meta(name="copyright" content=pageCopyright)
meta(name ="format-detection" content="telephone=no")
meta(name="theme-color" content=themeColor)
if theme.Open_Graph_meta
if is_post()
meta(property="og:type" content="article")
else
meta(property="og:type" content="website")
//- Open_Graph
include ./head/Open_Graph.pug
meta(property="og:title" content=pageTitle_no_include_blog_name)
meta(property="og:url" content=without_html)
meta(property="og:site_name" content=config.title)
meta(property="og:description" content=pageDescription)
meta(property="og:image" content=photo_link)
if theme.disable_baidu_transformation
meta(http-equiv="Cache-Control" content="no-transform")
meta(http-equiv="Cache-Control" content="no-siteapp")
if is_post()
if(page.prev)
link(rel="prev" title=page.prev.title href=url_for(page.prev.permalink) )
if(page.next)
link(rel="next" title=page.next.title href=url_for(page.next.permalink) )
if theme.algolia_search.enable
link(rel="dns-prefetch" href="https://cdn.jsdelivr.net")
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.css")
script(src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.js" defer)
if (theme.gitment && theme.gitment.enable)
link(rel="dns-prefetch" href="https://unpkg.com")
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/gitment/style/default.min.css")
script(src="https://cdn.jsdelivr.net/npm/gitment/dist/gitment.browser.min.js")
script(src="https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js")
if (theme.gitalk && theme.gitalk.enable)
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.css")
if(theme.gitalk.js)
script(src=theme.gitalk.js)
else
script(src="https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js")
script(src="https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js")
!=favicon_tag(theme.favicon || config.favicon)
link(rel="canonical" href=urlNoIndex(null,config.pretty_urls.trailing_index,config.pretty_urls.trailing_html))
//- 預解析
!=partial('includes/head/preconnect', {}, {cache: true})
//- 網站驗證
!=partial('includes/head/site_verification', {}, {cache: true})
//- PWA
if (theme.pwa && theme.pwa.enable)
link(rel="manifest" href=theme.pwa.manifest)
if(theme.pwa.theme_color)
meta(name="theme-color" content=theme.pwa.theme_color)
if(theme.pwa.theme_color)
meta(name="msapplication-TileColor" content=theme.pwa.theme_color)
if(theme.pwa.apple_touch_icon)
link(rel="apple-touch-icon" sizes="180x180" href=theme.pwa.apple_touch_icon)
if(theme.pwa.favicon_32_32)
link(rel="icon" type="image/png" sizes="32x32" href=theme.pwa.favicon_32_32)
if(theme.pwa.favicon_16_16)
link(rel="icon" type="image/png" sizes="16x16" href=theme.pwa.favicon_16_16)
if(theme.pwa.mask_icon)
link(rel="mask-icon" href=theme.pwa.mask_icon color="#5bbad5")
!=partial('includes/head/pwa', {}, {cache: true})
//- main css
link(rel='stylesheet', href=url_for(theme.asset.main_css))
link(rel='stylesheet', href=url_for(theme.asset.fontawesome))
if theme.baidu_analytics
link(rel="dns-prefetch" href="https://hm.baidu.com")
script.
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?!{theme.baidu_analytics}";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
if theme.google_analytics
link(rel="dns-prefetch" href="https://www.google-analytics.com")
script.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
if (theme.snackbar && theme.snackbar.enable)
link(rel='stylesheet', href=url_for(theme.asset.snackbar_css) media="print" onload="this.media='all'")
ga('create', '!{theme.google_analytics}', 'auto');
ga('send', 'pageview');
if theme.fancybox
link(rel='stylesheet' href=url_for(theme.asset.fancybox_css) media="print" onload="this.media='all'")
if theme.google_site_verification
meta(name="google-site-verification" content=theme.google_site_verification)
//- google_adsense
!=partial('includes/head/google_adsense', {}, {cache: true})
if theme.bing_site_verification
meta(name="msvalidate.01" content=theme.bing_site_verification)
//- analytics
!=partial('includes/head/analytics', {}, {cache: true})
if theme.baidu_site_verification
meta(name="baidu-site-verification" content=theme.baidu_site_verification)
//- font
if theme.blog_title_font && theme.blog_title_font.font_link
link(rel='stylesheet' href=url_for(theme.blog_title_font.font_link) media="print" onload="this.media='all'")
if theme.qihu_site_verification
meta(name="360-site-verification" content=theme.qihu_site_verification)
//- global config
!=partial('includes/head/config', {}, {cache: true})
include ./head/config_site.pug
- var preload_archive_img = theme.archive_img ||theme.top_img || config.top_img
- var preload_img = page.top_img || theme.top_img || config.top_img
!=fragment_cache('injectHeadJs', function(){return inject_head_js()})
if (is_archive() && preload_archive_img)
link(rel="preload" href=url_for(preload_archive_img) as="image" )
else if (!is_post() && preload_img)
link(rel="preload" href=url_for(preload_img) as="image" )
if theme.blog_title_font.font_link
link(rel='stylesheet', href=url_for(theme.blog_title_font.font_link))
!=fragment_cache('injectHead', function(){return injectHtml(theme.inject.head)})

View File

@@ -0,0 +1,14 @@
if theme.Open_Graph_meta.enable
-
const coverVal = page.cover_type === 'img' ? page.cover : theme.avatar.img
let ogOption = Object.assign({
type: is_post() ? 'article' : 'website',
image: coverVal ? full_url_for(coverVal) : '',
fb_admins: theme.facebook_comments.user_id || '',
fb_app_id: theme.facebook_comments.app_id || '',
}, theme.Open_Graph_meta.option)
-
!= open_graph(ogOption)
else
meta(name="description" content=page_description())

View File

@@ -0,0 +1,28 @@
if theme.baidu_analytics
script.
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?!{theme.baidu_analytics}";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
if theme.google_analytics
script(async src=`https://www.googletagmanager.com/gtag/js?id=${theme.google_analytics}`)
script.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '!{theme.google_analytics}');
if theme.cloudflare_analytics
script(defer data-pjax src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon=`{"token": "${theme.cloudflare_analytics}"}`)
if theme.microsoft_clarity
script.
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "!{theme.microsoft_clarity}");

View File

@@ -0,0 +1,132 @@
-
let algolia = 'undefined';
let env = process.env;
if (theme.algolia_search.enable) {
algolia = JSON.stringify({
appId: env.ALGOLIA_APP_ID || config.algolia.appId || config.algolia.applicationID,
apiKey: env.ALGOLIA_API_KEY || config.algolia.apiKey,
indexName: env.ALGOLIA_INDEX_NAME || config.algolia.indexName,
hits: theme.algolia_search.hits,
// search languages
languages: {
input_placeholder: _p("search.algolia_search.input_placeholder"),
hits_empty: _p("search.algolia_search.hits_empty"),
hits_stats: _p("search.algolia_search.hits_stats"),
}
})
}
let localSearch = 'undefined';
if (theme.local_search && theme.local_search.enable) {
localSearch = JSON.stringify({
path: theme.local_search.CDN ? theme.local_search.CDN : config.root + config.search.path,
preload: theme.local_search.preload,
top_n_per_article: theme.local_search.top_n_per_article,
unescape: theme.local_search.unescape,
languages: {
// search languages
hits_empty: _p("search.local_search.hits_empty"),
hits_stats: _p("search.local_search.hits_stats"),
}
})
}
let translate = 'undefined';
if (theme.translate && theme.translate.enable){
translate = JSON.stringify({
defaultEncoding: theme.translate.defaultEncoding,
translateDelay: theme.translate.translateDelay,
msgToTraditionalChinese: theme.translate.msgToTraditionalChinese,
msgToSimplifiedChinese: theme.translate.msgToSimplifiedChinese
})
}
let copyright = 'undefined';
if (theme.copy.enable && theme.copy.copyright.enable){
copyright = JSON.stringify({
limitCount: theme.copy.copyright.limit_count,
languages: {
author: _p("copy_copyright.author") + ': ' + config.author,
link: _p("copy_copyright.link") + ': ',
source: _p("copy_copyright.source") + ': ' + config.title,
info: _p("copy_copyright.info")
}
})
}
let Snackbar = 'undefined';
if (theme.snackbar && theme.snackbar.enable) {
Snackbar = JSON.stringify({
chs_to_cht: _p("Snackbar.chs_to_cht"),
cht_to_chs: _p("Snackbar.cht_to_chs"),
day_to_night: _p("Snackbar.day_to_night"),
night_to_day: _p("Snackbar.night_to_day"),
bgLight: theme.snackbar.bg_light,
bgDark: theme.snackbar.bg_dark,
position: theme.snackbar.position,
})
}
let noticeOutdate = 'undefined';
if (theme.noticeOutdate && theme.noticeOutdate.enable) {
noticeOutdate = JSON.stringify({
limitDay: theme.noticeOutdate.limit_day,
position: theme.noticeOutdate.position,
messagePrev: theme.noticeOutdate.message_prev,
messageNext: theme.noticeOutdate.message_next,
})
}
let highlight = 'undefined';
let syntaxHighlighter = config.syntax_highlighter;
let highlightEnable = syntaxHighlighter ? ['highlight.js', 'prismjs'].includes(syntaxHighlighter) : (config.highlight.enable || config.prismjs.enable);
if (highlightEnable) {
highlight = JSON.stringify({
plugin: syntaxHighlighter ? syntaxHighlighter : config.highlight.enable ? 'highlight.js' : 'prismjs',
highlightCopy: theme.highlight_copy,
highlightLang: theme.highlight_lang,
highlightHeightLimit: theme.highlight_height_limit
})
}
script.
const GLOBAL_CONFIG = {
root: '!{config.root}',
algolia: !{algolia},
localSearch: !{localSearch},
translate: !{translate},
noticeOutdate: !{noticeOutdate},
highlight: !{highlight},
copy: {
success: '!{_p("copy.success")}',
error: '!{_p("copy.error")}',
noSupport: '!{_p("copy.noSupport")}'
},
relativeDate: {
homepage: !{theme.post_meta.page.date_format === 'relative'},
post: !{theme.post_meta.post.date_format === 'relative'}
},
runtime: '!{theme.runtimeshow.enable ? _p("aside.card_webinfo.runtime.unit") : ""}',
dateSuffix: {
just: '!{_p("date_suffix.just")}',
min: '!{_p("date_suffix.min")}',
hour: '!{_p("date_suffix.hour")}',
day: '!{_p("date_suffix.day")}',
month: '!{_p("date_suffix.month")}'
},
copyright: !{copyright},
lightbox: '!{ theme.medium_zoom ? "mediumZoom" : (theme.fancybox ? "fancybox" : "null" )}',
Snackbar: !{Snackbar},
infinitegrid: {
js: '!{url_for(theme.asset.egjs_infinitegrid)}',
buttonText: '!{_p("load_more")}'
},
isPhotoFigcaption: !{theme.photofigcaption},
islazyload: !{theme.lazyload.enable},
isAnchor: !{theme.anchor.auto_update || false},
percent: {
toc: !{theme.toc.scroll_percent},
rightside: !{theme.rightside_scroll_percent},
},
autoDarkmode: !{theme.darkmode.enable && theme.darkmode.autoChangeMode === 1}
}

View File

@@ -0,0 +1,30 @@
-
const titleVal = pageTitle.replace(/'/ig,"\\'")
let isHighlightShrink
if (theme.highlight_shrink == 'none') isHighlightShrink = 'undefined'
else if (page.highlight_shrink === true || page.highlight_shrink === false) isHighlightShrink = page.highlight_shrink
else isHighlightShrink = theme.highlight_shrink
var showToc = false
if (theme.aside.enable && page.aside !== false) {
let tocEnable = false
if (is_post()) {
if (theme.toc.post) tocEnable = true
} else if (is_page()) {
if (theme.toc.page) tocEnable = true
}
const pageToc = page.toc === true || page.toc === false ? page.toc : tocEnable
showToc = pageToc && (toc(page.content) !== '' || page.encrypt == true )
}
-
script#config-diff.
var GLOBAL_CONFIG_SITE = {
title: '!{titleVal}',
isPost: !{is_post()},
isHome: !{is_home()},
isHighlightShrink: !{isHighlightShrink},
isToc: !{showToc},
postUpdate: '!{full_date(page.updated)}'
}

View File

@@ -0,0 +1,9 @@
if (theme.google_adsense && theme.google_adsense.enable)
script(async src=theme.google_adsense.js)
if theme.google_adsense.auto_ads
script.
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: '!{theme.google_adsense.client}',
enable_page_level_ads: '!{theme.google_adsense.enable_page_level_ads}'
});

View File

@@ -0,0 +1,35 @@
-
const { internal_provider, third_party_provider, custom_format } = theme.CDN
const providers = {
'jsdelivr': '//cdn.jsdelivr.net',
'cdnjs': '//cdnjs.cloudflare.com',
'unpkg': '//unpkg.com',
'custom': custom_format && custom_format.match(/^((https?:)?(\/\/[^/]+)|([^/]+))(\/|$)/)[1]
}
-
if internal_provider === third_party_provider && internal_provider !== 'local'
link(rel="preconnect" href=providers[internal_provider])
else
if internal_provider !== 'local'
link(rel="preconnect" href=providers[internal_provider])
if third_party_provider !== 'local'
link(rel="preconnect" href=providers[third_party_provider])
if theme.google_analytics
link(rel="preconnect" href="//www.google-analytics.com" crossorigin='')
if theme.baidu_analytics
link(rel="preconnect" href="//hm.baidu.com")
if theme.cloudflare_analytics
link(rel="preconnect" href="//static.cloudflareinsights.com")
if theme.microsoft_clarity
link(rel="preconnect" href="//www.clarity.ms")
if theme.blog_title_font && theme.blog_title_font.font_link && theme.blog_title_font.font_link.indexOf('//fonts.googleapis.com') != -1
link(rel="preconnect" href="//fonts.googleapis.com" crossorigin='')
if !theme.asset.busuanzi && (theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv)
link(rel="preconnect" href="//busuanzi.ibruce.info")

View File

@@ -0,0 +1,11 @@
link(rel="manifest" href=url_for(theme.pwa.manifest))
if(theme.pwa.theme_color)
meta(name="msapplication-TileColor" content=theme.pwa.theme_color)
if(theme.pwa.apple_touch_icon)
link(rel="apple-touch-icon" sizes="180x180" href=url_for(theme.pwa.apple_touch_icon))
if(theme.pwa.favicon_32_32)
link(rel="icon" type="image/png" sizes="32x32" href=url_for(theme.pwa.favicon_32_32))
if(theme.pwa.favicon_16_16)
link(rel="icon" type="image/png" sizes="16x16" href=url_for(theme.pwa.favicon_16_16))
if(theme.pwa.mask_icon)
link(rel="mask-icon" href=url_for(theme.pwa.mask_icon) color="#5bbad5")

View File

@@ -0,0 +1,3 @@
if theme.site_verification
each item in theme.site_verification
meta(name=item.name content=item.content)

View File

@@ -1,26 +0,0 @@
#page-header
span.pull-left
a#site-name.blog_title(href=url_for('/')) #[=config.title]
//- i.fa.fa-bars.toggle-menu.pull-right(aria-hidden="true")
.open.toggle-menu.pull-right
.menu-icon-first
.menu-icon-second
.menu-icon-third
span.pull-right.menus
.mobile_author_icon
img.lozad(src=theme.avatar || url_for('/img/avatar.png') onerror=`onerror=null;src='${theme.lodding_bg.flink}'`)
.mobile_author-info__description= config.description
hr
.menus_item
each value, label in theme.menu
a.site-page(href=value.split('||')[0])
i.fa-fw(class=value.split('||')[1])
span=' '+label
script.
document.body.addEventListener('touchstart', function(){ });
span.pull-right
if (theme.algolia_search.enable || theme.local_search && theme.local_search.enable)
a.site-page.social-icon.search
i.fa.fa-search.fa-fw
span=' '+_p('search')

View File

@@ -0,0 +1,52 @@
if !theme.disable_top_img && page.top_img !== false
if is_post()
- var top_img = page.top_img || page.cover || theme.default_top_img
else if is_page()
- var top_img = page.top_img || theme.default_top_img
else if is_tag()
- var top_img = theme.tag_per_img && theme.tag_per_img[page.tag]
- top_img = top_img ? top_img : (theme.tag_img !== false ? theme.tag_img || theme.default_top_img : false)
else if is_category()
- var top_img = theme.category_per_img && theme.category_per_img[page.category]
- top_img = top_img ? top_img : (theme.category_img !== false ? theme.category_img || theme.default_top_img : false)
else if is_home()
- var top_img = theme.index_img !== false ? theme.index_img || theme.default_top_img : false
else if is_archive()
- var top_img = theme.archive_img !== false ? theme.archive_img || theme.default_top_img : false
else
- var top_img = page.top_img || theme.default_top_img
if top_img !== false
- var imgSource = top_img && isImgOrUrl(top_img) ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}`
- var bg_img = top_img ? imgSource : ''
- var site_title = page.title || page.tag || page.category || config.title
- var isHomeClass = is_home() ? 'full_page' : 'not-home-page'
- is_post() ? isHomeClass = 'post-bg' : isHomeClass
else
- var isHomeClass = 'not-top-img'
else
- var top_img = false
- var isHomeClass = 'not-top-img'
- const isFixedClass = theme.nav.fixed ? ' fixed' : ''
header#page-header(class=`${isHomeClass+isFixedClass}` style=bg_img)
!=partial('includes/header/nav', {}, {cache: true})
if top_img !== false
if is_post()
include ./post-info.pug
else if is_home()
#site-info
h1#site-title=site_title
if theme.subtitle.enable
- var loadSubJs = true
#site-subtitle
span#subtitle
if(theme.social)
#site_social_icons
!=partial('includes/header/social', {}, {cache: true})
#scroll-down
i.fas.fa-angle-down.scroll-down-effects
else
#page-site-info
h1#site-title=site_title

View File

@@ -0,0 +1,27 @@
if theme.menu
.menus_items
each value, label in theme.menu
if typeof value !== 'object'
.menus_item
- const valueArray = value.split('||')
a.site-page(href=url_for(trim(valueArray[0])))
if valueArray[1]
i.fa-fw(class=trim(valueArray[1]))
span=' '+label
else
.menus_item
- const labelArray = label.split('||')
- const hideClass = labelArray[2] && trim(labelArray[2]) === 'hide' ? 'hide' : ''
a.site-page.group(class=`${hideClass}` href='javascript:void(0);')
if labelArray[1]
i.fa-fw(class=trim(labelArray[1]))
span=' '+ trim(labelArray[0])
i.fas.fa-chevron-down
ul.menus_item_child
each val,lab in value
- const valArray = val.split('||')
li
a.site-page.child(href=url_for(trim(valArray[0])))
if valArray[1]
i.fa-fw(class=trim(valArray[1]))
span=' '+ lab

View File

@@ -0,0 +1,21 @@
nav#nav
span#blog-info
a(href=url_for('/') title=config.title)
if theme.nav.logo
img.site-icon(src=url_for(theme.nav.logo))
if theme.nav.display_title
span.site-name=config.title
#menus
if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable)
#search-button
a.site-page.social-icon.search(href="javascript:void(0);")
i.fas.fa-search.fa-fw
span=' '+_p('search.title')
!=partial('includes/header/menu_item', {}, {cache: true})
#toggle-menu
a.site-page(href="javascript:void(0);")
i.fas.fa-bars.fa-fw

View File

@@ -0,0 +1,144 @@
- let comments = theme.comments
#post-info
h1.post-title= page.title || _p('no_title')
if theme.post_edit.enable
a.post-edit-link(href=theme.post_edit.url + page.source title=_p('post.edit') target="_blank")
i.fas.fa-pencil-alt
#post-meta
.meta-firstline
if (theme.post_meta.post.date_type)
span.post-meta-date
if (theme.post_meta.post.date_type === 'both')
i.far.fa-calendar-alt.fa-fw.post-meta-icon
span.post-meta-label= _p('post.created')
time.post-meta-date-created(datetime=date_xml(page.date) title=_p('post.created') + ' ' + full_date(page.date))=date(page.date, config.date_format)
span.post-meta-separator |
i.fas.fa-history.fa-fw.post-meta-icon
span.post-meta-label= _p('post.updated')
time.post-meta-date-updated(datetime=date_xml(page.updated) title=_p('post.updated') + ' ' + full_date(page.updated))=date(page.updated, config.date_format)
else
- let data_type_update = theme.post_meta.post.date_type === 'updated'
- let date_type = data_type_update ? 'updated' : 'date'
- let date_icon = data_type_update ? 'fas fa-history' :'far fa-calendar-alt'
- let date_title = data_type_update ? _p('post.updated') : _p('post.created')
i.fa-fw.post-meta-icon(class=date_icon)
span.post-meta-label= date_title
time(datetime=date_xml(page[date_type]) title=date_title + ' ' + full_date(page[date_type]))=date(page[date_type], config.date_format)
if (theme.post_meta.post.categories && page.categories.data.length > 0)
span.post-meta-categories
if (theme.post_meta.post.date_type)
span.post-meta-separator |
each item, index in page.categories.data
i.fas.fa-inbox.fa-fw.post-meta-icon
a(href=url_for(item.path)).post-meta-categories #[=item.name]
if (index < page.categories.data.length - 1)
i.fas.fa-angle-right.post-meta-separator
.meta-secondline
- let postWordcount = theme.wordcount.enable && (theme.wordcount.post_wordcount || theme.wordcount.min2read)
if (postWordcount)
span.post-meta-separator |
span.post-meta-wordcount
if theme.wordcount.post_wordcount
i.far.fa-file-word.fa-fw.post-meta-icon
span.post-meta-label= _p('post.wordcount') + ':'
span.word-count= wordcount(page.content)
if theme.wordcount.min2read
span.post-meta-separator |
if theme.wordcount.min2read
i.far.fa-clock.fa-fw.post-meta-icon
span.post-meta-label= _p('post.min2read') + ':'
span= min2read(page.content, {cn: 350, en: 160}) + _p('post.min2read_unit')
//- for pv and count
mixin pvBlock(parent_id,parent_class,parent_title)
span.post-meta-separator |
span(class=parent_class id=parent_id data-flag-title=page.title)
i.far.fa-eye.fa-fw.post-meta-icon
span.post-meta-label=_p('post.page_pv') + ':'
if block
block
- const commentUse = comments.use
if page.comments !== false && commentUse && !comments.lazyload
if commentUse[0] === 'Valine' && theme.valine.visitor
+pvBlock(url_for(page.path),'leancloud_visitors',page.title)
span.leancloud-visitors-count
i.fa-solid.fa-spinner.fa-spin
else if commentUse[0] === 'Waline' && theme.waline.pageview
+pvBlock('','','')
span.waline-pageview-count(data-path=url_for(page.path))
i.fa-solid.fa-spinner.fa-spin
else if commentUse[0] === 'Twikoo' && theme.twikoo.visitor
+pvBlock('','','')
span#twikoo_visitors
i.fa-solid.fa-spinner.fa-spin
else if commentUse[0] === 'Artalk' && theme.artalk.visitor
+pvBlock('','','')
span#ArtalkPV
i.fa-solid.fa-spinner.fa-spin
else if theme.busuanzi.page_pv
+pvBlock('','post-meta-pv-cv','')
span#busuanzi_value_page_pv
i.fa-solid.fa-spinner.fa-spin
else if theme.busuanzi.page_pv
+pvBlock('','post-meta-pv-cv','')
span#busuanzi_value_page_pv
i.fa-solid.fa-spinner.fa-spin
if comments.count && !comments.lazyload && page.comments !== false && comments.use
- var whichCount = comments.use[0]
mixin countBlock
span.post-meta-separator |
span.post-meta-commentcount
i.far.fa-comments.fa-fw.post-meta-icon
span.post-meta-label= _p('post.comments') + ':'
if block
block
case whichCount
when 'Disqus'
+countBlock
a.disqus-comment-count(href=full_url_for(page.path) + '#post-comment')
i.fa-solid.fa-spinner.fa-spin
when 'Disqusjs'
+countBlock
a.disqusjs-comment-count(href=full_url_for(page.path) + '#post-comment')
i.fa-solid.fa-spinner.fa-spin
when 'Valine'
+countBlock
a(href=url_for(page.path) + '#post-comment' itemprop="discussionUrl")
span.valine-comment-count(data-xid=url_for(page.path) itemprop="commentCount")
i.fa-solid.fa-spinner.fa-spin
when 'Waline'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span.waline-comment-count(data-path=url_for(page.path))
i.fa-solid.fa-spinner.fa-spin
when 'Gitalk'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span.gitalk-comment-count
i.fa-solid.fa-spinner.fa-spin
when 'Twikoo'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span#twikoo-count
i.fa-solid.fa-spinner.fa-spin
when 'Facebook Comments'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span.fb-comments-count(data-href=urlNoIndex())
when 'Remark42'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span.remark42__counter(data-url=urlNoIndex())
i.fa-solid.fa-spinner.fa-spin
when 'Artalk'
+countBlock
a(href=url_for(page.path) + '#post-comment')
span#ArtalkCount
i.fa-solid.fa-spinner.fa-spin

View File

@@ -0,0 +1,4 @@
each url, icon in theme.social
a.social-icon(href=url_for(trim(url.split('||')[0])) target="_blank"
title=url.split('||')[1] === undefined ? '' : trim(url.split('||')[1]))
i(class=icon style=url.split('||')[2] === undefined ? '' : `color: ${trim(url.split('||')[2]).replace(/[\'\"]/g, '')};`)

View File

@@ -1,86 +1,47 @@
- var pageTitle = page.title || config.subtitle || ''
- if (is_archive()) pageTitle = _p('page.archives')
- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
- if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
- if (is_month()) pageTitle += ': ' + page.month + '/' + page.year
- if (is_year()) pageTitle += ': ' + page.year
- var pageTitle_saved //- 暫時存儲pageTitle
- var pageTitle_no_include_blog_name //- 存儲pageTitle 不帶 " | "meta用
- var home_subtitle_true //有subtitle
//- home時顯示config.title (JerryC),其他顯示 pageTitle。meta用
- is_home() ? pageTitle_no_include_blog_name = config.title : pageTitle_no_include_blog_name = pageTitle
//- 暫時存儲pageTitle
- pageTitle ? pageTitle_saved = pageTitle + ' | ' + config.title : pageTitle_saved = config.title
//- 是否有 config.subtitle 是各自显示
- config.subtitle ? home_subtitle_true = ' - ' + config.subtitle : home_subtitle_true = ''
//- home時pageTitle顯示 JerryC - subtitle其他顯示 pageTitle | JerryC
- is_home() ? pageTitle = config.title + home_subtitle_true : pageTitle = pageTitle_saved
- var pageDescription = page.description || page.title || config.description || ''
- var pageKeywords = (config.keywords || []).join(',')
- if (page.tags && page.tags.data) pageKeywords = page.tags.data.map(function(tag) {return tag.name;}).join(',')
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
- var pageCopyright = config.copyright || config.author
- var htmlClassHideAside = theme.aside.enable && theme.aside.hide ? 'hide-aside' : ''
- page.aside = is_archive() ? theme.aside.display.archive: is_category() ? theme.aside.display.category : is_tag() ? theme.aside.display.tag : page.aside
- var hideAside = !theme.aside.enable || page.aside === false ? 'hide-aside' : ''
- var pageType = is_post() ? 'post' : 'page'
doctype html
html(lang=config.language)
html(lang=config.language data-theme=theme.display_mode class=htmlClassHideAside)
head
meta(charset='UTF-8')
meta(http-equiv="X-UA-Compatible" content="IE=edge")
meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1")
title= pageTitle
meta(name="description" content=pageDescription)
meta(name="keywords" content=pageKeywords)
meta(name="author" content=pageAuthor)
meta(name="copyright" content=pageCopyright)
meta(name ="format-detection" content="telephone=no")
!=favicon_tag(config.favicon || theme.favicon || '/favicon.ico')
if theme.stylesheets !== undefined && theme.stylesheets.length > 0
each url in theme.stylesheets
link(rel='stylesheet', href=url_for(url))
each item in theme.cdn.css
if item !== undefined
link(rel='stylesheet', href=item)
include ./head.pug
include ./config.pug
body
if theme.fireworks && theme.fireworks.enable
canvas.fireworks
if (is_post() && page.toc != false && theme.toc.enable)
i.fa.fa-arrow-right#toggle-sidebar(aria-hidden="true")
include ./sidebar.pug
if (!is_post())
include ./nav.pug
#content-outer
block top_img
if (!is_post())
#content-inner.layout_page
if body
div!= body
else
block content
else
#content-inner.layout.layout_post
if body
div!= body
else
block content
footer
include ./footer.pug
i.fa.fa-arrow-up#go-up(aria-hidden="true")
include ./rightside.pug
if (is_post())
include ./post-bottom.pug
each item in theme.cdn.js
if item !== undefined
script(src=url_for(item))
if theme.scripts !== undefined && theme.scripts.length > 0
//- scripts list from config.yml
each url in theme.scripts
script(src=url_for(url))
include ./additional-js.pug
include ./search/index.pug
if theme.preloader.enable
!=partial('includes/loading/index', {}, {cache: true})
if theme.background
#web_bg
!=partial('includes/sidebar', {}, {cache: true})
if page.type !== '404'
#body-wrap(class=pageType)
include ./header/index.pug
main#content-inner.layout(class=hideAside)
if body
div!= body
else
block content
if theme.aside.enable && page.aside !== false
include widget/index.pug
- var footerBg = theme.footer_bg
if (footerBg)
if (footerBg === true)
- var footer_bg = bg_img
else
- var footer_bg = isImgOrUrl(theme.footer_bg) ? `background-image: url('${url_for(footerBg)}')` : `background: ${footerBg}`
else
- var footer_bg = ''
footer#footer(style=footer_bg)
!=partial('includes/footer', {}, {cache: true})
else
include ./404.pug
include ./rightside.pug
include ./additional-js.pug

View File

@@ -0,0 +1,33 @@
#loading-box
.loading-left-bg
.loading-right-bg
.spinner-box
.configure-border-1
.configure-core
.configure-border-2
.configure-core
.loading-word= _p('loading')
script.
(()=>{
const $loadingBox = document.getElementById('loading-box')
const $body = document.body
const preloader = {
endLoading: () => {
$body.style.overflow = ''
$loadingBox.classList.add('loaded')
},
initLoading: () => {
$body.style.overflow = 'hidden'
$loadingBox.classList.remove('loaded')
}
}
preloader.initLoading()
window.addEventListener('load',() => { preloader.endLoading() })
if (!{theme.pjax && theme.pjax.enable}) {
document.addEventListener('pjax:send', () => { preloader.initLoading() })
document.addEventListener('pjax:complete', () => { preloader.endLoading() })
}
})()

View File

@@ -0,0 +1,4 @@
if theme.preloader.source === 1
include ./fullpage-loading.pug
else
include ./pace.pug

View File

@@ -0,0 +1,11 @@
script.
window.paceOptions = {
restartOnPushState: false
}
document.addEventListener('pjax:send', () => {
Pace.restart()
})
link(rel="stylesheet", href=url_for(theme.preloader.pace_css_url || theme.asset.pace_default_css))
script(src=url_for(theme.asset.pace_js))

View File

@@ -2,11 +2,22 @@ mixin articleSort(posts)
.article-sort
- var year
- posts.each(function (article) {
- var tempYear = date(article.date, 'YYYY')
- let tempYear = date(article.date, 'YYYY')
- let no_cover = article.cover === false || !theme.cover.archives_enable ? 'no-article-cover' : ''
- let title = article.title || _p('no_title')
if tempYear !== year
- year = tempYear
.article-sort-item.year= year
.article-sort-item
time.article-sort-item__time= date(article.date)
a.article-sort-item__title(href=url_for(article.path))= article.title || 'No Title'
.article-sort-item(class=no_cover)
if article.cover && theme.cover.archives_enable
a.article-sort-item-img(href=url_for(article.path) title=title)
if article.cover_type === 'img'
img(src=url_for(article.cover) alt=title onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'`)
else
div(style=`background: ${article.cover}`)
.article-sort-item-info
.article-sort-item-time
i.far.fa-calendar-alt
time.post-meta-date-created(datetime=date_xml(article.date) title=_p('post.created') + ' ' + full_date(article.date))= date(article.date, config.date_format)
a.article-sort-item-title(href=url_for(article.path) title=title)= title
- })

View File

@@ -0,0 +1,129 @@
mixin postUI(posts)
each article , index in page.posts.data
.recent-post-item
-
let link = article.link || article.path
let title = article.title || _p('no_title')
const position = theme.cover.position
let leftOrRight = position === 'both'
? index%2 == 0 ? 'left' : 'right'
: position === 'left' ? 'left' : 'right'
let post_cover = article.cover
let no_cover = article.cover === false || !theme.cover.index_enable ? 'no-cover' : ''
-
if post_cover && theme.cover.index_enable
.post_cover(class=leftOrRight)
a(href=url_for(link) title=title)
if article.cover_type === 'img'
img.post-bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'` alt=title)
else
div.post-bg(style=`background: ${post_cover}`)
.recent-post-info(class=no_cover)
a.article-title(href=url_for(link) title=title)
if (is_home() && (article.top || article.sticky > 0))
i.fas.fa-thumbtack.sticky
= title
.article-meta-wrap
if (theme.post_meta.page.date_type)
span.post-meta-date
if (theme.post_meta.page.date_type === 'both')
i.far.fa-calendar-alt
span.article-meta-label=_p('post.created')
time.post-meta-date-created(datetime=date_xml(article.date) title=_p('post.created') + ' ' + full_date(article.date))=date(article.date, config.date_format)
span.article-meta-separator |
i.fas.fa-history
span.article-meta-label=_p('post.updated')
time.post-meta-date-updated(datetime=date_xml(article.updated) title=_p('post.updated') + ' ' + full_date(article.updated))=date(article.updated, config.date_format)
else
- let data_type_updated = theme.post_meta.page.date_type === 'updated'
- let date_type = data_type_updated ? 'updated' : 'date'
- let date_icon = data_type_updated ? 'fas fa-history' :'far fa-calendar-alt'
- let date_title = data_type_updated ? _p('post.updated') : _p('post.created')
i(class=date_icon)
span.article-meta-label=date_title
time(datetime=date_xml(article[date_type]) title=date_title + ' ' + full_date(article[date_type]))=date(article[date_type], config.date_format)
if (theme.post_meta.page.categories && article.categories.data.length > 0)
span.article-meta
span.article-meta-separator |
each item, index in article.categories.data
i.fas.fa-inbox
a(href=url_for(item.path)).article-meta__categories #[=item.name]
if (index < article.categories.data.length - 1)
i.fas.fa-angle-right.article-meta-link
if (theme.post_meta.page.tags && article.tags.data.length > 0)
span.article-meta.tags
span.article-meta-separator |
each item, index in article.tags.data
i.fas.fa-tag
a(href=url_for(item.path)).article-meta__tags #[=item.name]
if (index < article.tags.data.length - 1)
span.article-meta-link #[='•']
mixin countBlockInIndex
- needLoadCountJs = true
span.article-meta
span.article-meta-separator |
i.fas.fa-comments
if block
block
span.article-meta-label= ' ' + _p('card_post_count')
if theme.comments.card_post_count && theme.comments.use
case theme.comments.use[0]
when 'Disqus'
when 'Disqusjs'
+countBlockInIndex
a.disqus-count(href=full_url_for(link) + '#post-comment')
i.fa-solid.fa-spinner.fa-spin
when 'Valine'
+countBlockInIndex
a(href=url_for(link) + '#post-comment')
span.valine-comment-count(data-xid=url_for(link))
i.fa-solid.fa-spinner.fa-spin
when 'Waline'
+countBlockInIndex
a(href=url_for(link) + '#post-comment')
span.waline-comment-count(data-path=url_for(link))
i.fa-solid.fa-spinner.fa-spin
when 'Twikoo'
+countBlockInIndex
a.twikoo-count(href=url_for(link) + '#post-comment')
i.fa-solid.fa-spinner.fa-spin
when 'Facebook Comments'
+countBlockInIndex
a(href=url_for(link) + '#post-comment')
span.fb-comments-count(data-href=urlNoIndex(article.permalink))
when 'Remark42'
+countBlockInIndex
a(href=url_for(link) + '#post-comment')
span.remark42__counter(data-url=urlNoIndex(article.permalink))
i.fa-solid.fa-spinner.fa-spin
when 'Artalk'
+countBlockInIndex
a(href=url_for(link) + '#post-comment')
span.artalk-count(data-page-key=url_for(link))
i.fa-solid.fa-spinner.fa-spin
//- Display the article introduction on homepage
case theme.index_post_content.method
when false
- break
when 1
.content!= article.description
when 2
if article.description
.content!= article.description
else
- const content = strip_html(article.content)
- let expert = content.substring(0, theme.index_post_content.length)
- content.length > theme.index_post_content.length ? expert += ' ...' : ''
.content!= expert
default
- const content = strip_html(article.content)
- let expert = content.substring(0, theme.index_post_content.length)
- content.length > theme.index_post_content.length ? expert += ' ...' : ''
.content!= expert
if theme.ad && theme.ad.index
if (index + 1) % 3 == 0
.recent-post-item.ads-wrap!=theme.ad.index

View File

@@ -1,35 +0,0 @@
if (is_archive())
- var top_img = theme.archive_img ||theme.top_img || config.top_img
else
- var top_img = page.top_img||theme.top_img || config.top_img
- var bg_img = top_img && top_img !== true ? `background-image: url(${top_img})` : ''
if is_home()
nav#nav.full_page(style=bg_img)
include ./header.pug
#site-info
#site-title
span.blogtitle= page.title || page.tag || page.category || config.title
#site-sub-title
span.subtitle
if(theme.social)
#site-social-icons
each url, icon in theme.social
a.social-icon(href=url target="_blank")
i(class=icon)
.scroll-down
i.fa.fa-angle-down.scroll-down-effects
else
nav#nav.bg_local(style=bg_img)
include ./header.pug
#page_site-info
#site-title
if (is_archive())
span.blogtitle= _p('archives')
else
span.blogtitle= page.title || page.tag || page.category || config.title

View File

@@ -0,0 +1 @@
.category-lists!= list_categories()

View File

@@ -0,0 +1,2 @@
#article-container
!= page.content

View File

@@ -0,0 +1,82 @@
#article-container
.flink
- let { content, random, flink_url } = page
- let pageContent = content
if flink_url || random
- const linkData = flink_url ? false : site.data.link || false
script.
(()=>{
const replaceSymbol = (str) => {
return str.replace(/[\p{P}\p{S}]/gu, "-")
}
let result = ""
const add = (str) => {
for(let i = 0; i < str.length; i++){
const replaceClassName = replaceSymbol(str[i].class_name)
const className = str[i].class_name ? `<h2 id="${replaceClassName}"><a href="#${replaceClassName}" class="headerlink" title="${str[i].class_name}"></a>${str[i].class_name}</h2>` : ""
const classDesc = str[i].class_desc ? `<div class="flink-desc">${str[i].class_desc}</div>` : ""
let listResult = ""
const lists = str[i].link_list
if (!{random === true}) {
lists.sort(() => Math.random() - 0.5)
}
for(let j = 0; j < lists.length; j++){
listResult += `
<div class="flink-list-item">
<a href="${lists[j].link}" title="${lists[j].name}" target="_blank">
<div class="flink-item-icon">
<img class="no-lightbox" src="${lists[j].avatar}" onerror='this.onerror=null;this.src="!{url_for(theme.error_img.flink)}"' alt="${lists[j].name}" />
</div>
<div class="flink-item-name">${lists[j].name}</div>
<div class="flink-item-desc" title="${lists[j].descr}">${lists[j].descr}</div>
</a>
</div>`
}
result += `${className}${classDesc} <div class="flink-list">${listResult}</div>`
}
document.querySelector(".flink").insertAdjacentHTML("afterbegin", result)
window.lazyLoadInstance && window.lazyLoadInstance.update()
}
const linkData = !{JSON.stringify(linkData)}
if (!{Boolean(flink_url)}) {
fetch("!{url_for(flink_url)}")
.then(response => response.json())
.then(add)
} else if (linkData) {
add(linkData)
}
})()
else
if site.data.link
- let result = ""
each i in site.data.link
- let className = i.class_name ? markdown(`## ${i.class_name}`) : ""
- let classDesc = i.class_desc ? `<div class="flink-desc">${i.class_desc}</div>` : ""
- let listResult = ""
each j in i.link_list
-
listResult += `
<div class="flink-list-item">
<a href="${j.link}" title="${j.name}" target="_blank">
<div class="flink-item-icon">
<img class="no-lightbox" src="${j.avatar}" onerror='this.onerror=null;this.src="${url_for(theme.error_img.flink)}"' alt="${j.name}" />
</div>
<div class="flink-item-name">${j.name}</div>
<div class="flink-item-desc" title="${j.descr}">${j.descr}</div>
</a>
</div>`
-
- result += `${className}${classDesc} <div class="flink-list">${listResult}</div>`
- pageContent = result + pageContent
!= pageContent

View File

@@ -0,0 +1,2 @@
.tag-cloud-list.is-center
!=cloudTags({source: site.tags, orderby: page.orderby || 'random', order: page.order || 1, minfontsize: 1.2, maxfontsize: 2.1, limit: 0, unit: 'em'})

View File

@@ -1,62 +1,41 @@
-
var options = {
prev_text: '<i class="fa fa-chevron-left"></i>',
next_text: '<i class="fa fa-chevron-right"></i>',
mid_size: 1
prev_text: '<i class="fas fa-chevron-left fa-fw"></i>',
next_text: '<i class="fas fa-chevron-right fa-fw"></i>',
mid_size: 1,
escape: false
}
if(!is_post())
nav#pagination
div.pagination
!=paginator(options)
else
nav#pagination.pagination_post
if(page.prev)
if(page.next)
.prev-post.pull-left
- var pagination_cover = page.prev.cover || random_cover()
a(href=url_for(page.prev.path))
if theme.lazyload.enable
img.prev_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` )
else
img.prev_cover(src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` )
if is_post()
- let prev = theme.post_pagination === 1 ? page.prev : page.next
- let next = theme.post_pagination === 1 ? page.next : page.prev
nav#pagination.pagination-post
if(prev)
- var hasPageNext = next ? 'pull-left' : 'pull-full'
.prev-post(class=hasPageNext)
a(href=url_for(prev.path) title=prev.title)
if prev.cover_type === 'img'
img.cover(src=url_for(prev.cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of previous post')
else
.cover(style=`background: ${prev.cover || 'var(--default-bg-color)'}`)
.pagination-info
.label=_p('pagination.prev')
.prev_info
span=page.prev.title
else
.prev-post.pull-full
- var pagination_cover = page.prev.cover || random_cover()
a(href=url_for(page.prev.path))
if theme.lazyload.enable
img.prev_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.prev_cover(src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.label=_p('pagination.prev')
.prev_info
span=page.prev.title
.prev_info=prev.title
if(page.next)
if(page.prev)
.next-post.pull-right
- var pagination_cover = page.next.cover || random_cover()
a(href=url_for(page.next.path))
if theme.lazyload.enable
img.next_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.next_cover(src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
if(next)
- var hasPagePrev = prev ? 'pull-right' : 'pull-full'
.next-post(class=hasPagePrev)
a(href=url_for(next.path) title=next.title)
if next.cover_type === 'img'
img.cover(src=url_for(next.cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of next post')
else
.cover(style=`background: ${next.cover || 'var(--default-bg-color)'}`)
.pagination-info
.label=_p('pagination.next')
.next_info
span=page.next.title
else
.next-post.pull-full
- var pagination_cover = page.next.cover || random_cover()
a(href=url_for(page.next.path))
if theme.lazyload.enable
img.next_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.next_cover(src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.label=_p('pagination.next')
.next_info
span=page.next.title
.next_info=next.title
else
nav#pagination
.pagination
if is_home()
- options.format = 'page/%d/#content-inner'
!=paginator(options)

View File

@@ -1,8 +0,0 @@
#post_bottom
#post_bottom_items
a#to_comment(href="#post-comment")
i.scroll_to_comment.fa.fa-comments
i#mobile_toc.fa.fa-list
#toc_mobile
.toc_mobile_headline= _p('sidebar.catalog')
!=toc(page.content,{"class":"toc_mobile_items"})

View File

@@ -0,0 +1,23 @@
if theme.post_copyright.enable && page.copyright !== false
- let author = page.copyright_author || config.author
- let authorHref = page.copyright_author_href || theme.post_copyright.author_href || config.url
- let url = page.copyright_url || page.permalink
- let info = page.copyright_info || _p('post.copyright.copyright_content', theme.post_copyright.license_url, theme.post_copyright.license, config.url, config.title)
.post-copyright
.post-copyright__author
span.post-copyright-meta
i.fas.fa-circle-user.fa-fw
= _p('post.copyright.author') + ": "
span.post-copyright-info
a(href=authorHref)=author
.post-copyright__type
span.post-copyright-meta
i.fas.fa-square-arrow-up-right.fa-fw
= _p('post.copyright.link') + ": "
span.post-copyright-info
a(href=url_for(url))= theme.post_copyright.decode ? decodeURI(url) : url
.post-copyright__notice
span.post-copyright-meta
i.fas.fa-circle-exclamation.fa-fw
= _p('post.copyright.copyright_notice') + ": "
span.post-copyright-info!= info

View File

@@ -0,0 +1,13 @@
.post-reward
.reward-button
i.fas.fa-qrcode
= theme.reward.text || _p('donate')
.reward-main
ul.reward-all
each item in theme.reward.QR_code
- var clickTo = item.link ? item.link : item.img
li.reward-item
a(href=url_for(clickTo) target='_blank')
img.post-qr-code-img(src=url_for(item.img) alt=item.text)
.post-qr-code-desc=item.text

View File

@@ -1,70 +0,0 @@
each article , index in page.posts.data
.recent-post-item.article-container
- var link = article.link || article.path
if index%2 == 0
.post_cover.is_left
a(href=url_for(link) title=article.title || _p('no_title'))
- var post_cover = article.cover
- var default_post_cover = random_cover()
if (post_cover)
if theme.lazyload.enable
img.post_bg.lozad(data-src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.post_bg(src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
if theme.lazyload.enable
img.post_bg.lozad(data-src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.post_bg(src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
.post_cover.is_right
a(href=url_for(link) title=article.title || _p('no_title'))
- var post_cover = article.cover
- var default_post_cover = random_cover()
if (post_cover)
if theme.lazyload.enable
img.post_bg.lozad(data-src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.post_bg(src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
if theme.lazyload.enable
img.post_bg.lozad(data-src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
else
img.post_bg(src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.recent-post-info
a.article-title(href=url_for(link) title= article.title || _p('no_title'))= article.title || _p('no_title')
if (article.top)
span.article-meta
i.fa.fa-thumb-tack.article-meta__icon.sticky
span.sticky= _p('sticky')
span.article-meta__separator(style="margin-right: 0.3rem") |
if (theme.post_meta.date_type)
- var date_type = theme.post_meta.date_type == 'updated' ? 'updated' : 'date'
time.post-meta__date #[i.fa.fa-calendar(aria-hidden="true")] #[=date(article[date_type], config.date_format)]
if (theme.post_meta.categories && article.categories.data.length > 0)
span.article-meta
span.article-meta__separator |
each item, index in article.categories.data
i.fa.fa-inbox.article-meta__icon(aria-hidden="true")
a(href=url_for(item.path)).article-meta__categories #[=item.name]
if (index < article.categories.data.length - 1)
i.fa.fa-angle-right(aria-hidden="true")
//- if (theme.post_meta.tags && article.tags.data.length > 0)
//- span.article-meta.tags
//- span.article-meta__separator |
//- each item, index in article.tags.data
//- i.fa.fa-tag.article-meta__icon(aria-hidden="true")
//- a(href=url_for(item.path)).article-meta__tags #[=item.name]
//- if (index < article.tags.data.length - 1)
//- span.article-meta__link -
if theme.auto_excerpt && theme.auto_excerpt.enable
- const content = strip_html(article.content)
- let expert = content.substring(0, theme.auto_excerpt.length)
- content.length > theme.auto_excerpt.length ? expert += ' ...' : ''
.content!= expert
.more_setting
a.more.more--border.more--primary.more--animated(href=url_for(link) + '#more' style="margin-top: 14px")= _p('read_more')
else
.content!= article.description

View File

@@ -1,11 +0,0 @@
.post-reward
a.reward-buttom
i.fa.fa-qrcode
= ' ' + _p('donate')
.reward-main
ul.reward-all
each item in theme.reward.QR_code
li.reward-item
img.lozad.post-qr-code__img(src=(item.itemlist||item).img)
.post-qr-code__desc=(item.itemlist||item).text

View File

@@ -1,9 +1,61 @@
section#rightside.rightside
if theme.readmode.enable && is_post()
i#readmode.fa.fa-book(title=_p('rightside.readmode_title'))
i#font_plus.fa.fa-plus(title=_p('rightside.font_plus_title'))
i#font_minus.fa.fa-minus(title=_p('rightside.font_minus_title'))
if theme.translate && theme.translate.enable
a#translateLink.translate_chn_to_cht(href="javascript:translatePage();" title=_p('rightside.translate_title'))= theme.translate.default
if theme.nightshift.enable
i#nightshift.fa.fa-moon-o.nightshift(title=_p('rightside.night_mode_title'))
- const { readmode, translate, darkmode, aside, chat_btn } = theme
mixin rightsideItem(array)
each item in array
case item
when 'readmode'
if is_post() && readmode
button#readmode(type="button" title=_p('rightside.readmode_title'))
i.fas.fa-book-open
when 'translate'
if translate.enable
button#translateLink(type="button" title=_p('rightside.translate_title'))= translate.default
when 'darkmode'
if darkmode.enable && darkmode.button
button#darkmode(type="button" title=_p('rightside.night_mode_title'))
i.fas.fa-adjust
when 'hideAside'
if aside.enable && aside.button && page.aside !== false
button#hide-aside-btn(type="button" title=_p('rightside.aside'))
i.fas.fa-arrows-alt-h
when 'toc'
if showToc
button#mobile-toc-button.close(type="button" title=_p("rightside.toc"))
i.fas.fa-list-ul
when 'chat'
if chat_btn
button#chat-btn(type="button" title=_p("rightside.chat"))
i.fas.fa-sms
when 'comment'
if commentsJsLoad
a#to_comment(href="#post-comment" title=_p("rightside.scroll_to_comment"))
i.fas.fa-comments
#rightside
- const { enable, hide, show } = theme.rightside_item_order
- const hideArray = enable ? hide && hide.split(',') : ['readmode','translate','darkmode','hideAside']
- const showArray = enable ? show && show.split(',') : ['toc','chat','comment']
#rightside-config-hide
if hideArray
+rightsideItem(hideArray)
#rightside-config-show
if enable
if hide
button#rightside-config(type="button" title=_p("rightside.setting"))
i.fas.fa-cog.fa-spin
else
if is_post()
if (readmode || translate.enable || (darkmode.enable && darkmode.button))
button#rightside-config(type="button" title=_p("rightside.setting"))
i.fas.fa-cog.fa-spin
else if translate.enable || (darkmode.enable && darkmode.button)
button#rightside-config(type="button" title=_p("rightside.setting"))
i.fas.fa-cog.fa-spin
if showArray
+rightsideItem(showArray)
button#go-up(type="button" title=_p("rightside.back_to_top"))
span.scroll-percent
i.fas.fa-arrow-up

View File

@@ -1,12 +0,0 @@
#algolia-search.search-dialog
#algolia-search-title.search-dialog__title Algolia
#algolia-input-panel
#algolia-search-input
hr
#algolia-search-results
#algolia-hits
#algolia-pagination
#algolia-stats
span.search-close-button
i.fa.fa-times
.search-mask

View File

@@ -1,5 +0,0 @@
if (theme.algolia_search.enable)
include ./algolia.pug
if (theme.local_search)
if (!theme.algolia_search.enable && theme.local_search.enable)
include ./local-search.pug

View File

@@ -1,23 +0,0 @@
#local-search.search-dialog
#local-search-title.search-dialog__title=_p("local_search.label")
#local-input-panel
#local-search-input
.local-search-box
input(placeholder=_p("local_search.input_placeholder")).local-search-box--input
hr
#local-search-results
#local-hits
#local-stats
#hr.local-search-stats__hr
case config.language
when "zh-CN"
span=_p("local_search.by")
| #[a(href="https://github.com/wzpan/hexo-generator-search" style={'color': '#49B1F5'}) hexo-generator-search]
| #[span=_p("local_search.powered")]
when "en"
default
span=_p("local_search.powered_by")
| #[a(href="https://github.com/wzpan/hexo-generator-search" style={'color': '#49B1F5'}) hexo-generator-search]
span.search-close-button
i.fa.fa-times
.search-mask

View File

@@ -1,2 +0,0 @@
.addthis_inline_share_toolbox
script(src=`//s7.addthis.com/js/300/addthis_widget.js#pubid=${theme.addThis.pubid}` async)

View File

@@ -1,9 +0,0 @@
.addtoany
.a2a_kit.a2a_kit_size_32.a2a_default_style
each name in theme.addtoany.item
a(class="a2a_button_" + name)
a.a2a_dd(href="https://www.addtoany.com/share")
script(async src="https://static.addtoany.com/menu/page.js")

View File

@@ -1,7 +0,0 @@
.post_share
if theme.addThis.enable
include ./add-this.pug
else if theme.sharejs && theme.sharejs.enable
include ./share-js.pug
else if theme.addtoany.enable
include ./addtoany.pug

View File

@@ -1,4 +0,0 @@
if (theme.sharejs && theme.sharejs.enable)
.social-share(data-image= page.cover|| theme.avatar data-sites= theme.sharejs.sites)
link(rel="stylesheet" href="https://cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/css/share.min.css")
script(src="https://cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/js/social-share.min.js")

View File

@@ -1,20 +1,18 @@
#sidebar
#menu-mask
#sidebar-menus
.avatar-img.is-center
img(src=url_for(theme.avatar.img) onerror=`onerror=null;src='${theme.error_img.flink}'` alt="avatar")
.sidebar-site-data.site-data.is-center
a(href=url_for(config.archive_dir) + '/')
.headline= _p('aside.articles')
.length-num= site.posts.length
a(href=url_for(config.tag_dir) + '/' )
.headline= _p('aside.tags')
.length-num= site.tags.length
a(href=url_for(config.category_dir) + '/')
.headline= _p('aside.categories')
.length-num= site.categories.length
- var sidebar_class = theme.auto_open_sidebar.enable === true ? 'auto_open' : ''
#sidebar(class=sidebar_class)
- const showToc = is_post() && page.toc != false && theme.toc.enable
-
let tocNumber
if (page.toc_number !== undefined) tocNumber = page.toc_number
else if (theme.toc.number !== undefined) tocNumber = theme.toc.number
else tocNumber = true
-
if(showToc)
.sidebar-toc
div.sidebar-toc__title= _p('sidebar.catalog')
div.sidebar-toc__progress
span.progress-notice= _p('sidebar.have_read')
span.progress-num 0
span.progress-percentage %
div.sidebar-toc__progress-bar
div.sidebar-toc__content!=toc(page.content, {list_number: tocNumber})
hr.custom-hr
!=partial('includes/header/menu_item', {}, {cache: true})

View File

@@ -0,0 +1,15 @@
script.
(() => {
const abcjsInit = () => {
const abcjsFn = () => {
document.querySelectorAll(".abc-music-sheet").forEach(ele => {
ABCJS.renderAbc(ele, ele.innerHTML, {responsive: 'resize'})
})
}
typeof ABCJS === 'object' ? abcjsFn()
: getScript('!{url_for(theme.asset.abcjs_basic_js)}').then(abcjsFn)
}
window.pjax ? abcjsInit() : window.addEventListener('load', abcjsInit)
})()

View File

@@ -0,0 +1,6 @@
if theme.abcjs && theme.abcjs.enable
if theme.abcjs.per_page
if is_post() || is_page()
include ./abcjs.pug
else if page.abcjs
include ./abcjs.pug

View File

@@ -0,0 +1,3 @@
link(rel='stylesheet' href=url_for(theme.asset.aplayer_css) media="print" onload="this.media='all'")
script(src=url_for(theme.asset.aplayer_js))
script(src=url_for(theme.asset.meting_js))

View File

@@ -1 +0,0 @@
script(id="ribbon" src=url_for('https://cdn.jsdelivr.net/gh/jerryc127/CDN@latest/js/piao.js'))

View File

@@ -1,3 +0,0 @@
script(id="ribbon" src=url_for('/js/third-party/canvas-ribbon.js') size=theme.canvas_ribbon.size
alpha=theme.canvas_ribbon.alpha zIndex=theme.canvas_ribbon.zIndex data-click=`${theme.canvas_ribbon.click_to_change}`)

View File

@@ -0,0 +1,31 @@
- const { server, site } = theme.artalk
script.
(() => {
const getArtalkCount = async() => {
try {
const eleGroup = document.querySelectorAll('#recent-posts .artalk-count')
const keyArray = Array.from(eleGroup).map(i => i.getAttribute('data-page-key'))
const headerList = {
method: 'GET',
}
const searchParams = new URLSearchParams({
'site_name': '!{site}',
'page_keys': keyArray
})
const res = await fetch(`!{server}/api/v2/stats/page_comment?${searchParams}`, headerList)
const result = await res.json()
keyArray.forEach((key, index) => {
eleGroup[index].textContent = result.data[key] || 0
})
} catch (err) {
console.error(err)
}
}
window.pjax ? getArtalkCount() : window.addEventListener('load', getArtalkCount)
})()

View File

@@ -0,0 +1,25 @@
- const { shortname, apikey } = theme.disqus
script.
(() => {
const getCount = async () => {
try {
const eleGroup = document.querySelectorAll('#recent-posts .disqus-count')
const cleanedLinks = Array.from(eleGroup).map(i => `thread:link=${i.href.replace(/#post-comment$/, '')}`);
const res = await fetch(`https://disqus.com/api/3.0/threads/set.json?forum=!{shortname}&api_key=!{apikey}&${cleanedLinks.join('&')}`,{
method: 'GET'
})
const result = await res.json()
eleGroup.forEach(i => {
const cleanedLink = i.href.replace(/#post-comment$/, '')
const urlData = result.response.find(data => data.link === cleanedLink) || { posts: 0 }
i.textContent = urlData.posts
})
} catch (err) {
console.error(err)
}
}
window.pjax ? getCount() : window.addEventListener('load', getCount)
})()

View File

@@ -0,0 +1,18 @@
- const fbSDKVer = 'v16.0'
- const fbSDK = theme.messenger.enable ? `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk/xfbml.customerchat.js#xfbml=1&version=${fbSDKVer}` : `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk.js#xfbml=1&version=${fbSDKVer}`
script.
(()=>{
function loadFBComment () {
if (typeof FB === 'object') FB.XFBML.parse(document.getElementById('recent-posts'))
else {
let ele = document.createElement('script')
ele.setAttribute('src','!{fbSDK}')
ele.setAttribute('async', 'true')
ele.setAttribute('defer', 'true')
ele.setAttribute('crossorigin', 'anonymous')
document.body.appendChild(ele)
}
}
window.pjax ? loadFBComment() : window.addEventListener('load', loadFBComment)
})()

View File

@@ -0,0 +1,16 @@
case theme.comments.use[0]
when 'Twikoo'
include ./twikoo.pug
when 'Disqus'
when 'Disqusjs'
include ./disqus.pug
when 'Valine'
include ./valine.pug
when 'Waline'
include ./waline.pug
when 'Facebook Comments'
include ./fb.pug
when 'Remark42'
include ./remark42.pug
when 'Artalk'
include ./artalk.pug

View File

@@ -0,0 +1,18 @@
- const { host, siteId, option } = theme.remark42
script.
(()=>{
window.remark_config = Object.assign({
host: '!{host}',
site_id: '!{siteId}',
},!{JSON.stringify(option)})
function getCount () {
const s = document.createElement('script')
s.src = remark_config.host + '/web/counter.js'
s.defer = true
document.head.appendChild(s)
}
window.pjax ? getCount() : window.addEventListener('load', getCount)
})()

View File

@@ -0,0 +1,37 @@
script.
(() => {
const getCommentUrl = () => {
const eleGroup = document.querySelectorAll('#recent-posts .article-title')
let urlArray = []
eleGroup.forEach(i=>{
urlArray.push(i.getAttribute('href'))
})
return urlArray
}
const getCount = () => {
const runTwikoo = () => {
twikoo.getCommentsCount({
envId: '!{theme.twikoo.envId}',
region: '!{theme.twikoo.region}',
urls: getCommentUrl(),
includeReply: false
}).then(function (res) {
document.querySelectorAll('#recent-posts .twikoo-count').forEach((item,index) => {
item.textContent = res[index].count
})
}).catch(function (err) {
console.log(err)
})
}
if (typeof twikoo === 'object') {
runTwikoo()
} else {
getScript('!{url_for(theme.asset.twikoo)}').then(runTwikoo)
}
}
window.pjax ? getCount() : window.addEventListener('load', getCount)
})()

View File

@@ -0,0 +1,20 @@
script.
(() => {
function loadValine () {
function initValine () {
let initData = {
el: '#vcomment',
appId: '#{theme.valine.appId}',
appKey: '#{theme.valine.appKey}',
serverURLs: '#{theme.valine.serverURLs}'
}
const valine = new Valine(initData)
}
if (typeof Valine === 'function') initValine()
else getScript('!{url_for(theme.asset.valine)}').then(initValine)
}
window.pjax ? loadValine() : window.addEventListener('load', loadValine)
})()

View File

@@ -0,0 +1,21 @@
- const serverURL = theme.waline.serverURL.replace(/\/$/, '')
script.
(() => {
async function loadWaline () {
try {
const eleGroup = document.querySelectorAll('#recent-posts .waline-comment-count')
const keyArray = Array.from(eleGroup).map(i => i.getAttribute('data-path'))
const res = await fetch(`!{serverURL}/api/comment?type=count&url=${keyArray}`, { method: 'GET' })
const result = await res.json()
result.data.forEach((count, index) => {
eleGroup[index].textContent = count
})
} catch (err) {
console.error(err)
}
}
window.pjax ? loadWaline() : window.addEventListener('load', loadWaline)
})()

View File

@@ -0,0 +1,50 @@
//- https://chatra.io/help/api/
script.
(() => {
const isChatBtn = !{theme.chat_btn}
const isChatHideShow = !{theme.chat_hide_show}
if (isChatBtn) {
const close = () => {
Chatra('minimizeWidget')
Chatra('hide')
}
const open = () => {
Chatra('openChat', true)
Chatra('show')
}
window.ChatraSetup = {
startHidden: true
}
window.chatBtnFn = () => {
const isShow = document.getElementById('chatra').classList.contains('chatra--expanded')
isShow ? close() : open()
}
} else if (isChatHideShow) {
window.chatBtn = {
hide: () => {
Chatra('hide')
},
show: () => {
Chatra('show')
}
}
}
(function(d, w, c) {
w.ChatraID = '#{theme.chatra.id}'
var s = d.createElement('script')
w[c] = w[c] || function() {
(w[c].q = w[c].q || []).push(arguments)
}
s.async = true
s.src = 'https://call.chatra.io/chatra.js'
if (d.head) d.head.appendChild(s)
})(document, window, 'Chatra')
})()

View File

@@ -0,0 +1,45 @@
script.
(() => {
window.$crisp = [];
window.CRISP_WEBSITE_ID = "!{theme.crisp.website_id}";
(function () {
d = document;
s = d.createElement("script");
s.src = "https://client.crisp.chat/l.js";
s.async = 1;
d.getElementsByTagName("head")[0].appendChild(s);
})();
$crisp.push(["safe", true])
const isChatBtn = !{theme.chat_btn}
const isChatHideShow = !{theme.chat_hide_show}
if (isChatBtn) {
const open = () => {
$crisp.push(["do", "chat:show"])
$crisp.push(["do", "chat:open"])
}
const close = () => {
$crisp.push(["do", "chat:hide"])
}
close()
$crisp.push(["on", "chat:closed", function() {
close()
}])
window.chatBtnFn = () => {
$crisp.is("chat:visible") ? close() : open()
}
} else if (isChatHideShow) {
window.chatBtn = {
hide: () => {
$crisp.push(["do", "chat:hide"])
},
show: () => {
$crisp.push(["do", "chat:show"])
}
}
}
})()

View File

@@ -0,0 +1,40 @@
//- https://guide.daocloud.io/daovoice/javascript-api-5869833.html
script.
(() => {
(function(i,s,o,g,r,a,m){i["DaoVoiceObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;a.charset="utf-8";m.parentNode.insertBefore(a,m)})(window,document,"script",('https:' == document.location.protocol ? 'https:' : 'http:') + "//widget.daovoice.io/widget/!{theme.daovoice.app_id}.js","daovoice")
const isChatBtn = !{theme.chat_btn}
const isChatHideShow = !{theme.chat_hide_show}
daovoice('init', {
app_id: '!{theme.daovoice.app_id}',},{
launcher: {
disableLauncherIcon: isChatBtn
},
});
daovoice('update');
if (isChatBtn) {
window.chatBtnFn = () => {
const isShow = document.getElementById('daodream-messenger').classList.contains('daodream-messenger-active')
isShow ? daovoice('hide') : daovoice('show')
}
} else if (isChatHideShow) {
window.chatBtn = {
hide: () => {
daovoice('update', {},{
launcher: {
disableLauncherIcon: true
}
})
},
show: () => {
daovoice('update', {}, {
launcher: {
disableLauncherIcon: false
}
})
}
}
}
})()

View File

@@ -0,0 +1,10 @@
if theme.chatra && theme.chatra.enable
include ./chatra.pug
else if theme.tidio && theme.tidio.enable
include ./tidio.pug
else if theme.daovoice && theme.daovoice.enable
include ./daovoice.pug
else if theme.crisp && theme.crisp.enable
include ./crisp.pug
else if theme.messenger && theme.messenger.enable
include ./messenger.pug

View File

@@ -0,0 +1,44 @@
- let { pageID, lang } = theme.messenger
- lang = theme.comments.use && theme.comments.use.includes('Facebook Comments') ? theme.facebook_comments.lang : lang
#fb-customer-chat.fb-customerchat(page_id=pageID attribution='biz_inbox')
script.
(() => {
document.getElementById('fb-root') ? '' : document.body.insertAdjacentHTML('afterend', '<div id="fb-root"></div>')
window.fbAsyncInit = function() {
FB.init({
xfbml: true,
version: 'v16.0'
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = 'https://connect.facebook.net/!{lang}/sdk/xfbml.customerchat.js';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
const isChatBtn = !{theme.chat_btn}
const isChatHideShow = !{theme.chat_hide_show}
if (isChatBtn) {
window.chatBtnFn = () => {
const isShow = document.querySelector('.fb_customer_chat_bounce_in_v2')
isShow ? FB.CustomerChat.hide() : FB.CustomerChat.show()
}
} else if (isChatHideShow) {
window.chatBtn = {
hide: () => {
FB.CustomerChat.hide()
},
show: () => {
FB.CustomerChat.show(false)
}
}
}
})()

View File

@@ -0,0 +1,45 @@
script(src=`//code.tidio.co/${theme.tidio.public_key}.js` async)
script.
(() => {
const isChatBtn = !{theme.chat_btn}
const isChatHideShow = !{theme.chat_hide_show}
if (isChatBtn) {
let isShow = false
const close = () => {
window.tidioChatApi.hide()
isShow = false
}
const open = () => {
window.tidioChatApi.open()
window.tidioChatApi.show()
isShow = true
}
const onTidioChatApiReady = () => {
window.tidioChatApi.hide()
window.tidioChatApi.on("close", close)
}
if (window.tidioChatApi) {
window.tidioChatApi.on("ready", onTidioChatApiReady)
} else {
document.addEventListener("tidioChat-ready", onTidioChatApiReady)
}
window.chatBtnFn = () => {
if (!window.tidioChatApi) return
isShow ? close() : open()
}
} else if (isChatHideShow) {
window.chatBtn = {
hide: () => {
window.tidioChatApi && window.tidioChatApi.hide()
},
show: () => {
window.tidioChatApi && window.tidioChatApi.show()
}
}
}
})()

View File

@@ -0,0 +1,55 @@
- const { server, site, option } = theme.artalk
- const { use, lazyload } = theme.comments
script.
(() => {
let artalkItem = null
const initArtalk = () => {
artalkItem = Artalk.init(Object.assign({
el: '#artalk-wrap',
server: '!{server}',
site: '!{site}',
pageKey: location.pathname,
darkMode: document.documentElement.getAttribute('data-theme') === 'dark',
},!{JSON.stringify(option)}))
if (GLOBAL_CONFIG.lightbox === 'null') return
artalkItem.on('list-loaded', () => {
artalkItem.ctx.get('list').getCommentNodes().forEach(comment => {
const $content = comment.getRender().$content
btf.loadLightbox($content.querySelectorAll('img:not([atk-emoticon])'))
})
})
const destroyArtalk = () => {
artalkItem.destroy()
}
btf.addGlobalFn('pjax', destroyArtalk, 'destroyArtalk')
}
const loadArtalk = async () => {
if (typeof Artalk === 'object') initArtalk()
else {
await getCSS('!{theme.asset.artalk_css}')
await getScript('!{theme.asset.artalk_js}')
initArtalk()
}
}
const artalkChangeMode = theme => {
const artalkWrap = document.getElementById('artalk-wrap')
if (!(artalkWrap && artalkWrap.children.length)) return
const isDark = theme === 'dark'
artalkItem.setDarkMode(isDark)
}
btf.addGlobalFn('themeChange', artalkChangeMode, 'artalk')
if ('!{use[0]}' === 'Artalk' || !!{lazyload}) {
if (!{lazyload}) btf.loadComment(document.getElementById('artalk-wrap'), loadArtalk)
else loadArtalk()
} else {
window.loadOtherComment = loadArtalk
}
})()

View File

@@ -0,0 +1,59 @@
- const disqusPageTitle = page.title.replace(/'/ig,"\\'")
- const { shortname, apikey } = theme.disqus
- const { use, lazyload, count } = theme.comments
script.
(() => {
const disqus_config = function () {
this.page.url = '!{ page.permalink }'
this.page.identifier = '!{ url_for(page.path) }'
this.page.title = '!{ disqusPageTitle }'
}
const disqusReset = () => {
window.DISQUS && window.DISQUS.reset({
reload: true,
config: disqus_config
})
}
btf.addGlobalFn('themeChange', disqusReset, 'disqus')
const loadDisqus = () =>{
if (window.DISQUS) disqusReset()
else {
const script = document.createElement('script')
script.src = 'https://!{shortname}.disqus.com/embed.js'
script.setAttribute('data-timestamp', +new Date())
document.head.appendChild(script)
}
}
const getCount = async() => {
try {
const eleGroup = document.querySelector('#post-meta .disqus-comment-count')
if (!eleGroup) return
const cleanedLinks = eleGroup.href.replace(/#post-comment$/, '')
const res = await fetch(`https://disqus.com/api/3.0/threads/set.json?forum=!{shortname}&api_key=!{apikey}&thread:link=${cleanedLinks}`,{
method: 'GET'
})
const result = await res.json()
const count = result.response.length ? result.response[0].posts : 0
eleGroup.textContent = count
} catch (err) {
console.error(err)
}
}
if ('!{use[0]}' === 'Disqus' || !!{lazyload}) {
if (!{lazyload}) btf.loadComment(document.getElementById('disqus_thread'), loadDisqus)
else {
loadDisqus()
!{ count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : '' }
}
} else {
window.loadOtherComment = loadDisqus
}
})()

View File

@@ -0,0 +1,64 @@
- let disqusjsPageTitle = page.title.replace(/'/ig,"\\'")
- const { shortname:dqShortname, apikey:dqApikey, option:dqOption } = theme.disqusjs
script.
(() => {
const initDisqusjs = () => {
window.disqusjs = null
disqusjs = new DisqusJS(Object.assign({
shortname: '!{dqShortname}',
identifier: '!{ url_for(page.path) }',
url: '!{ page.permalink }',
title: '!{ disqusjsPageTitle }',
apikey: '!{dqApikey}',
},!{JSON.stringify(dqOption)}))
disqusjs.render(document.getElementById('disqusjs-wrap'))
}
const themeChange = () => {
const ele = document.getElementById('disqus_thread')
if(!ele) return
disqusjs.destroy()
initDisqusjs()
}
btf.addGlobalFn('themeChange', themeChange, 'disqusjs')
const loadDisqusjs = async() => {
if (window.disqusJsLoad) initDisqusjs()
else {
await getCSS('!{url_for(theme.asset.disqusjs_css)}')
await getScript('!{url_for(theme.asset.disqusjs)}')
initDisqusjs()
window.disqusJsLoad = true
}
}
const getCount = async() => {
try {
const eleGroup = document.querySelector('#post-meta .disqusjs-comment-count')
if (!eleGroup) return
const cleanedLinks = eleGroup.href.replace(/#post-comment$/, '')
const res = await fetch(`https://disqus.com/api/3.0/threads/set.json?forum=!{dqShortname}&api_key=!{dqApikey}&thread:link=${cleanedLinks}`,{
method: 'GET'
})
const result = await res.json()
const count = result.response.length ? result.response[0].posts : 0
eleGroup.textContent = count
} catch (err) {
console.error(err)
}
}
if ('!{theme.comments.use[0]}' === 'Disqusjs' || !!{theme.comments.lazyload}) {
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('disqusjs-wrap'), loadDisqusjs)
else {
loadDisqusjs()
!{ theme.comments.count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : '' }
}
} else {
window.loadOtherComment = loadDisqusjs
}
})()

View File

@@ -0,0 +1,46 @@
- const fbSDKVer = 'v16.0'
- const fbSDK = theme.messenger.enable ? `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk/xfbml.customerchat.js#xfbml=1&version=${fbSDKVer}` : `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk.js#xfbml=1&version=${fbSDKVer}`
script.
(()=>{
const loadFBComment = () => {
document.getElementById('fb-root') ? '' : document.body.insertAdjacentHTML('afterend', '<div id="fb-root"></div>')
const themeNow = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'
const $fbComment = document.getElementsByClassName('fb-comments')[0]
$fbComment.setAttribute('data-colorscheme',themeNow)
$fbComment.setAttribute('data-href', '!{urlNoIndex(page.permalink)}')
if (typeof FB === 'object') {
FB.XFBML.parse(document.getElementsByClassName('post-meta-commentcount')[0])
FB.XFBML.parse(document.getElementById('post-comment'))
}
else {
let ele = document.createElement('script')
ele.setAttribute('src','!{fbSDK}')
ele.setAttribute('async', 'true')
ele.setAttribute('defer', 'true')
ele.setAttribute('crossorigin', 'anonymous')
ele.setAttribute('id', 'facebook-jssdk')
document.getElementById('fb-root').insertAdjacentElement('afterbegin',ele)
}
}
const fbModeChange = theme => {
const $fbComment = document.getElementsByClassName('fb-comments')[0]
if ($fbComment && typeof FB === 'object') {
$fbComment.setAttribute('data-colorscheme',theme)
FB.XFBML.parse(document.getElementById('post-comment'))
}
}
btf.addGlobalFn('themeChange', fbModeChange, 'facebook_comments')
if ('!{theme.comments.use[0]}' === 'Facebook Comments' || !!{theme.comments.lazyload}) {
if (!{theme.comments.lazyload}) btf.loadComment(document.querySelector('#post-comment .fb-comments'), loadFBComment)
else loadFBComment()
} else {
window.loadOtherComment = loadFBComment
}
})()

View File

@@ -0,0 +1,54 @@
- const { repo, repo_id, category_id, theme:themes, option } = theme.giscus
- const giscusUrl = theme.asset.giscus || 'https://giscus.app/client.js'
- const giscusOriginUrl = new URL(giscusUrl).origin
- const { use, lazyload } = theme.comments
script.
(()=>{
const getGiscusTheme = theme => {
return theme === 'dark' ? '!{themes.dark}' : '!{themes.light}'
}
const loadGiscus = () => {
const config = Object.assign({
src: '!{giscusUrl}',
'data-repo': '!{repo}',
'data-repo-id': '!{repo_id}',
'data-category-id': '!{category_id}',
'data-mapping': 'pathname',
'data-theme': getGiscusTheme(document.documentElement.getAttribute('data-theme')),
'data-reactions-enabled': '1',
crossorigin: 'anonymous',
async: true
},!{JSON.stringify(option)})
const ele = document.createElement('script')
for (let key in config) {
ele.setAttribute(key, config[key])
}
document.getElementById('giscus-wrap').appendChild(ele)
}
const changeGiscusTheme = theme => {
const sendMessage = message => {
const iframe = document.querySelector('iframe.giscus-frame')
if (!iframe) return
iframe.contentWindow.postMessage({ giscus: message }, '!{giscusOriginUrl}')
}
sendMessage({
setConfig: {
theme: getGiscusTheme(theme)
}
});
}
btf.addGlobalFn('themeChange', changeGiscusTheme, 'giscus')
if ('!{use[0]}' === 'Giscus' || !!{lazyload}) {
if (!{lazyload}) btf.loadComment(document.getElementById('giscus-wrap'), loadGiscus)
else loadGiscus()
} else {
window.loadOtherComment= loadGiscus
}
})()

View File

@@ -0,0 +1,44 @@
- const { client_id, client_secret, repo, owner, admin, option } = theme.gitalk
script.
(() => {
const initGitalk = () => {
const gitalk = new Gitalk(Object.assign({
clientID: '!{client_id}',
clientSecret: '!{client_secret}',
repo: '!{repo}',
owner: '!{owner}',
admin: ['!{admin}'],
id: '!{md5(page.path)}',
updateCountCallback: commentCount
},!{JSON.stringify(option)}))
gitalk.render('gitalk-container')
}
const loadGitalk = async() => {
if (typeof Gitalk === 'function') initGitalk()
else {
await getCSS('!{url_for(theme.asset.gitalk_css)}')
await getScript('!{url_for(theme.asset.gitalk)}')
initGitalk()
}
}
const commentCount = n => {
const isCommentCount = document.querySelector('#post-meta .gitalk-comment-count')
if (isCommentCount) {
isCommentCount.textContent= n
}
}
if ('!{theme.comments.use[0]}' === 'Gitalk' || !!{theme.comments.lazyload}) {
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('gitalk-container'), loadGitalk)
else loadGitalk()
} else {
window.loadOtherComment = loadGitalk
}
})()

View File

@@ -0,0 +1,46 @@
- let defaultComment = theme.comments.use[0]
hr.custom-hr
#post-comment
.comment-head
.comment-headline
i.fas.fa-comments.fa-fw
span= ' ' + _p('comment')
if theme.comments.use.length > 1
.comment-switch
span.first-comment=defaultComment
span#switch-btn
span.second-comment=theme.comments.use[1]
.comment-wrap
each name in theme.comments.use
div
case name
when 'Disqus'
#disqus_thread
when 'Valine'
#vcomment.vcomment
when 'Disqusjs'
#disqusjs-wrap
when 'Livere'
#lv-container(data-id="city" data-uid=theme.livere.uid)
when 'Gitalk'
#gitalk-container
when 'Utterances'
#utterances-wrap
when 'Twikoo'
#twikoo-wrap
when 'Waline'
#waline-wrap
when 'Giscus'
#giscus-wrap
when 'Facebook Comments'
.fb-comments(data-colorscheme = theme.display_mode === 'dark' ? 'dark' : 'light'
data-numposts= theme.facebook_comments.pageSize || 10
data-order-by= theme.facebook_comments.order_by || 'social'
data-width="100%")
when 'Remark42'
#remark42
when 'Artalk'
#artalk-wrap

View File

@@ -0,0 +1,26 @@
each name in theme.comments.use
case name
when 'Valine'
!=partial('includes/third-party/comments/valine', {}, {cache: true})
when 'Disqus'
include ./disqus.pug
when 'Disqusjs'
include ./disqusjs.pug
when 'Livere'
!=partial('includes/third-party/comments/livere', {}, {cache: true})
when 'Gitalk'
include ./gitalk.pug
when 'Utterances'
!=partial('includes/third-party/comments/utterances', {}, {cache: true})
when 'Twikoo'
!=partial('includes/third-party/comments/twikoo', {}, {cache: true})
when 'Waline'
!=partial('includes/third-party/comments/waline', {}, {cache: true})
when 'Giscus'
!=partial('includes/third-party/comments/giscus', {}, {cache: true})
when 'Facebook Comments'
include ./facebook_comments.pug
when 'Remark42'
!=partial('includes/third-party/comments/remark42', {}, {cache: true})
when 'Artalk'
!=partial('includes/third-party/comments/artalk', {}, {cache: true})

View File

@@ -0,0 +1,25 @@
- const { use, lazyload } = theme.comments
script.
(()=>{
const loadLivere = () => {
if (typeof LivereTower === 'object') window.LivereTower.init()
else {
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; }
j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;
e.parentNode.insertBefore(j, e);
})(document, 'script');
}
}
if ('!{use[0]}' === 'Livere' || !!{lazyload}) {
if (!{lazyload}) btf.loadComment(document.getElementById('lv-container'), loadLivere)
else loadLivere()
} else {
window.loadOtherComment = loadLivere
}
})()

Some files were not shown because too many files have changed in this diff Show More