hexo-theme-solitude 1.1.3 → 1.2.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 (254) hide show
  1. package/LICENSE +674 -19
  2. package/_config.yml +243 -193
  3. package/languages/en-US.yml +1 -0
  4. package/languages/zh-CN.yml +8 -8
  5. package/layout/404.pug +24 -0
  6. package/layout/archive.pug +11 -0
  7. package/layout/category.pug +16 -0
  8. package/layout/includes/console.pug +42 -0
  9. package/layout/includes/footer.pug +71 -0
  10. package/layout/includes/head/config.pug +79 -0
  11. package/layout/includes/head/pwa.pug +59 -0
  12. package/layout/includes/head.pug +29 -0
  13. package/layout/includes/header.pug +4 -0
  14. package/layout/includes/inject/body.pug +68 -0
  15. package/layout/{partial/compoment/inject/head.ejs → includes/inject/head.pug} +59 -35
  16. package/layout/includes/layout.pug +35 -0
  17. package/layout/{partial/loading.ejs → includes/loading.pug} +19 -17
  18. package/layout/includes/mixins/articleSort.pug +14 -0
  19. package/layout/includes/mixins/pagination.pug +8 -0
  20. package/layout/includes/nav.pug +22 -0
  21. package/layout/includes/page/about.pug +10 -0
  22. package/layout/includes/page/categories.pug +8 -0
  23. package/layout/includes/page/default.pug +2 -0
  24. package/layout/includes/page/echarts.pug +7 -0
  25. package/layout/includes/page/equipment.pug +3 -0
  26. package/layout/includes/page/links.pug +35 -0
  27. package/layout/includes/page/moments.pug +5 -0
  28. package/layout/includes/page/rss.pug +22 -0
  29. package/layout/includes/page/says.pug +20 -0
  30. package/layout/includes/page/tags.pug +8 -0
  31. package/layout/includes/page/tlink.pug +9 -0
  32. package/layout/includes/recent-posts.pug +9 -0
  33. package/layout/includes/sidebar.pug +17 -0
  34. package/layout/includes/widgets/aside/aside.pug +18 -0
  35. package/layout/includes/widgets/aside/asideAllInfo.pug +8 -0
  36. package/layout/includes/widgets/aside/asideArchive.pug +9 -0
  37. package/layout/includes/widgets/aside/asideFlipCard.pug +5 -0
  38. package/layout/includes/widgets/aside/asideHistory.pug +8 -0
  39. package/layout/includes/widgets/aside/asideInfoCard.pug +22 -0
  40. package/layout/includes/widgets/aside/asideNewestPost.pug +16 -0
  41. package/layout/includes/widgets/aside/asidePower.pug +19 -0
  42. package/layout/includes/widgets/aside/asideSwitch.pug +26 -0
  43. package/layout/includes/widgets/aside/asideTag.pug +11 -0
  44. package/layout/includes/widgets/aside/asideToc.pug +5 -0
  45. package/layout/includes/widgets/aside/asideWebInfo.pug +40 -0
  46. package/layout/includes/widgets/aside/asideWelcome.pug +12 -0
  47. package/layout/includes/widgets/home/banner.pug +16 -0
  48. package/layout/includes/widgets/home/bbTimeList.pug +8 -0
  49. package/layout/includes/widgets/home/categoryBar.pug +10 -0
  50. package/layout/includes/widgets/home/categoryGroup.pug +9 -0
  51. package/layout/includes/widgets/home/hometop.pug +9 -0
  52. package/layout/includes/widgets/home/postList.pug +26 -0
  53. package/layout/includes/widgets/home/rencentPost.pug +26 -0
  54. package/layout/includes/widgets/home/topGroup.pug +27 -0
  55. package/layout/includes/widgets/nav/left.pug +10 -0
  56. package/layout/includes/widgets/nav/menu.pug +16 -0
  57. package/layout/includes/widgets/nav/right.pug +23 -0
  58. package/layout/includes/widgets/page/about/authorinfo.pug +12 -0
  59. package/layout/includes/widgets/page/about/award.pug +34 -0
  60. package/layout/includes/widgets/page/about/contentinfo.pug +38 -0
  61. package/layout/includes/widgets/page/about/hobbies.pug +33 -0
  62. package/layout/includes/widgets/page/about/motto.pug +19 -0
  63. package/layout/includes/widgets/page/about/other.pug +61 -0
  64. package/layout/includes/widgets/page/about/personalities.pug +16 -0
  65. package/layout/includes/widgets/page/about/skillsinfo.pug +41 -0
  66. package/layout/includes/widgets/page/banner.pug +14 -0
  67. package/layout/includes/widgets/page/equipment/content.pug +23 -0
  68. package/layout/includes/widgets/page/links/banner.pug +30 -0
  69. package/layout/includes/widgets/page/links/linksCard.pug +18 -0
  70. package/layout/includes/widgets/page/links/linksItem.pug +14 -0
  71. package/layout/includes/widgets/page/moments/angle.pug +24 -0
  72. package/layout/includes/widgets/page/moments/index.pug +18 -0
  73. package/layout/includes/widgets/page/says/saysBottom.pug +11 -0
  74. package/layout/includes/widgets/page/says/saysContent.pug +6 -0
  75. package/layout/includes/widgets/page/says/saysFunction.pug +10 -0
  76. package/layout/includes/widgets/page/says/saysMeta.pug +7 -0
  77. package/layout/includes/widgets/post/award.pug +48 -0
  78. package/layout/includes/widgets/post/copyright.pug +27 -0
  79. package/layout/includes/widgets/post/postMeta.pug +55 -0
  80. package/layout/includes/widgets/post/postNav.pug +25 -0
  81. package/layout/includes/widgets/post/wave.pug +9 -0
  82. package/layout/includes/widgets/randomlink.pug +32 -0
  83. package/layout/includes/widgets/rightside/index.pug +74 -0
  84. package/layout/includes/widgets/third-party/comments/comment.pug +14 -0
  85. package/layout/includes/widgets/third-party/comments/gitalk.pug +0 -0
  86. package/layout/{partial/compoment/third-party/comments/twikoo.ejs → includes/widgets/third-party/comments/twikoo.pug} +8 -9
  87. package/layout/includes/widgets/third-party/comments/valine.pug +0 -0
  88. package/layout/includes/widgets/third-party/music.pug +3 -0
  89. package/layout/includes/widgets/third-party/pjax.pug +30 -0
  90. package/layout/includes/widgets/third-party/search/algolia-search.pug +16 -0
  91. package/layout/includes/widgets/third-party/search/index.pug +7 -0
  92. package/layout/includes/widgets/third-party/search/local-search.pug +15 -0
  93. package/layout/index.pug +20 -0
  94. package/layout/page.pug +32 -0
  95. package/layout/post.pug +43 -0
  96. package/layout/tag.pug +19 -0
  97. package/package.json +4 -4
  98. package/scripts/event/page.js +20 -2
  99. package/scripts/filter/checkThemeConfig.js +0 -1
  100. package/scripts/filter/randomPosts.js +0 -1
  101. package/scripts/helper/{charts.js → echarts.js} +27 -28
  102. package/scripts/helper/stylus.js +23 -0
  103. package/scripts/tags/bvideo.js +1 -36
  104. package/source/css/_comment/index.styl +121 -0
  105. package/source/css/_comment/twikoo.styl +515 -0
  106. package/source/css/_extra/console.styl +354 -0
  107. package/source/css/_extra/rightmenu.styl +83 -0
  108. package/source/css/_global/animation.css +756 -0
  109. package/source/css/_global/function.styl +83 -0
  110. package/source/css/_global/index.styl +120 -0
  111. package/source/css/_global/var.styl +1 -0
  112. package/source/css/_layout/articleSort.styl +199 -0
  113. package/source/css/_layout/base.styl +392 -0
  114. package/source/css/_layout/footer.styl +359 -0
  115. package/source/css/_layout/header.styl +1331 -0
  116. package/source/css/_layout/index.styl +293 -0
  117. package/source/css/_layout/sidebar.styl +226 -0
  118. package/source/css/_mode/index.styl +52 -0
  119. package/source/css/_page/about.styl +944 -0
  120. package/source/css/_page/category.styl +141 -0
  121. package/source/css/_page/equipment.styl +108 -0
  122. package/source/css/_page/error.styl +161 -0
  123. package/source/css/_page/home.styl +58 -0
  124. package/source/css/_page/homeTop.styl +1035 -0
  125. package/source/css/_page/index.styl +22 -0
  126. package/source/css/_page/link.styl +433 -0
  127. package/source/css/_page/moment.styl +186 -0
  128. package/source/css/_page/rss.styl +87 -0
  129. package/source/css/_page/says.styl +353 -0
  130. package/source/css/_page/tag.styl +56 -0
  131. package/source/css/_post/commentBarrage.styl +149 -0
  132. package/source/css/_post/externalTags.styl +694 -0
  133. package/source/css/_post/highlight.styl +96 -0
  134. package/source/css/_post/index.styl +935 -0
  135. package/source/css/_post/pagination.styl +467 -0
  136. package/source/css/_post/postContent.styl +957 -0
  137. package/source/css/_post/relatedPost.styl +160 -0
  138. package/source/css/_post/reward.styl +217 -0
  139. package/source/css/_search/algolia-search.styl +206 -0
  140. package/source/css/_search/local-search.styl +112 -0
  141. package/source/css/_widgets/aside/allinfo.styl +134 -0
  142. package/source/css/_widgets/aside/flip.styl +68 -0
  143. package/source/css/_widgets/aside/history.styl +35 -0
  144. package/source/css/_widgets/aside/index.styl +156 -0
  145. package/source/css/_widgets/aside/info.styl +263 -0
  146. package/source/css/_widgets/aside/newPost.styl +55 -0
  147. package/source/css/_widgets/aside/power.styl +90 -0
  148. package/source/css/_widgets/aside/toc.styl +85 -0
  149. package/source/css/_widgets/aside/welcome.styl +14 -0
  150. package/source/css/_widgets/index.styl +3 -0
  151. package/source/css/index.styl +40 -0
  152. package/source/js/commentBarrage.js +8 -5
  153. package/source/js/extend/console/comment.js +60 -63
  154. package/source/js/extend/covercolor/local.js +1 -1
  155. package/source/js/extend/search/algolia-search.js +104 -111
  156. package/source/js/extend/search/local-search.js +7 -7
  157. package/source/js/main.js +655 -505
  158. package/source/js/utils.js +131 -137
  159. package/layout/404.ejs +0 -34
  160. package/layout/archive.ejs +0 -10
  161. package/layout/category.ejs +0 -18
  162. package/layout/index.ejs +0 -20
  163. package/layout/layout.ejs +0 -30
  164. package/layout/page/about.ejs +0 -15
  165. package/layout/page/categories.ejs +0 -12
  166. package/layout/page/circle.ejs +0 -5
  167. package/layout/page/echarts.ejs +0 -1
  168. package/layout/page/equipment.ejs +0 -2
  169. package/layout/page/links.ejs +0 -46
  170. package/layout/page/page.ejs +0 -3
  171. package/layout/page/rss.ejs +0 -39
  172. package/layout/page/says.ejs +0 -17
  173. package/layout/page/tags.ejs +0 -12
  174. package/layout/page/tlink.ejs +0 -11
  175. package/layout/page.ejs +0 -45
  176. package/layout/partial/body.ejs +0 -7
  177. package/layout/partial/compoment/about/authorinfo.ejs +0 -18
  178. package/layout/partial/compoment/about/award.ejs +0 -59
  179. package/layout/partial/compoment/about/contentinfo.ejs +0 -33
  180. package/layout/partial/compoment/about/hobbies.ejs +0 -53
  181. package/layout/partial/compoment/about/motto.ejs +0 -17
  182. package/layout/partial/compoment/about/other.ejs +0 -76
  183. package/layout/partial/compoment/about/personalities.ejs +0 -11
  184. package/layout/partial/compoment/about/skillsinfo.ejs +0 -62
  185. package/layout/partial/compoment/aside/aside.ejs +0 -28
  186. package/layout/partial/compoment/aside/asideAllInfo.ejs +0 -6
  187. package/layout/partial/compoment/aside/asideArchive.ejs +0 -11
  188. package/layout/partial/compoment/aside/asideFlipCard.ejs +0 -72
  189. package/layout/partial/compoment/aside/asideHistory.ejs +0 -49
  190. package/layout/partial/compoment/aside/asideInfoCard.ejs +0 -39
  191. package/layout/partial/compoment/aside/asideNewestPost.ejs +0 -31
  192. package/layout/partial/compoment/aside/asidePower.ejs +0 -31
  193. package/layout/partial/compoment/aside/asideSwitch.ejs +0 -41
  194. package/layout/partial/compoment/aside/asideTag.ejs +0 -5
  195. package/layout/partial/compoment/aside/asideToc.ejs +0 -11
  196. package/layout/partial/compoment/aside/asideWebInfo.ejs +0 -60
  197. package/layout/partial/compoment/aside/asideWelcome.ejs +0 -33
  198. package/layout/partial/compoment/circle/angle.ejs +0 -26
  199. package/layout/partial/compoment/circle/banner.ejs +0 -11
  200. package/layout/partial/compoment/circle/content.ejs +0 -19
  201. package/layout/partial/compoment/dorakika/rightmenu.ejs +0 -100
  202. package/layout/partial/compoment/equipment/list.ejs +0 -37
  203. package/layout/partial/compoment/home/homeCategoryBar.ejs +0 -11
  204. package/layout/partial/compoment/home/postList.ejs +0 -37
  205. package/layout/partial/compoment/hometop/bbTimeList.ejs +0 -15
  206. package/layout/partial/compoment/hometop/categoryGroup.ejs +0 -19
  207. package/layout/partial/compoment/hometop/groupTag.ejs +0 -30
  208. package/layout/partial/compoment/hometop/topGroup.ejs +0 -41
  209. package/layout/partial/compoment/inject/body.ejs +0 -70
  210. package/layout/partial/compoment/links/angle.ejs +0 -26
  211. package/layout/partial/compoment/links/banner.ejs +0 -42
  212. package/layout/partial/compoment/links/linksCard.ejs +0 -27
  213. package/layout/partial/compoment/links/linksItem.ejs +0 -21
  214. package/layout/partial/compoment/mixins/articleSort.ejs +0 -26
  215. package/layout/partial/compoment/mixins/pagination.ejs +0 -11
  216. package/layout/partial/compoment/nav/left.ejs +0 -22
  217. package/layout/partial/compoment/nav/menu.ejs +0 -25
  218. package/layout/partial/compoment/nav/right.ejs +0 -42
  219. package/layout/partial/compoment/post/award.ejs +0 -60
  220. package/layout/partial/compoment/post/copyright.ejs +0 -39
  221. package/layout/partial/compoment/post/postMeta.ejs +0 -85
  222. package/layout/partial/compoment/post/postNav.ejs +0 -41
  223. package/layout/partial/compoment/post/wave.ejs +0 -14
  224. package/layout/partial/compoment/says/banner.ejs +0 -10
  225. package/layout/partial/compoment/says/saysBottom.ejs +0 -18
  226. package/layout/partial/compoment/says/saysContent.ejs +0 -10
  227. package/layout/partial/compoment/says/saysFunction.ejs +0 -15
  228. package/layout/partial/compoment/third-party/comments/comment.ejs +0 -12
  229. package/layout/partial/compoment/third-party/comments/twikoo_k.ejs +0 -29
  230. package/layout/partial/compoment/third-party/music.ejs +0 -5
  231. package/layout/partial/compoment/third-party/pjax.ejs +0 -31
  232. package/layout/partial/compoment/third-party/search/algolia-search.ejs +0 -20
  233. package/layout/partial/compoment/third-party/search/index.ejs +0 -10
  234. package/layout/partial/compoment/third-party/search/local-search.ejs +0 -22
  235. package/layout/partial/compoment/tlink/banner.ejs +0 -10
  236. package/layout/partial/console.ejs +0 -68
  237. package/layout/partial/footer.ejs +0 -109
  238. package/layout/partial/head.ejs +0 -37
  239. package/layout/partial/header.ejs +0 -6
  240. package/layout/partial/hometop.ejs +0 -15
  241. package/layout/partial/nav.ejs +0 -34
  242. package/layout/partial/pwa.ejs +0 -40
  243. package/layout/partial/sidebar.ejs +0 -31
  244. package/layout/post.ejs +0 -52
  245. package/layout/tag.ejs +0 -19
  246. package/scripts/helper/randomLinks.js +0 -16
  247. package/scripts/helper/themeJsExport.js +0 -79
  248. package/source/css/commentBarrage.css +0 -174
  249. package/source/css/custom.css +0 -901
  250. package/source/css/main.css +0 -16285
  251. package/source/css/search/algolia-search.css +0 -141
  252. package/source/css/search/local-search.css +0 -138
  253. package/source/css/var.css +0 -189
  254. /package/source/js/{rightmenu.js → rightside.js} +0 -0
@@ -0,0 +1,34 @@
1
+ - var sum = 0
2
+ if site.data.about.rewardList
3
+ .author-content
4
+ .author-content-item.single.reward
5
+ .author-content-item-tips 致谢
6
+ span.author-content-item-title 赞赏名单
7
+ .author-content-item-description
8
+ = "感谢赞赏的人,因为你们,让我感受到写博客这件事情能够给你们创造了价值。这会让我在这条路上走得更远。"
9
+ .reward-list-all
10
+ each reward in site.data.about.rewardList
11
+ - sum += reward.money
12
+ .reward-list-item
13
+ .reward-list-item-name= reward.name
14
+ .reward-list-bottom-group
15
+ .reward-list-item-money(style=reward.vip ? "background: var(--sco-vip);" : "") ¥ #{reward.money}
16
+ time.datatime.reward-list-item-time(datetime=moment(reward.time).format())
17
+ if theme.post.award.enable
18
+ .post-reward
19
+ .post-reward(onclick="AddRewardMask()")
20
+ .reward-button(title="赞赏作者")
21
+ i.scoicon.sco-hand-heart-fill
22
+ = "打赏作者"
23
+ .reward-main
24
+ ul.reward-all
25
+ span.reward-title 感谢你赐予我前进的力量
26
+ ul.reward-group
27
+ - var rewards = [{image: theme?.post?.award?.wechat, description: '微信'}, {image: theme?.post?.award?.alipay, description: '支付宝'}]
28
+ each reward in rewards
29
+ li.reward-item
30
+ a(href=reward.image, target="_blank")
31
+ img.post-qr-code-img(alt=reward.description, src=reward.image)
32
+ .post-qr-code-desc= reward.description
33
+ .reward-list-tips
34
+ p 总金额:¥ #{sum},将全部用于博客的维护
@@ -0,0 +1,38 @@
1
+ - const contentinfo = site.data.about.contentinfo
2
+
3
+ .author-content
4
+ .author-content-item.myInfoAndSayHello
5
+ .title1 你好,很高兴认识你👋
6
+ .title2 我叫
7
+ span.inline-word= contentinfo.name
8
+ .title1 是一名 #{contentinfo.title}
9
+ .aboutsiteTips.author-content-item
10
+ .author-content-item-tips 追求
11
+ h2
12
+ | 源于
13
+ br
14
+ | 热爱而去
15
+ span.inline-word 创造
16
+ .mask
17
+ span.first-tips(data-show='')= contentinfo.product
18
+ span= contentinfo.design
19
+ span= contentinfo.program
20
+ span(data-up='')= contentinfo.user_experience
21
+
22
+ script.
23
+ var pursuitInterval = null;
24
+ pursuitInterval = setInterval(function () {
25
+ const show = document.querySelector('span[data-show]')
26
+ const next = show.nextElementSibling || document.querySelector('.first-tips')
27
+ const up = document.querySelector('span[data-up]')
28
+ if (up) {
29
+ up.removeAttribute('data-up')
30
+ }
31
+ show.removeAttribute('data-show')
32
+ show.setAttribute('data-up', '')
33
+ next.setAttribute('data-show', '')
34
+ }, 2000)
35
+
36
+ document.addEventListener('pjax:send', function(){
37
+ clearInterval(pursuitInterval);
38
+ });
@@ -0,0 +1,33 @@
1
+ .author-content
2
+ if site.data.about.game1
3
+ .author-content-item.game-apex(style=`background: url(${site.data.about.game1.img}) no-repeat top; background-size: cover;`)
4
+ .card-content
5
+ .author-content-item-tips= site.data.about.game1.title
6
+ span.author-content-item-title= site.data.about.game1.subtitle
7
+ .content-bottom
8
+ .tips= site.data.about.game1.tips_left
9
+ .tips= site.data.about.game1.tips_right
10
+ if site.data.about.game2
11
+ .author-content-item.game-jl(style=`background: url(${site.data.about.game2.img}) no-repeat top; background-size: cover;`)
12
+ .card-content
13
+ .author-content-item-tips= site.data.about.game2.title
14
+ span.author-content-item-title= site.data.about.game2.subtitle
15
+ .content-bottom
16
+ .tips= site.data.about.game2.tips_left
17
+ .tips= site.data.about.game2.tips_right
18
+
19
+ if site.data.about.likes
20
+ - const likes = site.data.about.likes
21
+ .author-content
22
+ each like in likes
23
+ .author-content-item(class=like.type, style=`background: url(${like.bg}) no-repeat center;`)
24
+ .card-content
25
+ .author-content-item-tips= like.tips
26
+ span.author-content-item-title= like.title
27
+ .content-bottom
28
+ .tips= like.subtips
29
+ if like.button
30
+ .banner-button-group
31
+ a.banner-button(href=like.button_link, target="_blank", rel="noopener nofollow")
32
+ i.scoicon.sco-right-btn-fill
33
+ span.banner-button-text= like.button_text
@@ -0,0 +1,19 @@
1
+ - const motto = site.data.about.motto
2
+ - const expertise = site.data.about.expertise
3
+
4
+ .author-content
5
+ .author-content-item.maxim
6
+ .author-content-item-tips= motto.title
7
+ span.maxim-title
8
+ span(style="opacity: 0.6; margin-bottom:8px;")= 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(style="opacity: 0.6; margin-bottom:8px;")
15
+ | #{expertise.prefix}
16
+ span.inline-word= expertise.specialist
17
+ span
18
+ | #{expertise.content}
19
+ span.inline-word= expertise.level
@@ -0,0 +1,61 @@
1
+ .author-content
2
+ if site.data.about.tj
3
+ .about-statistic.author-content-item(style=`background: url(${site.data.about.tj.img});`)
4
+ .card-content
5
+ .author-content-item-tips 数据
6
+ span.author-content-item-title 访问统计
7
+ #statistic
8
+ .post-tips
9
+ | 统计信息来自
10
+ a(href="https://invite.51.la/1NzKqTeb?target=V6", target="_blank", rel="noopener nofollow") 51la网站统计
11
+ if theme.about.echarts.enable
12
+ .banner-button-group
13
+ a.banner-button(onclick="pjax.loadUrl('/echart/');", data-pjax-state="")
14
+ i.scoicon.sco-right-btn-fill
15
+ span.banner-button-text 文章统计
16
+ script.
17
+ fetch("#{site.data.about.tj.url}")
18
+ .then(res => res.text())
19
+ .then(data => {
20
+ let title = ["最近活跃", "今日人数", "今日访问", "昨日人数", "昨日访问", "本月访问", "总访问量"];
21
+ let num = data.match(/(<\/span><span>).*?(\/span><\/p>)/g);
22
+ num = num.map(el => {
23
+ let val = el.replace(/(<\/span><span>)/g, "");
24
+ let str = val.replace(/(<\/span><\/p>)/g, "");
25
+ return str;
26
+ });
27
+ let s = document.getElementById("statistic");
28
+ let statistic = [];
29
+ for (let i = 0; i < num.length; i++) {
30
+ if (i == 0 || i == num.length - 1) continue;
31
+ s.innerHTML += "<div><span>" + title[i] + "</span><span id=" + title[i] + ">" + num[i] + "</span></div>";
32
+ }
33
+ });
34
+
35
+ if site.data.about.oneself
36
+ style.
37
+ :root {
38
+ --site-about-oneself-map--light: url(#{site.data.about.oneself.map.light});
39
+ --site-about-oneself-map--dark: url(#{site.data.about.oneself.map.dark});
40
+ }
41
+ - const oneself = site.data.about.oneself
42
+ .author-content-item-group.column.mapAndInfo
43
+ .author-content-item.map.single
44
+ span.map-title 我现在住在 #{oneself.location}
45
+ .author-content-item.selfInfo.single
46
+ div
47
+ span.selfInfo-title 生于
48
+ span.selfInfo-content(style="color: #43a6c6;")= oneself.birthYear
49
+ div
50
+ span.selfInfo-title= oneself.university
51
+ span.selfInfo-content(style="color: #c69043;")= oneself.major
52
+ div
53
+ span.selfInfo-title 现在职业
54
+ span.selfInfo-content(style="color: #b04fe6;")= oneself.occupation
55
+
56
+ if site.data.about.cause
57
+ .author-content
58
+ .create-site-post.author-content-item.single
59
+ .author-content-item-tips 心路历程
60
+ span.author-content-item-title 为什么建站?
61
+ != site.data.about.cause
@@ -0,0 +1,16 @@
1
+ - const personalities = site.data.about.personalities
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/", target="_blank", rel="noopener nofollow")= personalities.linkText
13
+ | 了解更多关于
14
+ a(target="_blank", rel="noopener external nofollow", href=personalities.typeLink)= personalities.typeName
15
+ .author-content-item.myphoto
16
+ img.author-content-img(src=personalities.myphoto, alt="自拍")
@@ -0,0 +1,41 @@
1
+ - var skills = site.data.about.skills
2
+ - var careers = site.data.about.careers
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
+ .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
+ .author-content-item.careers
33
+ .card-content
34
+ .author-content-item-tips= careers.title
35
+ span.author-content-item-title= careers.subtitle
36
+ .careers-group
37
+ each item in careers.items
38
+ .careers-item
39
+ .circle(style=`background:${item.color}`)
40
+ .name= `${item.school}, ${item.major}`
41
+ img.author-content-img(src=careers.image, alt=careers.title)
@@ -0,0 +1,14 @@
1
+ .author-content.author-content-item.single.nolazyload(style=`background: url(${page.cover}) no-repeat center; background-size: cover;`,class=`${pageClass}`)
2
+ .card-content
3
+ .author-content-item-tips= page.title
4
+ span.author-content-item-title= page.desc
5
+ .content-bottom
6
+ if (page.leftend)
7
+ .tips!= page.leftend
8
+ if(page.rightend)
9
+ .tips!= page.rightend
10
+ if page.rightbtn
11
+ .banner-button-group
12
+ a.banner-button(onclick="pjax.loadUrl(\"" + page.rightbtnlink + "\")", data-pjax-state)
13
+ i.scoicon.sco-right-btn-fill
14
+ span.banner-button-text= page.rightbtn
@@ -0,0 +1,23 @@
1
+ #equipment
2
+ if site.data.equipment
3
+ each i in site.data.equipment
4
+ .equipment-item
5
+ h2.equipment-item-title= i.class_name
6
+ .equipment-item-description= i.description
7
+ .equipment-item-content
8
+ each item in i.equipment_list
9
+ .equipment-item-content-item
10
+ .equipment-item-content-item-cover
11
+ img.equipment-item-content-item-image(src=item.image, alt=item.name)
12
+ .equipment-item-content-item-info
13
+ .equipment-item-content-item-name= item.name
14
+ .equipment-item-content-item-specification= item.specification
15
+ .equipment-item-content-item-description= item.description
16
+ if item.link
17
+ .equipment-item-content-item-toolbar
18
+ if item.link.includes('https://') || item.link.includes('http://')
19
+ a.equipment-item-content-item-link(href=item.link, target="_blank") 详情
20
+ else
21
+ a.equipment-item-content-item-link(href=item.link, target="_blank") 查看文章
22
+ a.bber-reply(onclick=`sco.toTalk('${item.description}')`)
23
+ i.scoicon.sco-chat-fill(style="font-size: 1rem;")
@@ -0,0 +1,30 @@
1
+ .banners-title
2
+ .banners-title-small= page.title
3
+ .banners-title-big= page.desc
4
+
5
+ .banner-button-group
6
+ if theme.footer.randomlink
7
+ a.banner-button.secondary(onclick="travelling()")
8
+ i.scoicon.sco-signal-tower-fill
9
+ span.banner-button-text 随机访问
10
+ a.banner-button(onclick="sco.scrollToComment()")
11
+ i.scoicon.sco-right-btn-fill
12
+ span.scoicon.banner-button-text 申请友链
13
+
14
+ .tags-group-all.nowrapMove
15
+ .tags-group-wrapper
16
+ - const data = site.data.links.links
17
+ - for (let i = 0; i < 2; i++)
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, title=y.name)
@@ -0,0 +1,18 @@
1
+ .site-card-group
2
+ each item in data.link_list
3
+ .site-card
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
9
+ a.img(title=item.name, href=url_for(item.link))
10
+ img.flink-avatar(src=item.topimg, alt=item.name)
11
+ .img-alt.is-center= item.name
12
+ a.info.cf-friends-link(title=item.name, href=url_for(item.link))
13
+ .site-card-avatar
14
+ img.flink-avatar.cf-friends-avatar(src=item.avatar, alt=item.name)
15
+ .img-alt.is-center= item.name
16
+ .site-card-text
17
+ span.title.cf-friends-name= item.name
18
+ span.desc(title=item.descr)= item.descr
@@ -0,0 +1,14 @@
1
+ .flink-list
2
+ each item in data.link_list
3
+ .flink-list-item
4
+ 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)
11
+ .img-alt.is-center= item.name
12
+ .flink-item-info
13
+ span.flink-item-name.cf-friends-name= item.name
14
+ span.flink-item-desc(title=item.descr)= item.descr
@@ -0,0 +1,24 @@
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();", rel="external nofollow", style="transition-duration: 0.3s; transform: rotate(63000deg); opacity: 1;", data-pjax-state="")
5
+ i.scoicon.refresh-line(hidden="hidden")
6
+ .title-h2-a-right
7
+ a.random-post-all(href="/links/", data-pjax-state="") 全部友链
8
+
9
+ #random-post
10
+
11
+ .title-h2-a
12
+ .title-h2-a-left
13
+ h2(style="padding-top: 0;margin:0.6rem 0 0.6rem;") 🐟 鱼塘
14
+ .title-h2-a-right
15
+ span 以下内容自动生成,未经过审核
16
+
17
+ script.
18
+ var fdata = {
19
+ apiurl: "#{theme.thirdparty.circle.api}",
20
+ defaultFish: 100,
21
+ hungryFish: 100,
22
+ }
23
+
24
+ script(src="/lib/friends_post.js")
@@ -0,0 +1,18 @@
1
+ div#hexo-circle-of-friends-root
2
+ script.
3
+ let UserConfig = {
4
+ // 填写你的api地址
5
+ private_api_url: '!{theme.thirdparty.circle.api}',
6
+ // 默认加载文章数
7
+ page_init_number: !{theme.thirdparty.circle.page_init_number},
8
+ // 点击加载更多时,一次最多加载几篇文章,默认10
9
+ page_turning_number: !{theme.thirdparty.circle.page_turning_number},
10
+ // 头像加载失败时,默认头像地址
11
+ error_img: '!{theme.thirdparty.circle.error_img}',
12
+ // 进入页面时第一次的排序规则
13
+ sort_rule: '!{theme.thirdparty.circle.sort_rule}',
14
+ // 本地文章缓存数据过期时间(天)
15
+ expire_days: !{theme.thirdparty.circle.expire_days},
16
+ }
17
+ script(src=url_for(theme.thirdparty.circle.appjs))
18
+ script(src=url_for(theme.thirdparty.circle.bundlejs))
@@ -0,0 +1,11 @@
1
+ .bber-bottom
2
+ .bber-info
3
+ .bber-info-time
4
+ i.scoicon.sco-calendar-todo-fill
5
+ time.datetime(datetime=moment(item.date).format())
6
+ if item.link
7
+ a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接")
8
+ i.scoicon.sco-link-m-line
9
+ | 链接
10
+ a.bber-reply(onclick=`sco.toTalk('${item.content}')`)
11
+ i.scoicon.sco-chat-fill(style="font-size: 1rem;")
@@ -0,0 +1,6 @@
1
+ #bber-content
2
+ p.datacont= item.content
3
+ if item.image
4
+ .bber-content-img
5
+ each img in item.image
6
+ img(src=img title="即刻短文配图")
@@ -0,0 +1,10 @@
1
+ if item.aplayer
2
+ .bber-music
3
+ meting-js(server=item.aplayer.server type="song" id=item.aplayer.id mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0")
4
+
5
+ if item.video
6
+ .bber-video
7
+ if item.video.player
8
+ video(src=item.video.player controls="controls" style="object-fit: cover;")
9
+ if item.video.bilibili
10
+ iframe(src=item.video.bilibili scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true")
@@ -0,0 +1,7 @@
1
+ .meta
2
+ img.no-lightbox.no-lazyload.avatar(src=theme.aside.card.author.img)
3
+ .info
4
+ span.bber_nick= config.author
5
+ time.datetime.bber_date(datetime=moment(item.date).format())
6
+ a.bber-reply.goComment(onclick=`sco.toTalk('${item.content}')`)
7
+ i.scoicon.sco-chat-fill(style="font-size: 1rem;")
@@ -0,0 +1,48 @@
1
+ div.post-reward
2
+ div.reward-button.button--animated(onclick="AddRewardMask()" title="赞赏作者")
3
+ i.scoicon.sco-hand-heart-fill
4
+ | 打赏作者
5
+ div.reward-main
6
+ ul.reward-all
7
+ span.reward-title 感谢你赐予我前进的力量
8
+ ul.reward-group
9
+ if theme.post.award.wechat
10
+ li.reward-item
11
+ a(href=theme.post.award.wechat target="_blank")
12
+ img.post-qr-code-img(src=theme.post.award.wechat alt="微信")
13
+ div.post-qr-code-desc 微信
14
+ if theme.post.award.alipay
15
+ li.reward-item
16
+ a(href=theme.post.award.alipay target="_blank")
17
+ img.post-qr-code-img(src=theme.post.award.alipay alt="支付宝")
18
+ div.post-qr-code-desc 支付宝
19
+ a.reward-main-btn(href=url_for(theme.post.award.url))
20
+ div.reward-text 赞赏者名单
21
+ div.reward-dec 因为你们的支持让我意识到写文章的价值🙏
22
+
23
+ script.
24
+ function RemoveRewardMask() {
25
+ let rewardMainElements = document.querySelectorAll(".reward-main");
26
+ let quitBoxElement = document.querySelector("#quit-box");
27
+
28
+ rewardMainElements.forEach(element => {
29
+ element.style.display = "none";
30
+ });
31
+
32
+ if (quitBoxElement) {
33
+ quitBoxElement.style.display = "none";
34
+ }
35
+ }
36
+
37
+ function AddRewardMask() {
38
+ let rewardMainElements = document.querySelectorAll(".reward-main");
39
+ let quitBoxElement = document.querySelector("#quit-box");
40
+
41
+ rewardMainElements.forEach(element => {
42
+ element.style.display = "flex";
43
+ });
44
+
45
+ if (quitBoxElement) {
46
+ quitBoxElement.style.display = "flex";
47
+ }
48
+ }
@@ -0,0 +1,27 @@
1
+ div.post-copyright
2
+ div.post-copyright__author_group
3
+ a.post-copyright__author_img(href="/about/", data-pjax-state="")
4
+ img.post-copyright__author_img_back(src=theme.post.author_back)
5
+ img.post-copyright__author_img_front(src=theme.site.icon)
6
+ div.post-copyright__author_name= config.title
7
+ div.post-copyright__author_desc= config.subtitle
8
+ div.post-tools#post-tools
9
+ div.post-tools-left
10
+ if theme.post.award.enable
11
+ include ./award
12
+ if theme.footer.rss.enable
13
+ div.reward-link.mode
14
+ a.reward-link-button(href=theme.footer.rss.url)
15
+ i.scoicon.sco-plant-fill
16
+ | 订阅
17
+ if theme.post.default.copyright.enable || page.copyright
18
+ div.post-copyright__notice
19
+ span.post-copyright-info
20
+ if page.reprint
21
+ | 本文是转载或翻译文章,版权归原作者所有。转载本文请联系原作者。
22
+ else
23
+ | 本文是原创文章,采用
24
+ a(href=url_for(theme.post.default.copyright.licenurl), target="_blank")
25
+ | #{theme.post.default.copyright.license}
26
+ | 协议,完整转载请注明来自
27
+ a(href="/", target="_blank") #{config.title}
@@ -0,0 +1,55 @@
1
+ div.coverdiv#coverdiv
2
+ img#post-cover.nolazyload(src=url_for(page.cover), alt=page.title)
3
+ div#post-info
4
+ div#post-firstinfo
5
+ div.meta-firstline
6
+ - var cc = reprint ? '转载或翻译' : '原创'
7
+ a.post-meta-original(title="该文章为" + cc + "文章,注意版权协议")= cc
8
+ if page.categories.data.length > 0
9
+ span.post-meta-categories
10
+ a.post-meta-categories(href=page.categories.data[0].path)= page.categories.data[0].name
11
+ div.tag_share
12
+ div.post-meta__tag-list
13
+ each tag in page.tags.data
14
+ a.post-meta__tags(href=url_for(tag.path))
15
+ span.tags-name.tags-punctuation= tag.name
16
+ h1.post-title= page.title
17
+ div#post-meta
18
+ div.meta-secondline
19
+ if theme.post.meta.date
20
+ span.post-meta-date(title="发布于")
21
+ i.post-meta-icon.scoicon.sco-calendar-todo-fill
22
+ time(datetime=date_xml(page.date))= date_xml(page.date)
23
+ if theme.post.meta.updated
24
+ span.post-meta-date(title="最后更新于")
25
+ i.post-meta-icon.scoicon.sco-refresh-line
26
+ time(datetime=date_xml(page.updated))= date_xml(page.updated)
27
+ if theme.thirdparty.wordcount
28
+ span.post-meta-wordcount
29
+ if theme.post.meta.wordcount
30
+ i.post-meta-icon.scoicon.sco-word-fill(title="文章字数")
31
+ span.word-count= wordcount(page.content)
32
+ span.post-meta-separator
33
+ if theme.post.meta.readtime
34
+ i.post-meta-icon.scoicon.sco-clock-fill(title="阅读耗时")
35
+ span= min2read(page.content) + " min"
36
+ if theme.post.meta.locate
37
+ span.post-meta-position(title="作者IP归属地为" + page.locate)
38
+ i.post-meta-icon.scoicon.sco-map-pin-fill
39
+ span= page.locate
40
+ if theme.thirdparty.busuanzi.enable && theme.post.meta.pv
41
+ a.post-meta-pv(href=url_for(page.path), title="文章热度")
42
+ i.post-meta-icon.scoicon.sco-fire-fill
43
+ if theme.thirdparty.busuanzi.usecomment
44
+ span#twikoo_visitors
45
+ i.scoicon.sco-loading-line
46
+ else
47
+ span#busuanzi_value_page_pv
48
+ i.scoicon.sco-loading-line
49
+ if theme.post.meta.comment && page.comment
50
+ span.post-meta-commentcount(title="评论数", onclick="sco.scrollTo('post-comment')")
51
+ i.scoicon.sco-chat-fill
52
+ a(href=url_for(page.path) + "#post-comment")
53
+ span#twikoo-count
54
+ i.scoicon.sco-loading-line
55
+ include ./wave
@@ -0,0 +1,25 @@
1
+ nav.needEndHide.pagination-post#pagination
2
+ if page.prev && page.next
3
+ div.prev-post.pull-left
4
+ a(href=url_for(page.prev.path))
5
+ div.pagination-info
6
+ div.label 上一篇
7
+ div.prev_info= page.prev.title
8
+ div.next-post.pull-right
9
+ a(href=url_for(page.next.path))
10
+ div.pagination-info
11
+ div.label 下一篇
12
+ div.next_info= page.next.title
13
+ else
14
+ if !page.prev && page.next
15
+ div.next-post.pull-full
16
+ a(href=url_for(page.next.path))
17
+ div.pagination-info
18
+ div.label 下一篇
19
+ div.next_info= page.next.title
20
+ if !page.next && page.prev
21
+ div.prev-post.pull-full
22
+ a(href=url_for(page.prev.path))
23
+ div.pagination-info
24
+ div.label 上一篇
25
+ div.prev_info= page.prev.title
@@ -0,0 +1,9 @@
1
+ section.main-hero-waves-area.waves-area
2
+ svg.waves-svg(xmlns="http://www.w3.org/2000/svg", xlink="http://www.w3.org/1999/xlink", viewBox="0 24 150 28", preserveAspectRatio="none", shape-rendering="auto")
3
+ defs
4
+ path#gentle-wave(d="M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z")
5
+ g.parallax
6
+ use(href="#gentle-wave", x="48", y="0")
7
+ use(href="#gentle-wave", x="48", y="3")
8
+ use(href="#gentle-wave", x="48", y="5")
9
+ use(href="#gentle-wave", x="48", y="7")
@@ -0,0 +1,32 @@
1
+ - var datalinks = []
2
+ - var data = site.data.links.links
3
+ if(data)
4
+ each item in data
5
+ if item.type === "item"
6
+ each y in item.link_list
7
+ - datalinks.push({ name: y.name,link: y.link})
8
+
9
+ script.
10
+ const links = !{JSON.stringify(datalinks)}
11
+ function travelling() {
12
+ const link = links[utils.randomNum(links.length)];
13
+ utils.snackbarShow('您即将前往 ⌈ ' + link.name + ' ⌋ , 安全性未知', false, 3000);
14
+ setTimeout(() => {
15
+ window.open(link.link, "_blank")
16
+ }, 3000)
17
+ }
18
+
19
+ if theme.footer.randomlink
20
+ script.
21
+ function randomLinksList(){
22
+ let data='';
23
+ let linksCopy = [...links];
24
+ let count = Math.min(3, linksCopy.length);
25
+ for (let i = 0; i < count; i++) {
26
+ let index = utils.randomNum(linksCopy.length);
27
+ const link = linksCopy[index];
28
+ data += '<a class="footer-item" href="' + link.link + '" target="_blank" rel="noopener nofollow">' + link.name + '</a>';
29
+ linksCopy.splice(index, 1);
30
+ }
31
+ document.getElementById('friend-links-in-footer').innerHTML = data + '<a class="footer-item" href="/links/">更多</a>';
32
+ }