hexo-theme-solitude 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/.github/FUNDING.yml +13 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.yml +107 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +13 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +14 -0
  5. package/.github/workflows/npm-publish.yml +21 -0
  6. package/CONTRIBUTING.md +0 -0
  7. package/LICENSE +0 -0
  8. package/README.md +60 -43
  9. package/README_EN.md +60 -42
  10. package/_config.yml +602 -451
  11. package/languages/en-US.yml +4 -24
  12. package/languages/zh-CN.yml +4 -24
  13. package/layout/404.pug +1 -1
  14. package/layout/archive.pug +0 -0
  15. package/layout/category.pug +0 -0
  16. package/layout/includes/body/mode.pug +1 -6
  17. package/layout/includes/console.pug +3 -3
  18. package/layout/includes/footer.pug +16 -15
  19. package/layout/includes/head/config.pug +38 -30
  20. package/layout/includes/head/opengraph.pug +0 -0
  21. package/layout/includes/head/pwa.pug +5 -44
  22. package/layout/includes/head.pug +4 -2
  23. package/layout/includes/header.pug +0 -0
  24. package/layout/includes/inject/body.pug +114 -65
  25. package/layout/includes/inject/head.pug +11 -46
  26. package/layout/includes/layout.pug +1 -2
  27. package/layout/includes/loading.pug +0 -0
  28. package/layout/includes/mixins/articleSort.pug +0 -0
  29. package/layout/includes/mixins/pagination.pug +0 -0
  30. package/layout/includes/nav.pug +1 -1
  31. package/layout/includes/page/about.pug +1 -1
  32. package/layout/includes/page/categories.pug +0 -0
  33. package/layout/includes/page/default.pug +0 -0
  34. package/layout/includes/page/equipment.pug +0 -0
  35. package/layout/includes/page/links.pug +2 -2
  36. package/layout/includes/page/music.pug +0 -0
  37. package/layout/includes/page/not_configured.pug +0 -0
  38. package/layout/includes/page/rss.pug +3 -3
  39. package/layout/includes/page/says.pug +15 -15
  40. package/layout/includes/page/tags.pug +0 -0
  41. package/layout/includes/page/tlink.pug +1 -0
  42. package/layout/includes/recent-posts.pug +0 -0
  43. package/layout/includes/sidebar.pug +0 -0
  44. package/layout/includes/widgets/aside/aside.pug +6 -6
  45. package/layout/includes/widgets/aside/asideAllInfo.pug +0 -0
  46. package/layout/includes/widgets/aside/asideArchive.pug +0 -0
  47. package/layout/includes/widgets/aside/asideCustom.pug +1 -1
  48. package/layout/includes/widgets/aside/asideFlipCard.pug +0 -0
  49. package/layout/includes/widgets/aside/asideInfoCard.pug +3 -3
  50. package/layout/includes/widgets/aside/asideNewestPost.pug +0 -0
  51. package/layout/includes/widgets/aside/asideSwitch.pug +0 -4
  52. package/layout/includes/widgets/aside/asideTag.pug +1 -1
  53. package/layout/includes/widgets/aside/asideToc.pug +0 -0
  54. package/layout/includes/widgets/aside/asideWebInfo.pug +2 -2
  55. package/layout/includes/widgets/home/banner.pug +0 -0
  56. package/layout/includes/widgets/home/bb/json.pug +22 -0
  57. package/layout/includes/widgets/home/bb/local.pug +17 -0
  58. package/layout/includes/widgets/home/bb/memos.pug +25 -0
  59. package/layout/includes/widgets/home/bbTimeList.pug +11 -7
  60. package/layout/includes/widgets/home/categoryBar.pug +0 -0
  61. package/layout/includes/widgets/home/categoryGroup.pug +1 -1
  62. package/layout/includes/widgets/home/hometop.pug +0 -0
  63. package/layout/includes/widgets/home/postList.pug +0 -0
  64. package/layout/includes/widgets/home/topGroup.pug +0 -0
  65. package/layout/includes/widgets/nav/left.pug +0 -0
  66. package/layout/includes/widgets/nav/menu.pug +1 -1
  67. package/layout/includes/widgets/nav/right.pug +6 -5
  68. package/layout/includes/widgets/page/about/authorinfo.pug +10 -9
  69. package/layout/includes/widgets/page/about/award.pug +0 -0
  70. package/layout/includes/widgets/page/about/contentinfo.pug +35 -34
  71. package/layout/includes/widgets/page/about/hobbies.pug +21 -17
  72. package/layout/includes/widgets/page/about/motto.pug +17 -16
  73. package/layout/includes/widgets/page/about/other.pug +16 -16
  74. package/layout/includes/widgets/page/about/personalities.pug +15 -14
  75. package/layout/includes/widgets/page/about/skillsinfo.pug +37 -36
  76. package/layout/includes/widgets/page/about/tenyear.pug +0 -0
  77. package/layout/includes/widgets/page/banner.pug +9 -3
  78. package/layout/includes/widgets/page/equipment/content.pug +0 -0
  79. package/layout/includes/widgets/page/links/banner.pug +14 -12
  80. package/layout/includes/widgets/page/links/linksCard.pug +4 -6
  81. package/layout/includes/widgets/page/links/linksDiscn.pug +8 -0
  82. package/layout/includes/widgets/page/links/linksItem.pug +4 -6
  83. package/layout/includes/widgets/page/says/json.pug +78 -0
  84. package/layout/includes/widgets/page/says/local.pug +44 -0
  85. package/layout/includes/widgets/page/says/memos.pug +107 -0
  86. package/layout/includes/widgets/post/award.pug +0 -0
  87. package/layout/includes/widgets/post/copyright.pug +2 -2
  88. package/layout/includes/widgets/post/post-ai.pug +12 -0
  89. package/layout/includes/widgets/post/postMeta.pug +2 -2
  90. package/layout/includes/widgets/post/postNav.pug +0 -0
  91. package/layout/includes/widgets/post/wave.pug +0 -0
  92. package/layout/includes/widgets/randomlink.pug +1 -1
  93. package/layout/includes/widgets/rightside/index.pug +6 -5
  94. package/layout/includes/widgets/third-party/comments/comment.pug +1 -5
  95. package/layout/includes/widgets/third-party/comments/twikoo.pug +1 -1
  96. package/layout/includes/widgets/third-party/comments/waline.pug +9 -11
  97. package/layout/includes/widgets/third-party/music.pug +1 -1
  98. package/layout/includes/widgets/third-party/news-comment/newest-comment.pug +6 -0
  99. package/layout/includes/widgets/third-party/news-comment/twikoo.pug +70 -0
  100. package/layout/includes/widgets/third-party/news-comment/waline.pug +64 -0
  101. package/layout/includes/widgets/third-party/pjax.pug +0 -0
  102. package/layout/includes/widgets/third-party/search/algolia-search.pug +0 -0
  103. package/layout/includes/widgets/third-party/search/index.pug +8 -7
  104. package/layout/includes/widgets/third-party/search/local-search.pug +0 -0
  105. package/layout/index.pug +3 -3
  106. package/layout/page.pug +0 -4
  107. package/layout/post.pug +2 -2
  108. package/layout/tag.pug +0 -0
  109. package/package.json +18 -9
  110. package/plugins.yml +109 -0
  111. package/scripts/event/cdn.js +129 -0
  112. package/scripts/event/init.js +0 -0
  113. package/scripts/event/page.js +1 -21
  114. package/scripts/event/welcome.js +1 -1
  115. package/scripts/filter/checkThemeConfig.js +0 -0
  116. package/scripts/filter/default.js +0 -0
  117. package/scripts/filter/lazyload.js +1 -1
  118. package/scripts/filter/randomPosts.js +0 -0
  119. package/scripts/helper/cdn.js +0 -0
  120. package/scripts/helper/getArchiveLength.js +0 -0
  121. package/scripts/helper/page.js +0 -0
  122. package/scripts/helper/related_post.js +0 -0
  123. package/scripts/helper/stylus.js +0 -0
  124. package/scripts/tags/button.js +0 -0
  125. package/scripts/tags/bvideo.js +0 -0
  126. package/scripts/tags/card.js +0 -0
  127. package/scripts/tags/checkbox.js +0 -0
  128. package/scripts/tags/fold.js +0 -0
  129. package/scripts/tags/image.js +0 -0
  130. package/scripts/tags/inline-image.js +0 -0
  131. package/scripts/tags/label.js +0 -0
  132. package/scripts/tags/link.js +0 -0
  133. package/scripts/tags/media.js +0 -0
  134. package/scripts/tags/note.js +0 -0
  135. package/scripts/tags/span.js +0 -0
  136. package/scripts/tags/tabs.js +0 -0
  137. package/scripts/tags/timeline.js +0 -0
  138. package/scripts/tags/u.js +0 -0
  139. package/source/css/_global/animation.css +0 -0
  140. package/source/css/_global/function.styl +42 -42
  141. package/source/css/_global/index.styl +1 -1
  142. package/source/css/_global/var.styl +0 -0
  143. package/source/css/_layout/basic.styl +16 -13
  144. package/source/css/_layout/header.styl +7 -2
  145. package/source/css/_layout/index.styl +59 -5
  146. package/source/css/_mode/index.styl +1 -17
  147. package/source/css/_page/_home/category-bar.styl +0 -0
  148. package/source/css/_page/_home/home-top.styl +10 -31
  149. package/source/css/_page/_home/index.styl +0 -0
  150. package/source/css/_page/_home/pagination.styl +3 -0
  151. package/source/css/_page/_home/recent-post.styl +10 -3
  152. package/source/css/_page/about/author.styl +94 -0
  153. package/source/css/_page/about/buff.styl +34 -0
  154. package/source/css/_page/about/careers.styl +27 -0
  155. package/source/css/_page/about/contentinfo.styl +78 -0
  156. package/source/css/_page/about/game.styl +41 -0
  157. package/source/css/_page/about/index.styl +39 -1
  158. package/source/css/_page/about/like.styl +29 -0
  159. package/source/css/_page/about/maxim.styl +23 -0
  160. package/source/css/_page/about/myphoto.styl +34 -0
  161. package/source/css/_page/about/oneself.styl +91 -0
  162. package/source/css/_page/about/personalities.styl +25 -0
  163. package/source/css/_page/about/reward.styl +113 -0
  164. package/source/css/_page/about/skills.styl +75 -0
  165. package/source/css/_page/about/statistic.styl +55 -0
  166. package/source/css/_page/about/tenyear.styl +0 -0
  167. package/source/css/_page/category.styl +0 -0
  168. package/source/css/_page/douban.styl +0 -1
  169. package/source/css/_page/equipment.styl +0 -0
  170. package/source/css/_page/error.styl +0 -0
  171. package/source/css/_page/home.styl +0 -0
  172. package/source/css/_page/index.styl +20 -5
  173. package/source/css/_page/links.styl +84 -49
  174. package/source/css/_page/moment.styl +0 -0
  175. package/source/css/_page/music.styl +0 -0
  176. package/source/css/_page/rss.styl +0 -0
  177. package/source/css/_page/says.styl +10 -0
  178. package/source/css/_page/tag.styl +0 -0
  179. package/source/css/_widgets/_aside/allinfo.styl +34 -0
  180. package/source/css/_widgets/_aside/flip.styl +0 -0
  181. package/source/css/_widgets/_aside/index.styl +1 -7
  182. package/source/css/_widgets/_aside/info.styl +0 -0
  183. package/source/css/_widgets/_aside/newPost.styl +0 -0
  184. package/source/css/_widgets/_aside/toc.styl +0 -0
  185. package/source/css/_widgets/_aside/welcome.styl +0 -0
  186. package/source/css/_widgets/_comment/index.styl +0 -0
  187. package/source/css/_widgets/_comment/twikoo.styl +0 -2
  188. package/source/css/_widgets/_comment/waline.styl +0 -0
  189. package/source/css/_widgets/_extra/console.styl +0 -0
  190. package/source/css/_widgets/_extra/fullpage.styl +0 -0
  191. package/source/css/_widgets/_extra/music.styl +1 -1
  192. package/source/css/_widgets/_extra/pace.styl +0 -0
  193. package/source/css/_widgets/_extra/rightmenu.styl +0 -0
  194. package/source/css/_widgets/_mixins/article-sort.styl +0 -0
  195. package/source/css/_widgets/_mixins/footer.styl +1 -2
  196. package/source/css/_widgets/_mixins/other.styl +0 -4
  197. package/source/css/_widgets/_mixins/sidebar.styl +0 -0
  198. package/source/css/_widgets/_post/_highlight/diff.styl +0 -0
  199. package/source/css/_widgets/_post/_highlight/index.styl +0 -1
  200. package/source/css/_widgets/_post/_highlight/theme/default.styl +0 -0
  201. package/source/css/_widgets/_post/_highlight/theme/mac.styl +0 -0
  202. package/source/css/_widgets/_post/_highlight/theme.styl +0 -0
  203. package/source/css/_widgets/_post/commentBarrage.styl +0 -0
  204. package/source/css/_widgets/_post/content.styl +42 -11
  205. package/source/css/_widgets/_post/copyright.styl +0 -0
  206. package/source/css/_widgets/_post/index.styl +1 -1
  207. package/source/css/_widgets/_post/meta.styl +0 -3
  208. package/source/css/_widgets/_post/pagination.styl +1 -1
  209. package/source/css/_widgets/_post/postAI.styl +0 -0
  210. package/source/css/_widgets/_post/relatedPost.styl +0 -0
  211. package/source/css/_widgets/_post/tools.styl +0 -0
  212. package/source/css/_widgets/_search/algolia-search.styl +0 -0
  213. package/source/css/_widgets/_search/local-search.styl +0 -0
  214. package/source/css/_widgets/_tags/button.styl +0 -0
  215. package/source/css/_widgets/_tags/bvideo.styl +0 -0
  216. package/source/css/_widgets/_tags/card.styl +0 -0
  217. package/source/css/_widgets/_tags/checkbox.styl +0 -0
  218. package/source/css/_widgets/_tags/fold.styl +0 -0
  219. package/source/css/_widgets/_tags/image.styl +0 -0
  220. package/source/css/_widgets/_tags/index.styl +0 -0
  221. package/source/css/_widgets/_tags/inline-image.styl +0 -0
  222. package/source/css/_widgets/_tags/label.styl +0 -0
  223. package/source/css/_widgets/_tags/link.styl +4 -2
  224. package/source/css/_widgets/_tags/note.styl +0 -0
  225. package/source/css/_widgets/_tags/span.styl +0 -0
  226. package/source/css/_widgets/_tags/tabs.styl +0 -0
  227. package/source/css/_widgets/_tags/timeline.styl +0 -1
  228. package/source/css/_widgets/index.styl +4 -4
  229. package/source/css/index.styl +0 -0
  230. package/source/img/avatar.png +0 -0
  231. package/source/img/default.png +0 -0
  232. package/source/img/error_load.png +0 -0
  233. package/source/js/{extend/comment/twikoo/commentBarrage.js → comment/twikoo_commentBarrage.js} +0 -0
  234. package/source/js/{extend/comment/waline/commentBarrage.js → comment/waline_commentBarrage.js} +0 -0
  235. package/source/js/covercolor/api.js +92 -0
  236. package/source/js/covercolor/local.js +85 -0
  237. package/source/js/main.js +28 -235
  238. package/source/js/music.js +0 -0
  239. package/source/js/rightside.js +404 -0
  240. package/source/js/{extend/search/algolia-search.js → search/algolia.js} +10 -0
  241. package/source/js/{extend/search/local-search.js → search/local.js} +24 -2
  242. package/source/js/utils.js +75 -1
  243. package/layout/includes/head/fest.pug +0 -22
  244. package/layout/includes/page/echarts.pug +0 -7
  245. package/layout/includes/page/moments.pug +0 -4
  246. package/layout/includes/widgets/aside/asideHistory.pug +0 -8
  247. package/layout/includes/widgets/aside/asideWelcome.pug +0 -12
  248. package/layout/includes/widgets/page/moments/angle.pug +0 -19
  249. package/layout/includes/widgets/page/moments/index.pug +0 -23
  250. package/layout/includes/widgets/page/says/saysBottom.pug +0 -11
  251. package/layout/includes/widgets/page/says/saysContent.pug +0 -6
  252. package/layout/includes/widgets/page/says/saysFunction.pug +0 -10
  253. package/layout/includes/widgets/page/says/saysMeta.pug +0 -7
  254. package/layout/includes/widgets/third-party/ai/index.pug +0 -12
  255. package/layout/includes/widgets/third-party/comments/gitalk.pug +0 -0
  256. package/layout/includes/widgets/third-party/comments/valine.pug +0 -0
  257. package/scripts/helper/echarts.js +0 -407
  258. package/source/css/_page/about.styl +0 -764
  259. package/source/css/_widgets/_aside/history.styl +0 -42
  260. package/source/js/extend/comment/twikoo/twikoo.js +0 -67
  261. package/source/js/extend/comment/waline/waline.js +0 -60
  262. package/source/lib/bundle.min.js +0 -27
  263. package/source/lib/circle.min.js +0 -1
  264. package/source/lib/cover-color.min.js +0 -7
  265. package/source/lib/friends_post.js +0 -4
  266. package/source/lib/lazyload.min.js +0 -1
  267. package/source/lib/rightside.min.js +0 -1
  268. package/source/lib/snackbar.min.css +0 -1
  269. package/source/lib/snackbar.min.js +0 -9
  270. package/source/lib/txmap.min.js +0 -1
  271. package/source/lib/universe.min.js +0 -1
  272. package/source/lib/view-image.min.js +0 -6
  273. package/source/lib/waterfall.min.js +0 -1
  274. /package/source/{lib → js}/sco-ai.min.js +0 -0
@@ -1,19 +1,20 @@
1
1
  - const motto = site.data.about.motto
2
2
  - const expertise = site.data.about.expertise
3
3
 
4
- .author-content
5
- .author-content-item.maxim
6
- .author-content-item-tips= motto.title
7
- span.maxim-title
8
- span= motto.prefix
9
- span= motto.content
10
- .author-content-item.buff
11
- .card-content
12
- .author-content-item-tips= expertise.title
13
- span.buff-title
14
- span
15
- | #{expertise.prefix}
16
- span.inline-word= expertise.specialist
17
- span
18
- | #{expertise.content}
19
- span.inline-word= expertise.level
4
+ if motto || expertise
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
@@ -1,6 +1,9 @@
1
+ - var tj = site.data.about.tj
2
+ - var oneself = site.data.about.oneself
3
+
1
4
  .author-content
2
- if site.data.about.tj
3
- .about-statistic.author-content-item(style=`background: url(${site.data.about.tj.img});`)
5
+ if tj
6
+ .about-statistic.author-content-item(style=`background: url(${tj.img});`)
4
7
  .card-content
5
8
  .author-content-item-tips 数据
6
9
  span.author-content-item-title 访问统计
@@ -8,13 +11,9 @@
8
11
  .post-tips
9
12
  | 统计信息来自
10
13
  a(href="https://invite.51.la/1NzKqTeb?target=V6") 51la网站统计
11
- if theme.about.echarts.enable
12
- .banner-button-group
13
- a.banner-button(onclick="pjax.loadUrl('/echart/');")
14
- i.scoicon.sco-right-btn-fill
15
- span.banner-button-text 文章统计
14
+
16
15
  script.
17
- fetch("#{site.data.about.tj.url}")
16
+ fetch("#{tj.url}")
18
17
  .then(res => res.text())
19
18
  .then(data => {
20
19
  const title = ["最近活跃", "今日人数", "今日访问", "昨日人数", "昨日访问", "本月访问", "总访问量"];
@@ -33,13 +32,12 @@
33
32
  });
34
33
 
35
34
 
36
- if site.data.about.oneself
35
+ if oneself
37
36
  style.
38
37
  :root {
39
- --site-about-oneself-map--light: url(#{site.data.about.oneself.map.light});
40
- --site-about-oneself-map--dark: url(#{site.data.about.oneself.map.dark});
38
+ --site-about-oneself-map--light: url(#{oneself.map.light});
39
+ --site-about-oneself-map--dark: url(#{oneself.map.dark});
41
40
  }
42
- - const oneself = site.data.about.oneself
43
41
  .author-content-item-group.column.mapAndInfo
44
42
  .author-content-item.map.single
45
43
  span.map-title 我现在住在 #{oneself.location}
@@ -54,9 +52,11 @@
54
52
  span.selfInfo-title 现在职业
55
53
  span.selfInfo-content(style="color: #b04fe6;")= oneself.occupation
56
54
 
57
- if site.data.about.cause
55
+ - var cause = site.data.about.cause
56
+
57
+ if cause
58
58
  .author-content
59
59
  .create-site-post.author-content-item.single
60
- .author-content-item-tips 心路历程
61
- span.author-content-item-title 为什么建站?
62
- != site.data.about.cause
60
+ .author-content-item-tips= cause.tip
61
+ span.author-content-item-title= cause.title
62
+ != cause.content
@@ -1,16 +1,17 @@
1
1
  - const personalities = site.data.about.personalities
2
2
 
3
- .author-content
4
- .author-content-item.personalities
5
- .author-content-item-tips= personalities.tips
6
- span.author-content-item-title= personalities.title
7
- .title2(style=`color:${personalities.color}`)= personalities.type
8
- .image
9
- img(src=personalities.image)
10
- .post-tips
11
- | 在
12
- a(href="https://www.16personalities.com/")= personalities.linkText
13
- | 了解更多关于
14
- a(href=personalities.typeLink)= personalities.typeName
15
- .author-content-item.myphoto
16
- img.author-content-img(src=personalities.myphoto, alt="自拍")
3
+ if personalities
4
+ .author-content
5
+ .author-content-item.personalities
6
+ .author-content-item-tips= personalities.tips
7
+ span.author-content-item-title= personalities.title
8
+ .title2(style=`color:${personalities.color}`)= personalities.type
9
+ .image
10
+ img(src=personalities.image)
11
+ .post-tips
12
+ |
13
+ a(href="https://www.16personalities.com/")= personalities.linkText
14
+ | 了解更多关于
15
+ a(href=personalities.typeLink)= personalities.typeName
16
+ .author-content-item.myphoto
17
+ img.author-content-img(src=personalities.myphoto, alt="自拍")
@@ -1,39 +1,40 @@
1
1
  - var skills = site.data.about.skills
2
2
  - var careers = site.data.about.careers
3
3
 
4
- .author-content
5
- .author-content-item.skills
6
- .card-content
7
- .author-content-item-tips= skills.title
8
- span.author-content-item-title= skills.subtitle
9
- .skills-style-group
10
- .tags-group-all
11
- .tags-group-wrapper
12
- each i in [1,2]
13
- - var pair = []
14
- each tag, index in skills.tags
15
- - pair.push(tag)
16
- if pair.length === 2 || index === skills.tags.length - 1
17
- .tags-group-icon-pair
18
- each item in pair
19
- .tags-group-icon(style=`background:${item.color}`)
20
- img(src=item.icon, title=item.title)
21
- - pair = []
22
- .skills-list
23
- each tag in skills.tags
24
- .skill-info
25
- .skill-icon(style=`background:${tag.color}`)
26
- img(src=tag.icon, title=tag.title)
27
- .skill-name
28
- span= tag.title
29
- .etc ...
30
- .author-content-item.careers
31
- .card-content
32
- .author-content-item-tips= careers.title
33
- span.author-content-item-title= careers.subtitle
34
- .careers-group
35
- each item in careers.items
36
- .careers-item
37
- .circle(style=`background:${item.color}`)
38
- .name= `${item.school}, ${item.major}`
39
- img.author-content-img(src=careers.image, alt=careers.title)
4
+ if skills || caches
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)
File without changes
@@ -9,6 +9,12 @@
9
9
  .tips!= page.rightend
10
10
  if page.rightbtn
11
11
  .banner-button-group
12
- a.banner-button(onclick="pjax.loadUrl(\"" + page.rightbtnlink + "\")")
13
- i.scoicon.sco-right-btn-fill
14
- span.banner-button-text= page.rightbtn
12
+ case page.rightbtnlink.startsWith('/')
13
+ when true
14
+ a.banner-button(onclick="pjax.loadUrl(\"" + page.rightbtnlink + "\")")
15
+ i.scoicon.sco-right-btn-fill
16
+ span.banner-button-text= page.rightbtn
17
+ when false
18
+ a.banner-button(href=page.rightbtnlink, target="_blank")
19
+ i.scoicon.sco-right-btn-fill
20
+ span.banner-button-text= page.rightbtn
@@ -13,16 +13,18 @@
13
13
 
14
14
  .tags-group-all.nowrapMove
15
15
  .tags-group-wrapper
16
- - const data = site.data.links.banners
17
- - var pairs = []
16
+ - const data = site.data.links.links
18
17
  - for (let i = 0; i < 2; i++)
19
- each y, index in data
20
- if (index % 2 === 0)
21
- - pairs.push([y])
22
- else
23
- - pairs[pairs.length - 1].push(y)
24
- each pair in pairs
25
- .tags-group-icon-pair
26
- each y in pair
27
- a.tags-group-icon(href=url_for(y.link), title=y.name)
28
- img(src=y.avatar, title=y.name)
18
+ each x in data
19
+ if x.type === "item"
20
+ - var pairs = []
21
+ each y, index in x.link_list
22
+ if (index % 2 === 0)
23
+ - pairs.push([y])
24
+ else
25
+ - pairs[pairs.length - 1].push(y)
26
+ each pair in pairs
27
+ .tags-group-icon-pair
28
+ each y in pair
29
+ a.tags-group-icon(href=url_for(y.link), title=y.name)
30
+ img(src=y.avatar + (site.data.links.banner_suffix || ''), title=y.name)
@@ -2,16 +2,14 @@
2
2
  each item in data.link_list
3
3
  .site-card
4
4
  if item.tag
5
- if item.vip
6
- span.site-card-tag.vip= item.tag
7
- else
8
- span.site-card-tag= item.tag
5
+ span.site-card-tag(class=item.color)= item.tag
6
+ i.light
9
7
  a.img(title=item.name, href=url_for(item.link))
10
- img.flink-avatar(src=item.topimg, alt=item.name)
8
+ img.flink-avatar(src=item.topimg + (data.topimg_suffix || ''), alt=item.name)
11
9
  .img-alt.is-center= item.name
12
10
  a.info.cf-friends-link(title=item.name, href=url_for(item.link))
13
11
  .site-card-avatar
14
- img.flink-avatar.cf-friends-avatar(src=item.avatar, alt=item.name)
12
+ img.flink-avatar.cf-friends-avatar(src=item.avatar + (data.suffix || ''), alt=item.name)
15
13
  .img-alt.is-center= item.name
16
14
  .site-card-text
17
15
  span.title.cf-friends-name= item.name
@@ -0,0 +1,8 @@
1
+ .flink-list.cf-friends-lost-contact.mini
2
+ each item in data.link_list
3
+ .flink-list-item
4
+ a.cf-friends-link(href="javascript:void(0);", title=item.name)
5
+ img.flink-avatar.cf-friends-avatar(alt=item.name, src=item.avatar + (data.suffix || ''))
6
+ .flink-item-info
7
+ span.flink-item-name.cf-friends-name= item.name
8
+ span.flink-item-desc(title=item.descr)= item.descr
@@ -1,13 +1,11 @@
1
1
  .flink-list
2
2
  each item in data.link_list
3
3
  .flink-list-item
4
+ if item.tag
5
+ span.site-card-tag(class=item.color)= item.tag
6
+ i.light
4
7
  a.cf-friends-link(href=url_for(item.link), title=item.name)
5
- if item.tag
6
- if item.vip
7
- span.site-card-tag.vip= item.tag
8
- else
9
- span.site-card-tag= item.tag
10
- img.flink-avatar.cf-friends-avatar(alt=item.name, src=item.avatar)
8
+ img.flink-avatar.cf-friends-avatar(alt=item.name, src=item.avatar + (data.suffix || ''))
11
9
  .flink-item-info
12
10
  span.flink-item-name.cf-friends-name= item.name
13
11
  span.flink-item-desc(title=item.descr)= item.descr
@@ -0,0 +1,78 @@
1
+ case theme.says.style
2
+ when 1
3
+ script.
4
+ !async function () {
5
+ await fetch('!{url_for(theme.says.mode_link)}')
6
+ .then(res => res.json())
7
+ .then(res => {
8
+ let list = res.slice(0, !{theme.says.strip})
9
+ let aplayer = null
10
+ let video = null
11
+ let imageBox = null
12
+
13
+ document.querySelector('#waterfall').innerHTML = list.map(item => {
14
+ aplayer = item.aplayer ? `<div class="bber-music"><meting-js server="${item.aplayer.server}" type="song" id="${item.aplayer.id}" mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0"></meting-js></div>` : null
15
+ video = item.player ? `<div class="bber-video"><video src="${item.player}" controls="controls" style="objectfit: cover;"></video></div>` : item.bilibili ? `<div class="bber-video"><iframe src="//player.bilibili.com/player.html?autop-lay=0&bvid=${item.bilibili}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>` : null
16
+ imageBox = item.images ? `<div class="bber-content-img">${item.images.map(img => `<img src="${img}" title="即刻短文配图" />`).join('')}</div>` : null
17
+ return `<li class="item">
18
+ <div id="bber-content">
19
+ <p class="datacont">${item.content || ''}</p>
20
+ ${imageBox || ''}
21
+ </div>
22
+ ${video || ''}
23
+ ${aplayer || ''}
24
+ <hr>
25
+ <div class="bber-bottom">
26
+ <div class="bber-info">
27
+ <div class="bber-info-time">
28
+ <i class="scoicon sco-calendar-todo-fill"></i>
29
+ <time class="datetime" datetime="${item.create_time}"></time>
30
+ </div>
31
+ ${item.link ? `<a class="bber-content-link" href="${item.link}" title="跳转到短文指引的链接"><i class="scoicon sco-link-m-line"></i>链接</a>` : ''}
32
+ </div>
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
+ </div>
35
+ </li>`
36
+ }).join('')
37
+ })
38
+ GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg()
39
+ GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
40
+ changeTimeFormat()
41
+ }()
42
+ when 2
43
+ script.
44
+ !async function () {
45
+ await fetch('!{url_for(theme.says.mode_link)}')
46
+ .then(res => res.json())
47
+ .then(res => {
48
+ let list = res.slice(0, !{theme.says.strip})
49
+ let aplayer = null
50
+ let video = null
51
+ let imageBox = null
52
+
53
+ document.querySelector('#waterfall').innerHTML = list.map(item => {
54
+ aplayer = item.aplayer ? `<div class="bber-music"><meting-js server="${item.aplayer.server}" type="song" id="${item.aplayer.id}" mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0"></meting-js></div>` : null
55
+ video = item.player ? `<div class="bber-video"><video src="${item.player}" controls="controls" style="object-fit: cover;"></video></div>` : item.bilibili ? `<div class="bber-video"><iframe src="//player.bilibili.com/player.html?autoplay=0&bvid=${item.bilibili}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>` : null
56
+ imageBox = item.images ? `<div class="bber-content-img">${item.images.map(img => `<img src="${img}" title="即刻短文配图" />`).join('')}</div>` : null
57
+ return `<li class="item">
58
+ <div class="meta">
59
+ <img class="no-lightbox no-lazyload avatar" src="!{theme.aside.card.author.img}">
60
+ <div class="info">
61
+ <span class="bber_nick">#{config.author}</span>
62
+ <time class="datetime bber_date" datetime="${item.create_time}"></time>
63
+ </div>
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
+ </div>
66
+ <div id="bber-content">
67
+ <p class="datacont">${item.content || ''}</p>
68
+ ${imageBox || ''}
69
+ </div>
70
+ ${video || ''}
71
+ ${aplayer || ''}
72
+ </li>`
73
+ }).join('')
74
+ GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg()
75
+ GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
76
+ changeTimeFormat()
77
+ })
78
+ }()
@@ -0,0 +1,44 @@
1
+ each item in site.data.essay.essay_list.slice(0, theme.says.strip)
2
+ li.item
3
+ if theme.says.style === 2
4
+ .meta
5
+ img.avatar(src=theme.aside.card.author.img)
6
+ .info
7
+ span.bber_nick= config.author
8
+ time.datetime.bber_date(datetime=moment(item.date).format())
9
+ if item.content
10
+ a.bber-reply.goComment(onclick=`sco.toTalk('${item.content}')`)
11
+ i.scoicon.sco-chat-fill
12
+
13
+ #bber-content
14
+ p.datacont= item.content
15
+ if item.image
16
+ .bber-content-img
17
+ each img in item.image
18
+ img(src=img title="即刻短文配图")
19
+
20
+ if item.aplayer
21
+ .bber-music
22
+ meting-js(server=item.aplayer.server type="song" id=item.aplayer.id mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0")
23
+
24
+ if item.video
25
+ .bber-video
26
+ if item.video.player
27
+ video(src=item.video.player controls="controls" style="object-fit: cover;")
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")
30
+
31
+ if theme.says.style === 1
32
+ hr
33
+ .bber-bottom
34
+ .bber-info
35
+ .bber-info-time
36
+ i.scoicon.sco-calendar-todo-fill
37
+ time.datetime(datetime=moment(item.date).format())
38
+ if item.link
39
+ a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接")
40
+ i.scoicon.sco-link-m-line
41
+ | 链接
42
+ if item.content
43
+ a.bber-reply(onclick=`sco.toTalk('${item.content}')`)
44
+ i.scoicon.sco-chat-fill
@@ -0,0 +1,107 @@
1
+ case theme.says.style
2
+ when 1
3
+ script.
4
+ !async function () {
5
+ let aplayerRegex = /{aplayer,(.*?),(.*?)}/g;
6
+ let linkRegex = /(?<!\!)\[([^\]]*)\]\(([^\)]*)\)/g;
7
+ let bilibiliRegex = /{bilibili,(.*?)}/g;
8
+ let playerRegex = /{player,(.*?)}/g;
9
+ let imageRegex = /!\[\]\((.*?)\)/g;
10
+ let contentRegex = /#.*?\s([^{\n]*)/g
11
+
12
+ await fetch("!{url_for(theme.says.mode_link)}")
13
+ .then(res => res.json())
14
+ .then(data => {
15
+ let list = data.slice(0, !{theme.says.strip});
16
+ let aplayer = null;
17
+ let video = null;
18
+ let imageBox = null;
19
+
20
+ document.querySelector('#waterfall').innerHTML = list.map(item => {
21
+ aplayer = item.content.match(aplayerRegex);
22
+ aplayer = aplayer ? `<div class="bber-music"><meting-js server="${aplayer[0].replace(aplayerRegex, '$1')}" type="song" id="${aplayer[0].replace(aplayerRegex, '$2')}" mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0"></meting-js></div>` : null;
23
+ video = item.content.match(playerRegex);
24
+ video = video ? `<div class="bber-video"><video src="${video[0].replace(playerRegex, '$1')}" controls="controls" style="object-fit: cover;"></video></div>` : item.content.match(bilibiliRegex);
25
+ video = item.content.match(bilibiliRegex) ? `<div class="bber-video"><iframe src="//player.bilibili.com/player.html?autoplay=0&bvid=${video[0].replace(bilibiliRegex, '$1')}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>` : video;
26
+ imageBox = item.content.match(imageRegex);
27
+ imageBox = imageBox ? `<div class="bber-content-img">${imageBox.map(img => `<img src="${img.replace(imageRegex, '$1')}" title="即刻短文配图" />`).join('')}</div>` : '';
28
+ let time = new Date(item.createdTs * 1000).toISOString().replace('Z', '+08:00');
29
+ let content = item.content.match(contentRegex).map(item => item.replace(contentRegex, '$1'));
30
+ let link = item.content.match(linkRegex);
31
+ link = link ? `<a class="bber-content-link" href='${link[0].replace(linkRegex, '$2')}' title="${link[0].replace(linkRegex, '$1')}" target="_blank"><i class="scoicon sco-link-m-line"></i>链接</a>` : '';
32
+ return `<li class="item">
33
+ <div id="bber-content">
34
+ <p class="datacont">${content}</p>
35
+ ${imageBox || ''}
36
+ </div>
37
+ ${video || ''}
38
+ ${aplayer || ''}
39
+ <hr>
40
+ <div class="bber-bottom">
41
+ <div class="bber-info">
42
+ <div class="bber-info-time">
43
+ <i class="scoicon sco-calendar-todo-fill"></i>
44
+ <time class="datetime" datetime="${time}"></time>
45
+ </div>
46
+ ${link}
47
+ </div>
48
+ ${content ? `<a class="bber-reply goComment" onclick="sco.toTalk('${content}')"><i class="scoicon sco-chat-fill" style="font-size: 1rem;"></i></a>` : ''}
49
+ </div>
50
+ </li>`;
51
+ }).join('');
52
+ }).catch(error => console.log(error));
53
+ sco.reflashEssayWaterFall();
54
+ GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
55
+ GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
56
+ changeTimeFormat();
57
+ }();
58
+ when 2
59
+ script.
60
+ !async function () {
61
+ let aplayerRegex = /{aplayer,(.*?),(.*?)}/g;
62
+ let bilibiliRegex = /{bilibili,(.*?)}/g;
63
+ let playerRegex = /{player,(.*?)}/g;
64
+ let imageRegex = /!\[\]\((.*?)\)/g;
65
+ let contentRegex = /#.*?\s([^{\n]*)/g
66
+
67
+ await fetch("!{url_for(theme.says.mode_link)}")
68
+ .then(res => res.json())
69
+ .then(data => {
70
+ let list = data.slice(0, !{theme.says.strip})
71
+ let aplayer = null;
72
+ let video = null;
73
+ let imageBox = null;
74
+
75
+ document.querySelector('#waterfall').innerHTML = list.map(item => {
76
+ aplayer = item.content.match(aplayerRegex);
77
+ aplayer = aplayer ? `<div class="bber-music"><meting-js server="${aplayer[0].replace(aplayerRegex, '$1')}" type="song" id="${aplayer[0].replace(aplayerRegex, '$2')}" mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0"></meting-js></div>` : null;
78
+ video = item.content.match(playerRegex);
79
+ video = video ? `<div class="bber-video"><video src="${video[0].replace(playerRegex, '$1')}" controls="controls" style="object-fit: cover;"></video></div>` : item.content.match(bilibiliRegex);
80
+ video = item.content.match(bilibiliRegex) ? `<div class="bber-video"><iframe src="//player.bilibili.com/player.html?autoplay=0&bvid=${video[0].replace(bilibiliRegex, '$1')}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>` : video;
81
+ imageBox = item.content.match(imageRegex);
82
+ imageBox = imageBox ? `<div class="bber-content-img">${imageBox.map(img => `<img src="${img.replace(imageRegex, '$1')}" title="即刻短文配图" />`).join('')}</div>` : '';
83
+ let time = new Date(item.createdTs * 1000).toISOString().replace('Z', '+08:00');
84
+ let content = item.content.match(contentRegex).map(item => item.replace(contentRegex, '$1'));
85
+ return `<li class="item">
86
+ <div class="meta">
87
+ <img class="no-lightbox no-lazyload avatar" src="!{theme.aside.card.author.img}">
88
+ <div class="info">
89
+ <span class="bber_nick">#{config.author}</span>
90
+ <time class="datetime bber_date" datetime="${time}"></time>
91
+ </div>
92
+ ${content ? `<a class="bber-reply goComment" onclick="sco.toTalk('${content}')"><i class="scoicon sco-chat-fill" style="font-size: 1rem;"></i></a>` : ''}
93
+ </div>
94
+ <div id="bber-content">
95
+ <p class="datacont">${content}</p>
96
+ ${imageBox || ''}
97
+ </div>
98
+ ${video || ''}
99
+ ${aplayer || ''}
100
+ </li>`;
101
+ }).join('');
102
+ sco.reflashEssayWaterFall();
103
+ GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
104
+ GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
105
+ changeTimeFormat();
106
+ }).catch(error => console.log(error));
107
+ }();
File without changes
@@ -11,9 +11,9 @@
11
11
  #quit-box(onclick="RemoveRewardMask()")
12
12
  if theme.post.award.enable
13
13
  include ./award
14
- if theme.post.rss.enable
14
+ if theme.post.rss
15
15
  .reward-link.mode
16
- a.reward-link-button(href=url_for(theme.post.rss.url), title="订阅")
16
+ a.reward-link-button(href=url_for(theme.post.rss), title="订阅")
17
17
  i.scoicon.sco-plant-fill
18
18
  | 订阅
19
19
  if theme.post.default.copyright.enable || page.copyright
@@ -0,0 +1,12 @@
1
+ .post-ai
2
+ .ai-title
3
+ .ai-title-left
4
+ i.ai-title-icon.scoicon.sco-robot-fill
5
+ .ai-title-text 文章摘要
6
+ .ai-tag#ai-tag= theme.post_ai.modelName
7
+ .ai-explanation(style="display: block;")
8
+ .ai-suggestions
9
+ .ai-bottom
10
+ .ai-tips= theme.post_ai.tips
11
+ if theme.post_ai.report
12
+ a.ai-report(title="投诉", href=url_for(theme.post_ai.report)) 投诉
@@ -24,7 +24,7 @@
24
24
  span.post-meta-date(title=_p('meta_updated') + ' ' + full_date(page.updated))
25
25
  i.post-meta-icon.scoicon.sco-refresh-line
26
26
  time(datetime=date_xml(page.updated))= date_xml(page.updated)
27
- if theme.thirdparty.wordcount
27
+ if theme.wordcount
28
28
  span.post-meta-wordcount
29
29
  if theme.post.meta.wordcount
30
30
  i.post-meta-icon.scoicon.sco-word-fill(title=_p('post.meta_wordcount'))
@@ -48,7 +48,7 @@
48
48
  when "waline"
49
49
  span.waline-pageview-count
50
50
  i.scoicon.sco-loading-line
51
- else if theme.thirdparty.busuanzi
51
+ else if theme.busuanzi
52
52
  span#busuanzi_value_page_pv
53
53
  i.scoicon.sco-loading-line
54
54
  if theme.post.meta.comment && page.comment
File without changes
File without changes
@@ -29,7 +29,7 @@ if theme.footer.randomlink
29
29
  for (let i = 0; i < count; i++) {
30
30
  let index = utils.randomNum(linksCopy.length);
31
31
  const {link, name} = linksCopy[index];
32
- data += `<a class="footer-item" href="${link}">${name}</a>`;
32
+ data += `<a class="footer-item" href="${link}" target="_blank" rel="noopener noreferrer nofollow">${name}</a>`;
33
33
  linksCopy.splice(index, 1);
34
34
  }
35
35