hexo-theme-solitude 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +1 -1
  3. package/README_EN.md +1 -1
  4. package/_config.yml +68 -3
  5. package/languages/en-US.yml +32 -2
  6. package/languages/zh-CN.yml +33 -2
  7. package/languages/zh-TW.yml +147 -0
  8. package/layout/includes/console.pug +4 -0
  9. package/layout/includes/footer.pug +1 -1
  10. package/layout/includes/head/config.pug +16 -3
  11. package/layout/includes/inject/body.pug +18 -9
  12. package/layout/includes/keyboard.pug +65 -0
  13. package/layout/includes/layout.pug +8 -0
  14. package/layout/includes/page/album.pug +39 -0
  15. package/layout/includes/page/gallery.pug +11 -0
  16. package/layout/includes/page/links.pug +2 -0
  17. package/layout/includes/page/moment.pug +28 -0
  18. package/layout/includes/page/music.pug +1 -4
  19. package/layout/includes/page/says.pug +1 -3
  20. package/layout/includes/widgets/home/bb/json.pug +2 -1
  21. package/layout/includes/widgets/home/bb/local.pug +2 -3
  22. package/layout/includes/widgets/home/bb/memos.pug +2 -1
  23. package/layout/includes/widgets/page/about/authorinfo.pug +1 -1
  24. package/layout/includes/widgets/page/about/hobbies.pug +2 -2
  25. package/layout/includes/widgets/page/about/motto.pug +17 -15
  26. package/layout/includes/widgets/page/about/skillsinfo.pug +38 -36
  27. package/layout/includes/widgets/page/about/tenyear.pug +1 -1
  28. package/layout/includes/widgets/page/moments/angle.pug +19 -0
  29. package/layout/includes/widgets/page/says/json.pug +3 -3
  30. package/layout/includes/widgets/page/says/local.pug +2 -2
  31. package/layout/includes/widgets/rightside/index.pug +33 -22
  32. package/layout/includes/widgets/third-party/search/algolia-search.pug +20 -15
  33. package/layout/includes/widgets/third-party/search/local-search.pug +3 -0
  34. package/layout/page.pug +6 -0
  35. package/package.json +1 -1
  36. package/plugins.yml +12 -4
  37. package/scripts/event/cdn.js +5 -0
  38. package/scripts/event/init.js +18 -19
  39. package/scripts/event/page.js +0 -5
  40. package/scripts/filter/checkThemeConfig.js +23 -7
  41. package/scripts/helper/related_post.js +0 -6
  42. package/scripts/helper/stylus.js +8 -3
  43. package/source/css/_global/index.styl +1 -5
  44. package/source/css/_layout/basic.styl +0 -1
  45. package/source/css/_layout/index.styl +54 -34
  46. package/source/css/_mode/index.styl +6 -1
  47. package/source/css/_page/about/index.styl +26 -16
  48. package/source/css/_page/gallery/index.styl +99 -0
  49. package/source/css/_page/index.styl +5 -1
  50. package/source/css/_page/moment.styl +4 -2
  51. package/source/css/_widgets/_comment/twikoo.styl +21 -18
  52. package/source/css/_widgets/_mixins/keyboard.styl +59 -0
  53. package/source/css/_widgets/_search/algolia-search.styl +37 -16
  54. package/source/css/_widgets/_search/local-search.styl +18 -2
  55. package/source/css/_widgets/_tags/link.styl +1 -1
  56. package/source/css/_widgets/index.styl +4 -0
  57. package/source/css/index.styl +0 -1
  58. package/source/js/covercolor/api.js +10 -6
  59. package/source/js/covercolor/local.js +88 -13
  60. package/source/js/main.js +15 -1
  61. package/source/js/rightside.js +159 -342
  62. package/source/js/search/algolia.js +4 -2
  63. package/source/js/search/local.js +3 -1
  64. package/source/js/tw_cn.js +76 -0
  65. package/source/js/utils.js +1 -1
  66. package/layout/includes/page/not_configured.pug +0 -18
  67. package/scripts/helper/cdn.js +0 -12
  68. package/source/img/avatar.png +0 -0
@@ -0,0 +1,11 @@
1
+ include ../widgets/page/banner
2
+
3
+ - var gallery = site.data.gallery.gallery
4
+
5
+ if theme.album.enable && gallery
6
+ #gallery
7
+ each item in gallery
8
+ .gallery-item(onclick="pjax.loadUrl('/" + item.album + "/')")
9
+ img.cover(src=item.cover)
10
+ span.title= item.class_name
11
+ span.desc= item.descr
@@ -1,5 +1,7 @@
1
1
  .flink#banners
2
2
  include ../widgets/page/links/banner
3
+ if theme.moments.angle
4
+ include ../widgets/page/moments/angle
3
5
  .flink#article-container
4
6
  each data in site.data.links.links
5
7
  h2= data.class_name + " (" + data.link_list.length + ")"
@@ -0,0 +1,28 @@
1
+ include ../widgets/page/banner
2
+ if theme.moments.angle
3
+ include ../widgets/page/moments/angle
4
+
5
+ .title-h2-a
6
+ .title-h2-a-left
7
+ h2(style="padding-top: 0;margin:0.6rem 0 0.6rem;") 🐟 鱼塘
8
+ .title-h2-a-right
9
+ span 以下内容自动生成,未经过审核
10
+
11
+ div#hexo-circle-of-friends-root
12
+ script.
13
+ let UserConfig = {
14
+ // 填写你的api地址
15
+ private_api_url: '!{theme.moments.api}',
16
+ // 默认加载文章数
17
+ page_init_number: !{theme.moments.page_init_number},
18
+ // 点击加载更多时,一次最多加载几篇文章,默认10
19
+ page_turning_number: !{theme.moments.page_turning_number},
20
+ // 头像加载失败时,默认头像地址
21
+ error_img: '!{theme.moments.error_img}',
22
+ // 进入页面时第一次的排序规则
23
+ sort_rule: '!{theme.moments.sort_rule}',
24
+ // 本地文章缓存数据过期时间(天)
25
+ expire_days: !{theme.moments.expire_days},
26
+ }
27
+ script(src=url_for(theme.moments.appjs))
28
+ script(src=url_for(theme.moments.bundlejs))
@@ -13,7 +13,4 @@ if theme.music.enable
13
13
  volume: #{theme.music.volume},
14
14
  mutex: #{theme.music.mutex}
15
15
  }
16
- }
17
-
18
- else
19
- include not_configured
16
+ }
@@ -14,6 +14,4 @@ if theme.says.enable
14
14
  if theme.says.strip === -1
15
15
  | - 已展开所有短文 -
16
16
  else
17
- | - 只展示最近 #{theme.says.strip} 条短文 -
18
- else
19
- include ./not_configured.pug
17
+ | - 只展示最近 #{theme.says.strip} 条短文 -
@@ -17,6 +17,7 @@ script.
17
17
  return `<div class="li-style swiper-slide">${content}</div>`;
18
18
  }).join('');
19
19
 
20
- sco.initbbtalk();
20
+ document.addEventListener('DOMContentLoaded', sco.initbbtalk)
21
+ document.addEventListener('pjax:complete', sco.initbbtalk)
21
22
  }).catch(err => console.log('bbtime |', err));
22
23
  }();
@@ -12,6 +12,5 @@ each item, i in site.data.essay.essay_list.slice(0, 10)
12
12
  if item.link
13
13
  i.scoicon.sco-links
14
14
  script.
15
- document.addEventListener('DOMContentLoaded', function () {
16
- sco.initbbtalk()
17
- })
15
+ document.addEventListener('DOMContentLoaded', sco.initbbtalk)
16
+ document.addEventListener('pjax:complete', sco.initbbtalk)
@@ -19,7 +19,8 @@ script.
19
19
 
20
20
  return `<div class="li-style swiper-slide">${content+aplayer+video+imageBox+link}</div>`
21
21
  }).join(' ')
22
- sco.initbbtalk()
22
+ document.addEventListener('DOMContentLoaded', sco.initbbtalk)
23
+ document.addEventListener('pjax:complete', sco.initbbtalk)
23
24
  })
24
25
  .catch(error => console.error('bbtime | ', error));
25
26
  }()
@@ -10,4 +10,4 @@ if authorinfo
10
10
  .author-tag-right
11
11
  each tag in authorinfo.rightTags
12
12
  span.author-tag= tag
13
- .author-title= authorinfo.title
13
+ .author-title= site.data.about.title
@@ -1,5 +1,5 @@
1
- - var game1 = game1
2
- - var game2 = game2
1
+ - var game1 = site.data.about.game1
2
+ - var game2 = site.data.about.game2
3
3
 
4
4
  if game1 || game2
5
5
  .author-content
@@ -3,18 +3,20 @@
3
3
 
4
4
  if motto || expertise
5
5
  .author-content
6
- .author-content-item.maxim
7
- .author-content-item-tips= motto.title
8
- span.maxim-title
9
- span= motto.prefix
10
- span= motto.content
11
- .author-content-item.buff
12
- .card-content
13
- .author-content-item-tips= expertise.title
14
- span.buff-title
15
- span
16
- | #{expertise.prefix}
17
- span.inline-word= expertise.specialist
18
- span
19
- | #{expertise.content}
20
- span.inline-word= expertise.level
6
+ if motto
7
+ .author-content-item.maxim
8
+ .author-content-item-tips= motto.title
9
+ span.maxim-title
10
+ span= motto.prefix
11
+ span= motto.content
12
+ if expertise
13
+ .author-content-item.buff
14
+ .card-content
15
+ .author-content-item-tips= expertise.title
16
+ span.buff-title
17
+ span
18
+ | #{expertise.prefix}
19
+ span.inline-word= expertise.specialist
20
+ span
21
+ | #{expertise.content}
22
+ span.inline-word= expertise.level
@@ -1,40 +1,42 @@
1
1
  - var skills = site.data.about.skills
2
2
  - var careers = site.data.about.careers
3
3
 
4
- if skills || caches
4
+ if skills || careers
5
5
  .author-content
6
- .author-content-item.skills
7
- .card-content
8
- .author-content-item-tips= skills.title
9
- span.author-content-item-title= skills.subtitle
10
- .skills-style-group
11
- .tags-group-all
12
- .tags-group-wrapper
13
- each i in [1,2]
14
- - var pair = []
15
- each tag, index in skills.tags
16
- - pair.push(tag)
17
- if pair.length === 2 || index === skills.tags.length - 1
18
- .tags-group-icon-pair
19
- each item in pair
20
- .tags-group-icon(style=`background:${item.color}`)
21
- img(src=item.icon, title=item.title)
22
- - pair = []
23
- .skills-list
24
- each tag in skills.tags
25
- .skill-info
26
- .skill-icon(style=`background:${tag.color}`)
27
- img(src=tag.icon, title=tag.title)
28
- .skill-name
29
- span= tag.title
30
- .etc ...
31
- .author-content-item.careers
32
- .card-content
33
- .author-content-item-tips= careers.title
34
- span.author-content-item-title= careers.subtitle
35
- .careers-group
36
- each item in careers.items
37
- .careers-item
38
- .circle(style=`background:${item.color}`)
39
- .name= `${item.school}, ${item.major}`
40
- img.author-content-img(src=careers.image, alt=careers.title)
6
+ if skills
7
+ .author-content-item.skills
8
+ .card-content
9
+ .author-content-item-tips= skills.title
10
+ span.author-content-item-title= skills.subtitle
11
+ .skills-style-group
12
+ .tags-group-all
13
+ .tags-group-wrapper
14
+ each i in [1,2]
15
+ - var pair = []
16
+ each tag, index in skills.tags
17
+ - pair.push(tag)
18
+ if pair.length === 2 || index === skills.tags.length - 1
19
+ .tags-group-icon-pair
20
+ each item in pair
21
+ .tags-group-icon(style=`background:${item.color}`)
22
+ img(src=item.icon, title=item.title)
23
+ - pair = []
24
+ .skills-list
25
+ each tag in skills.tags
26
+ .skill-info
27
+ .skill-icon(style=`background:${tag.color}`)
28
+ img(src=tag.icon, title=tag.title)
29
+ .skill-name
30
+ span= tag.title
31
+ .etc ...
32
+ if careers
33
+ .author-content-item.careers
34
+ .card-content
35
+ .author-content-item-tips= careers.title
36
+ span.author-content-item-title= careers.subtitle
37
+ .careers-group
38
+ each item in careers.items
39
+ .careers-item
40
+ .circle(style=`background:${item.color}`)
41
+ .name= `${item.school}, ${item.major}`
42
+ img.author-content-img(src=careers.image, alt=careers.title)
@@ -37,7 +37,7 @@ if tenyear
37
37
  progressElement.style.setProperty("--progress-percentage", progressPercentage);
38
38
  if(progress > 5){
39
39
  percentageLabelElement.textContent = `${progress.toFixed(0)}%`;
40
- percentageLabelElement.style.left = `calc(${progress}% - 28px)`;
40
+ percentageLabelElement.style.left = `calc(${progress}% - 35px)`;
41
41
  }
42
42
  }
43
43
 
@@ -0,0 +1,19 @@
1
+ .title-h2-a
2
+ .title-h2-a-left
3
+ h2(style="padding-top: 0;margin:0.6rem 0 0.6rem;") 🎣 钓鱼
4
+ a#random-post-start(href="javascript:fetchRandomPost();", style="transition-duration: 0.3s; transform: rotate(63000deg); opacity: 1;", data-pjax-state="")
5
+ i.scoicon.sco-restart-line
6
+ .title-h2-a-right
7
+ if page.type !== 'links'
8
+ a.random-post-all(href="/links/", data-pjax-state="") 全部友链
9
+
10
+ #random-post
11
+
12
+ script.
13
+ var fdata = {
14
+ apiurl: "#{theme.moments.api}",
15
+ defaultFish: 100,
16
+ hungryFish: 100,
17
+ }
18
+
19
+ script(src=url_for(theme.moments.randompostjs))
@@ -26,9 +26,9 @@ case theme.says.style
26
26
  <div class="bber-info">
27
27
  <div class="bber-info-time">
28
28
  <i class="scoicon sco-calendar-todo-fill"></i>
29
- <time class="datetime" datetime="${item.create_time}"></time>
29
+ <time class="datetime" datetime="${item.date}"></time>
30
30
  </div>
31
- ${item.link ? `<a class="bber-content-link" href="${item.link}" title="跳转到短文指引的链接"><i class="scoicon sco-link-m-line"></i>链接</a>` : ''}
31
+ ${item.link ? `<a class="bber-content-link" href="${item.link}" title="跳转到短文指引的链接" target="_blank"><i class="scoicon sco-link-m-line"></i>链接</a>` : ''}
32
32
  </div>
33
33
  ${item.content ? `<a class="bber-reply goComment" onclick="sco.toTalk('${item.content}')"><i class="scoicon sco-chat-fill" style="font-size: 1rem;"></i></a>` : ''}
34
34
  </div>
@@ -59,7 +59,7 @@ case theme.says.style
59
59
  <img class="no-lightbox no-lazyload avatar" src="!{theme.aside.card.author.img}">
60
60
  <div class="info">
61
61
  <span class="bber_nick">#{config.author}</span>
62
- <time class="datetime bber_date" datetime="${item.create_time}"></time>
62
+ <time class="datetime bber_date" datetime="${item.date}"></time>
63
63
  </div>
64
64
  ${item.content ? `<a class="bber-reply goComment" onclick="sco.toTalk('${item.content}')"><i class="scoicon sco-chat-fill" style="font-size: 1rem;"></i></a>` : ''}
65
65
  </div>
@@ -26,7 +26,7 @@ each item in site.data.essay.essay_list.slice(0, theme.says.strip)
26
26
  if item.video.player
27
27
  video(src=item.video.player controls="controls" style="object-fit: cover;")
28
28
  if item.video.bilibili
29
- iframe(src='//player.bilibili.com/player.html?autop-lay=0&bvid=' + item.video.bilibili scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true")
29
+ iframe(src='//player.bilibili.com/player.html?auto-play=0&bvid=' + item.video.bilibili scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true")
30
30
 
31
31
  if theme.says.style === 1
32
32
  hr
@@ -36,7 +36,7 @@ each item in site.data.essay.essay_list.slice(0, theme.says.strip)
36
36
  i.scoicon.sco-calendar-todo-fill
37
37
  time.datetime(datetime=moment(item.date).format())
38
38
  if item.link
39
- a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接")
39
+ a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接" target="_blank")
40
40
  i.scoicon.sco-link-m-line
41
41
  | 链接
42
42
  if item.content
@@ -11,66 +11,77 @@ div#rightMenu
11
11
  div.rightMenu-group.rightMenu-line.rightMenuPlugin
12
12
  div.rightMenu-item#menu-copytext
13
13
  i.scoicon.sco-copy-fill
14
- span 复制选中文本
14
+ span= _p('rightmenu.copytext')
15
15
  div.rightMenu-item#menu-pastetext
16
16
  i.scoicon.sco-clipboard-fill
17
- span 粘贴文本
17
+ span= _p('rightmenu.pastetext')
18
18
  if theme.comment.enable
19
19
  a.rightMenu-item#menu-commenttext
20
20
  i.scoicon.sco-chat-new-fill
21
- span 引用到评论
21
+ span= _p('rightmenu.commenttext')
22
22
  div.rightMenu-item#menu-newwindow
23
23
  i.scoicon.sco-window-fill
24
- span 新窗口打开
24
+ span= _p('rightmenu.newwindow')
25
25
  div.rightMenu-item#menu-copylink
26
26
  i.scoicon.sco-link-line
27
- span 复制链接地址
27
+ span= _p('rightmenu.copylink')
28
28
  div.rightMenu-item#menu-copyimg
29
29
  i.scoicon.sco-copy-fill
30
- span 复制此图片
30
+ span= _p('rightmenu.copyimg')
31
31
  div.rightMenu-item#menu-downloadimg
32
32
  i.scoicon.sco-download-cloud-fill
33
- span 下载此图片
33
+ span= _p('rightmenu.downloadimg')
34
34
  div.rightMenu-item#menu-search
35
35
  i.scoicon.sco-search-line
36
- span 站内搜索
37
- div.rightMenu-item#menu-searchBaidu
38
- i.scoicon.sco-baidu-fill
39
- span 百度搜索
36
+ span= _p('rightmenu.search')
40
37
  div.rightMenu-item#menu-music-toggle
41
38
  i.scoicon.sco-play-fill
42
- span 播放音乐
39
+ span= _p('rightmenu.music.toggle')
43
40
  div.rightMenu-item#menu-music-back
44
41
  i.scoicon.sco-skip-back-fill
45
- span 切换到上一首
42
+ span= _p('rightmenu.music.back')
46
43
  div.rightMenu-item#menu-music-forward
47
44
  i.scoicon.sco-skip-forward-fill
48
- span 切换到下一首
45
+ span= _p('rightmenu.music.forward')
49
46
  div.rightMenu-item#menu-music-playlist(onclick=`window.open('${theme.capsule.server === 'tencent' ? `https://y.qq.com/n/ryqq/playlist/${theme.capsule.id}` : `https://music.163.com/#/playlist?id=${theme.capsule.id}`}', '_blank');`)
50
47
  i.scoicon.sco-play-list-2-line
51
- span 查看所有歌曲
48
+ span= _p('rightmenu.music.playlist')
52
49
  div.rightMenu-item#menu-music-copyMusicName
53
50
  i.scoicon.sco-copy-fill
54
- span 复制歌名
51
+ span= _p('rightmenu.music.copyMusicName')
55
52
  div.rightMenu-group.rightMenu-line.rightMenuOther
56
53
  a.rightMenu-item.menu-Link#menu-randomPost
57
54
  i.scoicon.sco-signal-tower-fill
58
- span 随便逛逛
55
+ span= _p('rightmenu.randomPost')
59
56
  a.rightMenu-item.menu-link(href="/categories/")
60
57
  i.scoicon.sco-checkbox-multiple-blank-fill
61
- span 博客分类
58
+ span= _p('rightmenu.categories')
62
59
  a.rightMenu-item.menu-link(href="/tags/")
63
60
  i.scoicon.sco-price-tag-fill
64
- span 文章标签
61
+ span= _p('rightmenu.tags')
65
62
  div.rightMenu-group.rightMenu-line.rightMenuOther
66
63
  div.rightMenu-item#menu-copy
67
64
  i.scoicon.sco-external-link-fill
68
- span 复制地址
65
+ span= _p('rightmenu.copyaddress')
69
66
  if theme.comment.enable && theme.comment.commentBarrage
70
67
  div.rightMenu-item#menu-commentBarrage
71
68
  i.scoicon.sco-chat-fill
72
- span.menu-commentBarrage-text 关闭热评
69
+ span.menu-commentBarrage-text= _p('rightmenu.commentBarrage')
73
70
  div.rightMenu-item#menu-darkmode
74
71
  i.scoicon.sco-moon-clear-fill
75
- span.menu-darkmode-text 深色模式
72
+ case theme.display_mode.type
73
+ when 'auto'
74
+ when 'light'
75
+ span.menu-darkmode-text= _p('rightmenu.dark')
76
+ when 'dark'
77
+ span.menu-darkmode-text= _p('rightmenu.light')
78
+ if theme.translate.enable
79
+ div.rightMenu-item#menu-translate
80
+ case theme.translate.defaultEncoding
81
+ when 2
82
+ i.scoicon.sco-panben-line
83
+ span= _p('rightmenu.chs_to_cht')
84
+ when 1
85
+ i.scoicon.sco-jianben-line
86
+ span= _p('rightmenu.cht_to_chs')
76
87
  div#rightmenu-mask
@@ -1,15 +1,20 @@
1
- div#algolia-search
2
- div.search-dialog
3
- div.search-dialog__title#algolia-search-title=__('nav.search')
4
- div#algolia-input-panel
5
- div#algolia-search-input
6
- div#search-results
7
- div#algolia-hits
8
- div#algolia-tips
9
- div#algolia-pagination
10
- div#algolia-stats
11
- i.scoicon.sco-algolia-fill
12
- span.algolia-tips-text='Algolia 提供搜索服务'
13
- span.search-close-button
14
- i.scoicon.sco-close-fill
15
- div#search-mask
1
+ #algolia-search
2
+ .search-dialog
3
+ .algolia-navbar
4
+ .search-dialog__title#algolia-search-title=__('nav.search')
5
+ .algolia-tips
6
+ i.scoicon.sco-algolia-fill
7
+ span.algolia-tips-text='Algolia'
8
+ span.search-close-button
9
+ i.scoicon.sco-close-fill
10
+ #algolia-input-panel
11
+ #algolia-search-input
12
+ #search-results
13
+ #algolia-hits
14
+ each tag in theme.search.tags || []
15
+ a.tag-list(href='/tags/' + tag + '/')=tag
16
+
17
+ #algolia-tips
18
+ #algolia-pagination
19
+ #algolia-stats
20
+ #search-mask
@@ -8,6 +8,9 @@
8
8
  div.search-box
9
9
  input.search-box-input#search-input(type="text", autocomplete="off", spellcheck="false", autocorrect="off", autocapitalize="off", placeholder=__('search.placeholder'))
10
10
  div#search-results
11
+ #search-hits
12
+ each tag in theme.search.tags || []
13
+ a.tag-list(href='/tags/' + tag + '/')=tag
11
14
  div#search-pagination
12
15
  div#search-tips
13
16
  div#search-mask
package/layout/page.pug CHANGED
@@ -20,11 +20,17 @@ block content
20
20
  include includes/page/equipment
21
21
  when 'rss'
22
22
  include includes/page/rss
23
+ when 'moment'
24
+ include includes/page/moment
23
25
  when 'douban'
24
26
  include includes/widgets/page/banner
25
27
  include includes/page/default
26
28
  when 'music'
27
29
  include includes/page/music
30
+ when 'gallery'
31
+ include includes/page/gallery
32
+ when 'album'
33
+ include includes/page/album
28
34
  default
29
35
  include includes/page/default
30
36
  if page.comment
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-solitude",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "A beautiful, powerful, and efficient Hexo theme developed by the DuoSco team",
5
5
  "main": "package.json",
6
6
  "scripts": {
package/plugins.yml CHANGED
@@ -13,7 +13,7 @@ pjax:
13
13
  twikoo:
14
14
  name: twikoo
15
15
  file: dist/twikoo.all.min.js
16
- version: 1.6.29
16
+ version: 1.6.31
17
17
  waline_js:
18
18
  name: '@waline/client'
19
19
  file: dist/waline.js
@@ -90,11 +90,15 @@ snackbar:
90
90
  scoicon_css:
91
91
  name: solitude-source
92
92
  file: icon/scoicon.min.css
93
- version: 1.0.3
93
+ version: 1.0.5
94
94
  waterfall:
95
95
  name: solitude-source
96
96
  file: js/waterfall.min.js
97
- version: 1.0.3
97
+ version: 1.0.5
98
+ universe_js:
99
+ name: solitude-source
100
+ file: js/universe.min.js
101
+ version: 1.0.5
98
102
  medium_zoom:
99
103
  name: medium-zoom
100
104
  file: dist/medium-zoom.min.js
@@ -106,4 +110,8 @@ fancyapps_ui:
106
110
  fancyapps_css:
107
111
  name: fancyapps-ui
108
112
  file: dist/fancybox/fancybox.min.css
109
- version: 5.0.33
113
+ version: 5.0.33
114
+ macy_js:
115
+ name: macy
116
+ file: dist/macy.min.js
117
+ version: 2.5.1
@@ -54,6 +54,11 @@ hexo.extend.filter.register('before_generate', () => {
54
54
  file: 'js/music.js',
55
55
  version
56
56
  },
57
+ translate:{
58
+ name: 'hexo-theme-solitude',
59
+ file: 'js/tw_cn.js',
60
+ version
61
+ },
57
62
  sco_ai_js: {
58
63
  name: 'hexo-theme-solitude',
59
64
  file: 'js/sco-ai.min.js',
@@ -1,22 +1,21 @@
1
1
  hexo.extend.filter.register('before_generate', () => {
2
- // Get first two digits of the Hexo version number
3
- const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1')
4
- const nodeVer = process.version.replace(/^v/, '');
5
- const [majorVer] = nodeVer.split('.');
6
- const logger = hexo.log, config = hexo.config
7
-
8
- if (hexoVer < 5.3) {
9
- logger.error('请把 Hexo 升级到 V5.3.0 或更高的版本!')
10
- process.exit(-1)
11
- }
2
+ const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1')
3
+ const nodeVer = process.version.replace(/^v/, '');
4
+ const [majorVer] = nodeVer.split('.');
5
+ const logger = hexo.log, config = hexo.config
6
+
7
+ if (hexoVer < 6.3) {
8
+ logger.error('请把 Hexo 升级到 V6.3.0 或更高的版本!')
9
+ process.exit(-1)
10
+ }
12
11
 
13
- if(config.prismjs.enable){
14
- logger.error('主题尚未支持 prismjs 请使用 highlightjs !')
15
- process.exit(-1)
12
+ if (config.prismjs.enable) {
13
+ logger.error('主题尚未支持 prismjs 请使用 highlightjs !')
14
+ process.exit(-1)
15
+ }
16
+ if (Number(majorVer) < 14) {
17
+ logger.error('请将 Node.js 升级到 v14.0.0 或更高的版本!');
18
+ process.exit(-1);
19
+ }
16
20
  }
17
- if (Number(majorVer) < 14) {
18
- logger.error('请将 Node.js 升级到 v14.0.0 或更高的版本!');
19
- process.exit(-1);
20
- }
21
- }
22
- )
21
+ )
@@ -1,4 +1,3 @@
1
- // generate 404 Page
2
1
  hexo.extend.generator.register('404', function (locals) {
3
2
  if(!this.theme.config.page.error)return
4
3
  return {
@@ -10,8 +9,6 @@ hexo.extend.generator.register('404', function (locals) {
10
9
  }
11
10
  }
12
11
  })
13
-
14
- // generate tags Page
15
12
  hexo.extend.generator.register('tags', function(locals) {
16
13
  if(!this.theme.config.page.tags)return
17
14
  return {
@@ -23,8 +20,6 @@ hexo.extend.generator.register('tags', function(locals) {
23
20
  }
24
21
  };
25
22
  });
26
-
27
- // generate categories Page
28
23
  hexo.extend.generator.register('categories', function(locals) {
29
24
  if(!this.theme.config.page.categories)return
30
25
  return {
@@ -1,12 +1,28 @@
1
1
  'use strict';
2
2
 
3
3
  hexo.extend.filter.register('before_post_render', () => {
4
- const logger = hexo.log;
5
- const theme = hexo.theme.config;
6
- if (theme.hometop.banner.enable && !theme.hometop.banner.icon) {
7
- logger.error('\n 启用banner的情况下,必须提供 icon 图片!\n 请在主题配置文件中设置 hometop.banner.icon 选项。');
8
- logger.error('\n If banner is enabled, icon image must be supplied! \n Please set the hometop.banner.icon option in the theme configuration file.');
9
- process.exit(-1);
4
+ const data = hexo.locals.get('data');
5
+ const logger = hexo.log;
6
+ const theme = hexo.theme.config;
7
+ if (theme.hometop.banner.enable && !theme.hometop.banner.icon) {
8
+ logger.error('\n 启用banner的情况下,必须提供 icon 图片!\n 请在主题配置文件中设置 hometop.banner.icon 选项。');
9
+ logger.error('\n If banner is enabled, icon image must be supplied! \n Please set the hometop.banner.icon option in the theme configuration file.');
10
+ process.exit(-1);
11
+ }
12
+ if (theme.says.enable && theme.says.mode === 'local' && !data.essay) {
13
+ logger.error('\n 启用说说的情况下,必须提供 essay 数据文件!\n 请新建 essay.yaml。');
14
+ logger.error('\n If says is enabled, essay data must be supplied! \n Please create essay.yaml.');
15
+ process.exit(-1);
16
+ }
17
+ if (theme.footer.randomlink && !data.links){
18
+ logger.error('\n 启用随机链接的情况下,必须提供 links 数据!\n 请新建 links.yaml。');
19
+ logger.error('\n If randomlink is enabled, links data must be supplied! \n Please create links.yaml.');
20
+ process.exit(-1);
21
+ }
22
+ if (theme.lightbox && !theme.fancybox && !theme.mediumZoom){
23
+ logger.error('\n 启用 lightbox 的情况下,必须提供 fancybox 或 mediumZoom 选项!\n 请在主题配置文件中设置 fancybox 或 mediumZoom 选项。');
24
+ logger.error('\n If lightbox is enabled, fancybox or mediumZoom option must be supplied! \n Please set the fancybox or mediumZoom option in the theme configuration file.');
25
+ process.exit(-1);
26
+ }
10
27
  }
11
- }
12
28
  );