hexo-theme-solitude 1.0.0

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 (173) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +56 -0
  3. package/_config.yml +432 -0
  4. package/languages/en-US.yml +39 -0
  5. package/languages/zh-CN.yml +39 -0
  6. package/layout/404.ejs +34 -0
  7. package/layout/archive.ejs +10 -0
  8. package/layout/category.ejs +18 -0
  9. package/layout/index.ejs +20 -0
  10. package/layout/layout.ejs +35 -0
  11. package/layout/page/about.ejs +13 -0
  12. package/layout/page/categories.ejs +12 -0
  13. package/layout/page/circle.ejs +5 -0
  14. package/layout/page/echarts.ejs +14 -0
  15. package/layout/page/equipment.ejs +2 -0
  16. package/layout/page/links.ejs +57 -0
  17. package/layout/page/page.ejs +3 -0
  18. package/layout/page/rss.ejs +37 -0
  19. package/layout/page/says.ejs +16 -0
  20. package/layout/page/tags.ejs +12 -0
  21. package/layout/page/tlink.ejs +11 -0
  22. package/layout/page.ejs +45 -0
  23. package/layout/partial/body.ejs +8 -0
  24. package/layout/partial/compoment/about/authorinfo.ejs +18 -0
  25. package/layout/partial/compoment/about/award.ejs +57 -0
  26. package/layout/partial/compoment/about/contentinfo.ejs +33 -0
  27. package/layout/partial/compoment/about/hobbies.ejs +44 -0
  28. package/layout/partial/compoment/about/motto.ejs +17 -0
  29. package/layout/partial/compoment/about/other.ejs +68 -0
  30. package/layout/partial/compoment/about/personalities.ejs +11 -0
  31. package/layout/partial/compoment/about/skillsinfo.ejs +62 -0
  32. package/layout/partial/compoment/aside/aside.ejs +28 -0
  33. package/layout/partial/compoment/aside/asideAllInfo.ejs +6 -0
  34. package/layout/partial/compoment/aside/asideArchive.ejs +11 -0
  35. package/layout/partial/compoment/aside/asideFlipCard.ejs +8 -0
  36. package/layout/partial/compoment/aside/asideInfoCard.ejs +39 -0
  37. package/layout/partial/compoment/aside/asideNewestPost.ejs +31 -0
  38. package/layout/partial/compoment/aside/asidePower.ejs +31 -0
  39. package/layout/partial/compoment/aside/asideSwitch.ejs +35 -0
  40. package/layout/partial/compoment/aside/asideTag.ejs +5 -0
  41. package/layout/partial/compoment/aside/asideToc.ejs +11 -0
  42. package/layout/partial/compoment/aside/asideWebInfo.ejs +60 -0
  43. package/layout/partial/compoment/circle/angle.ejs +26 -0
  44. package/layout/partial/compoment/circle/banner.ejs +11 -0
  45. package/layout/partial/compoment/circle/content.ejs +22 -0
  46. package/layout/partial/compoment/dorakika/rightmenu.ejs +115 -0
  47. package/layout/partial/compoment/equipment/list.ejs +37 -0
  48. package/layout/partial/compoment/home/homeCategoryBar.ejs +11 -0
  49. package/layout/partial/compoment/home/postList.ejs +37 -0
  50. package/layout/partial/compoment/hometop/bbTimeList.ejs +15 -0
  51. package/layout/partial/compoment/hometop/categoryGroup.ejs +19 -0
  52. package/layout/partial/compoment/hometop/groupTag.ejs +30 -0
  53. package/layout/partial/compoment/hometop/topGroup.ejs +48 -0
  54. package/layout/partial/compoment/inject/body.ejs +57 -0
  55. package/layout/partial/compoment/inject/head.ejs +19 -0
  56. package/layout/partial/compoment/links/banner.ejs +42 -0
  57. package/layout/partial/compoment/links/linksCard.ejs +27 -0
  58. package/layout/partial/compoment/links/linksItem.ejs +21 -0
  59. package/layout/partial/compoment/mixins/articleSort.ejs +26 -0
  60. package/layout/partial/compoment/mixins/pagination.ejs +11 -0
  61. package/layout/partial/compoment/nav/left.ejs +22 -0
  62. package/layout/partial/compoment/nav/menu.ejs +25 -0
  63. package/layout/partial/compoment/nav/right.ejs +42 -0
  64. package/layout/partial/compoment/post/award.ejs +52 -0
  65. package/layout/partial/compoment/post/copyright.ejs +37 -0
  66. package/layout/partial/compoment/post/postMeta.ejs +83 -0
  67. package/layout/partial/compoment/post/postNav.ejs +41 -0
  68. package/layout/partial/compoment/post/wave.ejs +14 -0
  69. package/layout/partial/compoment/says/banner.ejs +10 -0
  70. package/layout/partial/compoment/says/saysBottom.ejs +18 -0
  71. package/layout/partial/compoment/says/saysContent.ejs +11 -0
  72. package/layout/partial/compoment/third-party/comments/comment.ejs +12 -0
  73. package/layout/partial/compoment/third-party/comments/twikoo.ejs +29 -0
  74. package/layout/partial/compoment/third-party/comments/twikoo_k.ejs +29 -0
  75. package/layout/partial/compoment/third-party/music.ejs +5 -0
  76. package/layout/partial/compoment/third-party/pjax.ejs +31 -0
  77. package/layout/partial/compoment/third-party/search/algolia-search.ejs +20 -0
  78. package/layout/partial/compoment/third-party/search/index.ejs +10 -0
  79. package/layout/partial/compoment/third-party/search/local-search.ejs +22 -0
  80. package/layout/partial/compoment/tlink/banner.ejs +10 -0
  81. package/layout/partial/console.ejs +62 -0
  82. package/layout/partial/footer.ejs +107 -0
  83. package/layout/partial/head.ejs +37 -0
  84. package/layout/partial/header.ejs +6 -0
  85. package/layout/partial/hometop.ejs +15 -0
  86. package/layout/partial/loading.ejs +86 -0
  87. package/layout/partial/nav.ejs +34 -0
  88. package/layout/partial/pwa.ejs +40 -0
  89. package/layout/partial/sidebar.ejs +31 -0
  90. package/layout/post.ejs +36 -0
  91. package/layout/tag.ejs +19 -0
  92. package/package.json +24 -0
  93. package/scripts/event/init.js +22 -0
  94. package/scripts/event/page.js +40 -0
  95. package/scripts/event/welcome.js +15 -0
  96. package/scripts/filter/checkThemeConfig.js +18 -0
  97. package/scripts/filter/default.js +23 -0
  98. package/scripts/filter/katex.js +25 -0
  99. package/scripts/filter/lazyload.js +11 -0
  100. package/scripts/filter/randomPosts.js +9 -0
  101. package/scripts/helper/charts.js +397 -0
  102. package/scripts/helper/getArchiveLength.js +18 -0
  103. package/scripts/helper/randomLinks.js +16 -0
  104. package/scripts/helper/related_post.js +91 -0
  105. package/scripts/helper/themeJsExport.js +77 -0
  106. package/scripts/tags/bvideo.js +42 -0
  107. package/scripts/tags/expand.js +4 -0
  108. package/scripts/tags/fold.js +19 -0
  109. package/scripts/tags/link.js +17 -0
  110. package/scripts/tags/note.js +3 -0
  111. package/scripts/tags/tabs.js +61 -0
  112. package/scripts/tags/timeline.js +35 -0
  113. package/source/css/commentBarrage.css +174 -0
  114. package/source/css/custom.css +901 -0
  115. package/source/css/main.css +16471 -0
  116. package/source/css/search/algolia-search.css +141 -0
  117. package/source/css/search/local-search.css +138 -0
  118. package/source/css/var.css +186 -0
  119. package/source/img/default.png +0 -0
  120. package/source/img/loading.gif +0 -0
  121. package/source/img/power.png +0 -0
  122. package/source/img/pwa/180.png +0 -0
  123. package/source/img/pwa/192.png +0 -0
  124. package/source/img/pwa/512.png +0 -0
  125. package/source/img/pwa/logo.png +0 -0
  126. package/source/img/pwa/siteicon/splash-1125x2436.png +0 -0
  127. package/source/img/pwa/siteicon/splash-1136x640.png +0 -0
  128. package/source/img/pwa/siteicon/splash-1170x2532.png +0 -0
  129. package/source/img/pwa/siteicon/splash-1179x2556.png +0 -0
  130. package/source/img/pwa/siteicon/splash-1242x2208.png +0 -0
  131. package/source/img/pwa/siteicon/splash-1242x2688.png +0 -0
  132. package/source/img/pwa/siteicon/splash-1248x2778.png +0 -0
  133. package/source/img/pwa/siteicon/splash-1290x2796.png +0 -0
  134. package/source/img/pwa/siteicon/splash-1334x750.png +0 -0
  135. package/source/img/pwa/siteicon/splash-1536x2048.png +0 -0
  136. package/source/img/pwa/siteicon/splash-1620x2160.png +0 -0
  137. package/source/img/pwa/siteicon/splash-1668x2224.png +0 -0
  138. package/source/img/pwa/siteicon/splash-1668x2388.png +0 -0
  139. package/source/img/pwa/siteicon/splash-1792x828.png +0 -0
  140. package/source/img/pwa/siteicon/splash-2048x1536.png +0 -0
  141. package/source/img/pwa/siteicon/splash-2048x2732.png +0 -0
  142. package/source/img/pwa/siteicon/splash-2160x1620.png +0 -0
  143. package/source/img/pwa/siteicon/splash-2208x1242.png +0 -0
  144. package/source/img/pwa/siteicon/splash-2224x1668.png +0 -0
  145. package/source/img/pwa/siteicon/splash-2388x1668.png +0 -0
  146. package/source/img/pwa/siteicon/splash-2436x1125.png +0 -0
  147. package/source/img/pwa/siteicon/splash-2532x1170.png +0 -0
  148. package/source/img/pwa/siteicon/splash-2556x1179.png +0 -0
  149. package/source/img/pwa/siteicon/splash-2688x1242.png +0 -0
  150. package/source/img/pwa/siteicon/splash-2732x2048.png +0 -0
  151. package/source/img/pwa/siteicon/splash-2778x1248.png +0 -0
  152. package/source/img/pwa/siteicon/splash-2796x1290.png +0 -0
  153. package/source/img/pwa/siteicon/splash-640x1136.png +0 -0
  154. package/source/img/pwa/siteicon/splash-750x1334.png +0 -0
  155. package/source/img/pwa/siteicon/splash-828x1792.png +0 -0
  156. package/source/img/theme/avatar.png +0 -0
  157. package/source/js/circle.js +1828 -0
  158. package/source/js/commentBarrage.js +148 -0
  159. package/source/js/extend/console/comment.js +99 -0
  160. package/source/js/extend/covercolor/local.js +150 -0
  161. package/source/js/extend/covercolor/web.js +137 -0
  162. package/source/js/extend/search/algolia-search.js +136 -0
  163. package/source/js/extend/search/local-search.js +160 -0
  164. package/source/js/main.js +705 -0
  165. package/source/js/post_ai.js +517 -0
  166. package/source/js/utils.js +153 -0
  167. package/source/lib/bundle.js +27 -0
  168. package/source/lib/friends_post.js +98 -0
  169. package/source/lib/lazyload.js +1 -0
  170. package/source/lib/snackbar.js +16 -0
  171. package/source/lib/snackbar.min.css +1 -0
  172. package/source/lib/view-image.js +13 -0
  173. package/source/lib/waterfall.min.js +1 -0
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html lang="<%= config.language %>" data-theme="light">
3
+ <head>
4
+ <%- partial('partial/head', {cache: true}) %>
5
+ </head>
6
+ <body id="body">
7
+ <% if(theme.loading.fullpage){ %>
8
+ <%- partial('partial/loading', {cache: true}) %>
9
+ <% } %>
10
+ <%- partial('partial/console', {cache: true}) %>
11
+ <%- partial('partial/sidebar', {cache: true}) %>
12
+ <%- partial('partial/compoment/dorakika/rightmenu', {cache: true}) %>
13
+ <% if(page.type !== '404'){ %>
14
+ <div class="<%= is_post() ? 'post' : 'page' %>" id="body-wrap">
15
+ <%- partial('partial/header') %>
16
+ <%- body %>
17
+ <footer id="footer">
18
+ <%- partial('partial/footer', {cache: true}) %>
19
+ </footer>
20
+ </div>
21
+ <% }else{ %>
22
+ <div class="error" id="body-wrap">
23
+ <%- body %>
24
+ </div>
25
+ <% } %>
26
+ <script>
27
+ (function (){
28
+ console.log= function(){}
29
+ })()
30
+ </script>
31
+ <%- partial('partial/body', {cache: true}) %>
32
+ <%- partial('partial/compoment/third-party/search/index', {cache: true}) %>
33
+ <%- partial('partial/compoment/third-party/music', {cache: true}) %>
34
+ </body>
35
+ </html>
@@ -0,0 +1,13 @@
1
+ <% if (theme.about) { %>
2
+ <div id="about-page">
3
+ <%- partial('partial/compoment/about/authorinfo' ) %>
4
+ <%- partial('partial/compoment/about/contentinfo' ) %>
5
+ <%- partial('partial/compoment/about/skillsinfo' ) %>
6
+ <%- partial('partial/compoment/about/personalities' ) %>
7
+ <%- partial('partial/compoment/about/motto' ) %>
8
+ <%- partial('partial/compoment/about/hobbies' ) %>
9
+ <%- partial('partial/compoment/about/other' ) %>
10
+ <%- partial('partial/compoment/about/award' ) %>
11
+ </div>
12
+ <script src="<%= theme.echarts.js %>" rel="external nofollow"></script>
13
+ <% } %>
@@ -0,0 +1,12 @@
1
+ <h1 class="page-title"><%= __('page.category') %></h1>
2
+ <div class="category-lists">
3
+ <div class="tag-cloud-list is-center">
4
+ <% site.categories.data.forEach(data => { %>
5
+ <a href="<%= url_for(data.path.toLowerCase()) %>">
6
+ <span class="tags-punctuation"></span>
7
+ <%= data.name %>
8
+ <span class="tagsPageCount"><%= data.length %></span>
9
+ </a>
10
+ <% }) %>
11
+ </div>
12
+ </div>
@@ -0,0 +1,5 @@
1
+ <%- partial('partial/compoment/circle/banner') %>
2
+ <% if(theme.circle.angle.enable){ %>
3
+ <%- partial('partial/compoment/circle/angle') %>
4
+ <% } %>
5
+ <%- partial('partial/compoment/circle/content') %>
@@ -0,0 +1,14 @@
1
+ <script src="<%= theme.echarts.js %>" rel="external nofollow"></script>
2
+
3
+ <main class="layout hide-aside" id="content-inner">
4
+ <div id="page">
5
+ <%- page.content %>
6
+ <% if(page.comment){ %>
7
+ <%- partial('partial/compoment/third-party/comments/comment') %>
8
+ <% } %>
9
+ </div>
10
+
11
+ <% if(page.aside){%>
12
+ <%- partial('partial/compoment/aside/aside') %>
13
+ <%} %>
14
+ </main>
@@ -0,0 +1,2 @@
1
+ <%- partial('partial/compoment/says/banner') %>
2
+ <%- partial('partial/compoment/equipment/list') %>
@@ -0,0 +1,57 @@
1
+ <div class="flink" id="banners">
2
+ <%- partial('partial/compoment/links/banner') %>
3
+ </div>
4
+ <% if(theme.circle.angle.enable){ %>
5
+ <div class="title-h2-a">
6
+ <div class="title-h2-a-left"><h2 style="padding-top: 0;margin:0.6rem 0 0 0;">随机文章</h2>
7
+ <a id="random-post-start" href="javascript:fetchRandomPost();" rel="external nofollow" data-pjax-state=""
8
+ style="transition-duration: 0.3s; transform: rotate(9000deg); opacity: 1;">
9
+ <i class="ri-refresh-line"></i>
10
+ </a>
11
+ </div>
12
+ <div class="title-h2-a-right">
13
+ <a class="random-post-all" href="/circle/" data-pjax-state="">查看鱼塘</a>
14
+ </div>
15
+ </div>
16
+ <div id="random-post"></div>
17
+ <% } %>
18
+ <div class="flink" id="article-container">
19
+ <% site.data.links.links.forEach(data => { %>
20
+ <h2><%= data.class_name %></h2>
21
+ <div class="flink-desc"><%= data.descr %></div>
22
+ <% switch (data.type) {
23
+ case 'card': %>
24
+ <%- partial('partial/compoment/links/linksCard', {data: data.link_list}) %>
25
+ <% break;
26
+ case 'item': %>
27
+ <%- partial('partial/compoment/links/linksItem', {data: data.link_list}) %>
28
+ <% break;
29
+ default: %>
30
+ <% break; } %>
31
+ <% }); %>
32
+ </div>
33
+ <h3 align="end">——本站友链排序不分先后,所有站点都值得一看。</h3>
34
+ <% if(theme.comment.enable){ %>
35
+ <h2 id="友情链接申请">友情链接申请</h2>
36
+ <div id="article-container">
37
+ <%- page.content %>
38
+ </div>
39
+ <p>请<b>勾选</b>你符合的条件:</p>
40
+ <div id="friendlink_checkboxs">
41
+ <p>
42
+ <label><input type="checkbox" id="checkbox1" onclick="checkForm()"> 我已添加 <b><%= config.title %></b>
43
+ 博客的友情链接</label>
44
+ </p>
45
+ <p>
46
+ <label><input type="checkbox" id="checkbox2" onclick="checkForm()"> 我的链接主体为
47
+ <b>个人</b>,网站类型为<b>博客</b></label>
48
+ </p>
49
+ <p>
50
+ <label><input type="checkbox" id="checkbox3" onclick="checkForm()">
51
+ 我的网站现在可以在中国大陆区域正常访问</label>
52
+ </p>
53
+ <p>
54
+ <label><input type="checkbox" id="checkbox4" onclick="checkForm()"> 网站内容符合中国大陆法律法规</label>
55
+ </p>
56
+ </div>
57
+ <% } %>
@@ -0,0 +1,3 @@
1
+ <div id="article-container">
2
+ <%- page.content %>
3
+ </div>
@@ -0,0 +1,37 @@
1
+ <main class="layout hide-aside" id="content-inner">
2
+ <div id="page">
3
+ <div class="rss-plan-list">
4
+ <a class="rss-plan-item rss-plan-wechat" href="<%- theme.footer.rss.wechatOA %>" title="公众号" target="_blank">
5
+ <div class="rss-plan-description">推送精选文章<br>推送全文</div>
6
+ <div class="rss-plan-info-group">
7
+ <div class="rss-plan-title">公众号订阅</div>
8
+ <div class="rss-plan-info">推荐的订阅方式</div>
9
+ <img class="rss-plan-icon" src="https://bu.dusays.com/2023/11/01/6541d14a4de78.png" alt="wechat">
10
+ </div>
11
+ </a><a class="rss-plan-item rss-plan-mail" href="<%- theme.footer.rss.emailOA %>" rel="external nofollow"
12
+ title="竹白" target="_blank">
13
+ <div class="rss-plan-description">推送全部文章<br>推送封面与简介</div>
14
+ <div class="rss-plan-info-group">
15
+ <div class="rss-plan-title">邮件订阅</div>
16
+ <div class="rss-plan-info">推荐的订阅方式</div>
17
+ <img class="rss-plan-icon" src="https://bu.dusays.com/2023/11/01/6541d16c3ea22.png" alt="wechat">
18
+ </div>
19
+ </a><a class="rss-plan-item rss-plan-rss" href="<%- theme.footer.rss.rssOA %>" title="rss" target="_blank">
20
+ <div class="rss-plan-description">推送全部文章<br>推送简介</div>
21
+ <div class="rss-plan-info-group">
22
+ <div class="rss-plan-title">RSS</div>
23
+ <div class="rss-plan-info">备用订阅方式</div>
24
+ <img class="rss-plan-icon" src="https://bu.dusays.com/2023/11/01/6541d184e2a09.png" alt="wechat">
25
+ </div>
26
+ </a></div>
27
+ <%- page.content %>
28
+
29
+ <% if(page.comment){ %>
30
+ <%- partial('partial/compoment/third-party/comments/comment') %>
31
+ <% } %>
32
+ </div>
33
+
34
+ <% if(page.aside){%>
35
+ <%- partial('partial/compoment/aside/aside') %>
36
+ <%} %>
37
+ </main>
@@ -0,0 +1,16 @@
1
+ <%- partial('partial/compoment/says/banner') %>
2
+ <div id="bber">
3
+ <section class="timeline page-1">
4
+ <ul class="list" id="waterfall">
5
+ <% for(let i in site.data.essay.essay_list){ %>
6
+ <% const item = site.data.essay.essay_list[i];if(i >= 30)break; %>
7
+ <li class="item">
8
+ <%- partial('partial/compoment/says/saysContent', {item:item}) %>
9
+ <hr>
10
+ <%- partial('partial/compoment/says/saysBottom', {item:item}) %>
11
+ </li>
12
+ <% }; %>
13
+ </ul>
14
+ </section>
15
+ </div>
16
+ <div id="bber-tips" style="color: var(--sco-secondtext);">- 只展示最近30条短文 -</div>
@@ -0,0 +1,12 @@
1
+ <h1 class="page-title"><%= __('page.tag') %></h1>
2
+ <div class="category-lists">
3
+ <div class="tag-cloud-list is-center">
4
+ <% site.tags.data.forEach(data => { %>
5
+ <a href="<%= url_for(data.path) %>">
6
+ <span class="tags-punctuation"></span>
7
+ <%= data.name %>
8
+ <span class="tagsPageCount"><%= data.length %></span>
9
+ </a>
10
+ <% }) %>
11
+ </div>
12
+ </div>
@@ -0,0 +1,11 @@
1
+ <%- partial('partial/compoment/tlink/banner') %>
2
+ <div class="flink" id="article-container">
3
+ <% site.data.tlink.links.forEach(data => { %>
4
+ <h2><%= data.class_name %></h2>
5
+ <div class="flink-desc"><%= data.descr %></div>
6
+ <%- partial('partial/compoment/links/linksItem', {data: data.link_list}) %>
7
+ <% }); %>
8
+ </div>
9
+ <div id="article-container">
10
+ <%- page.content %>
11
+ </div>
@@ -0,0 +1,45 @@
1
+ <main class="layout <%= page.aside ? '' : 'hide-aside' %>" id="content-inner">
2
+ <div id="page">
3
+ <% switch (page.type) {
4
+ case 'categories': %>
5
+ <%- partial('page/categories') %>
6
+ <% break;
7
+ case 'tags': %>
8
+ <%- partial('page/tags') %>
9
+ <% break;
10
+ case 'links': %>
11
+ <%- partial('page/links') %>
12
+ <% break;
13
+ case 'tlink': %>
14
+ <%- partial('page/tlink') %>
15
+ <% break;
16
+ case 'about': %>
17
+ <%- partial('page/about') %>
18
+ <% break;
19
+ case 'says': %>
20
+ <%- partial('page/says') %>
21
+ <% break;
22
+ case 'equipment': %>
23
+ <%- partial('page/equipment') %>
24
+ <% break;
25
+ case 'circle': %>
26
+ <%- partial('page/circle') %>
27
+ <% break;
28
+ case 'echarts': %>
29
+ <%- partial('page/echarts') %>
30
+ <% break;
31
+ case 'rss': %>
32
+ <%- partial('page/rss') %>
33
+ <% break;
34
+ default: %>
35
+ <%- partial('page/page') %>
36
+ <% break;
37
+ } %>
38
+ <% if(page.comment){ %>
39
+ <%- partial('partial/compoment/third-party/comments/comment') %>
40
+ <% } %>
41
+ </div>
42
+ <% if(page.aside){ %>
43
+ <%- partial('partial/compoment/aside/aside') %>
44
+ <% } %>
45
+ </main>
@@ -0,0 +1,8 @@
1
+ <div>
2
+ <script type="text/javascript" src='/js/main.js' rel="external nofollow"></script>
3
+ <%- partial('partial/compoment/inject/body', {cache: true}) %>
4
+ <%- partial('partial/compoment/third-party/pjax', {cache: true}) %>
5
+ <% if (theme.extends.body) for (const i of theme.extends.body){ %>
6
+ <%- i %>
7
+ <% } %>
8
+ </div>
@@ -0,0 +1,18 @@
1
+ <% const authorinfo = site.data.about.authorinfo; %>
2
+
3
+ <div class="author-info">
4
+ <div class="author-tag-left">
5
+ <% authorinfo.leftTags.forEach(tag => { %>
6
+ <span class="author-tag"><%= tag %></span>
7
+ <% }); %>
8
+ </div>
9
+ <div class="author-img">
10
+ <img src="<%= authorinfo.image %>" >
11
+ </div>
12
+ <div class="author-tag-right">
13
+ <% authorinfo.rightTags.forEach(tag => { %>
14
+ <span class="author-tag"><%= tag %></span>
15
+ <% }); %>
16
+ </div>
17
+ </div>
18
+ <div class="author-title">关于我</div>
@@ -0,0 +1,57 @@
1
+ <% let sum = 0; %>
2
+ <div class="author-content">
3
+ <div class="author-content-item single reward">
4
+ <div class="author-content-item-tips">致谢</div>
5
+ <span class="author-content-item-title">赞赏名单</span>
6
+ <div class="author-content-item-description">
7
+ 感谢赞赏的人,因为你们,让我感受到写博客这件事情能够给你们创造了价值。这会让我在这条路上走得更远。
8
+ </div>
9
+ <div class="reward-list-all">
10
+ <% site.data.about.rewardList.forEach(function(reward) {
11
+ sum += reward.money
12
+ %>
13
+ <div class="reward-list-item">
14
+ <div class="reward-list-item-name"><%= reward.name %></div>
15
+ <div class="reward-list-bottom-group">
16
+ <div class="reward-list-item-money" <% if (reward.vip) { %>style="background: var(--sco-vip);"
17
+ <% } %>
18
+ >¥ <%= reward.money %></div>
19
+ <time class="datatime reward-list-item-time" datetime="<%= moment(reward.time).format() %>"></time>
20
+ </div>
21
+ </div>
22
+ <% }); %>
23
+ <% if(theme.post.award.enable){ %>
24
+ <div class="post-reward">
25
+ <div class="post-reward" onclick="AddRewardMask()"></div>
26
+ <div class="reward-button" title="赞赏作者"><i class="heofont icon-hand-heart-fill"></i> 打赏作者
27
+ </div>
28
+ <div class="reward-main">
29
+ <ul class="reward-all">
30
+ <span class="reward-title">感谢你赐予我前进的力量</span>
31
+ <ul class="reward-group">
32
+ <% var rewards = [
33
+ {image: theme?.post?.award?.wechat, description: '微信'},
34
+ {image: theme?.post?.award?.alipay, description: '支付宝'}
35
+ ]; %>
36
+ <% for (var i = 0; i < rewards.length; i++) { %>
37
+ <li class="reward-item">
38
+ <a href="<%= rewards[i].image %>" target="_blank">
39
+ <img class="post-qr-code-img" alt="<%= rewards[i].description %>"
40
+ src="<%= rewards[i].image %>">
41
+ </a>
42
+ <div class="post-qr-code-desc">
43
+ <%= rewards[i].description %>
44
+ </div>
45
+ </li>
46
+ <% } %>
47
+ </ul>
48
+ </ul>
49
+ </div>
50
+ </div>
51
+ <% } %>
52
+ </div>
53
+ <div class="reward-list-tips">
54
+ <p>总金额:¥ <%- sum %>,将全部用于博客的维护</p>
55
+ </div>
56
+ </div>
57
+ </div>
@@ -0,0 +1,33 @@
1
+ <% const contentinfo = site.data.about.contentinfo; %>
2
+ <div class="author-content">
3
+ <div class="author-content-item myInfoAndSayHello">
4
+ <div class="title1">你好,很高兴认识你👋</div>
5
+ <div class="title2">我叫 <span class="inline-word"><%= contentinfo.name %></span></div>
6
+ <div class="title1">是一名 <%= contentinfo.title %></div>
7
+ </div>
8
+ <div class="aboutsiteTips author-content-item">
9
+ <div class="author-content-item-tips">追求</div>
10
+ <h2>源于<br> 热爱而去<span class="inline-word">创造</span>
11
+ <div class="mask"><span class="first-tips" data-show=""><%= contentinfo.product %></span><span><%= contentinfo.design %></span><span><%= contentinfo.program %></span><span
12
+ data-up=""><%= contentinfo.user_experience %></span></div>
13
+ </h2>
14
+ </div>
15
+ </div>
16
+ <script>
17
+ var pursuitInterval = null;
18
+ pursuitInterval = setInterval(function () {
19
+ const show = document.querySelector('span[data-show]')
20
+ const next = show.nextElementSibling || document.querySelector('.first-tips')
21
+ const up = document.querySelector('span[data-up]')
22
+ if (up) {
23
+ up.removeAttribute('data-up')
24
+ }
25
+ show.removeAttribute('data-show')
26
+ show.setAttribute('data-up', '')
27
+ next.setAttribute('data-show', '')
28
+ }, 2000)
29
+
30
+ document.addEventListener('pjax:send', function(){
31
+ clearInterval(pursuitInterval);
32
+ });
33
+ </script>
@@ -0,0 +1,44 @@
1
+ <div class="author-content">
2
+ <div class="author-content-item game-apex" style="background: url(<%= site.data.about.game1.img %>) no-repeat top; background-size: cover;">
3
+ <div class="card-content">
4
+ <div class="author-content-item-tips"><%= site.data.about.game1.title %></div>
5
+ <span class="author-content-item-title"><%= site.data.about.game1.subtitle %></span>
6
+ <div class="content-bottom">
7
+ <div class="tips"><%= site.data.about.game1.tips_left %></div>
8
+ <div class="tips"><%= site.data.about.game1.tips_right %></div>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ <div class="author-content-item game-jl" style="background: url(<%= site.data.about.game2.img %>) no-repeat top; background-size: cover;">
13
+ <div class="card-content">
14
+ <div class="author-content-item-tips"><%= site.data.about.game2.title %></div>
15
+ <span class="author-content-item-title"><%= site.data.about.game2.subtitle %></span>
16
+ <div class="content-bottom">
17
+ <div class="tips"><%= site.data.about.game2.tips_left %></div>
18
+ <div class="tips"><%= site.data.about.game2.tips_right %></div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ <% const likes = site.data.about.likes; %>
24
+ <div class="author-content">
25
+ <% likes.forEach(function(like) { %>
26
+ <div class="author-content-item <%= like.type %>" style="background: url(<%= like.bg %>) no-repeat center;">
27
+ <div class="card-content">
28
+ <div class="author-content-item-tips"><%= like.tips %></div>
29
+ <span class="author-content-item-title"><%= like.title %></span>
30
+ <div class="content-bottom">
31
+ <div class="tips"><%= like.subtips %></div>
32
+ <% if(like.button){ %>
33
+ <div class="banner-button-group">
34
+ <a class="banner-button" href="<%= like.button_link %>" target="_blank" rel="noopener nofollow">
35
+ <i class="ri-arrow-right-circle-fill"></i>
36
+ <span class="banner-button-text"><%= like.button_text %></span>
37
+ </a>
38
+ </div>
39
+ <% } %>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <% }); %>
44
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="author-content">
2
+ <% const motto = site.data.about.motto; %>
3
+ <div class="author-content-item maxim">
4
+ <div class="author-content-item-tips"><%= motto.title %></div>
5
+ <span class="maxim-title"><span
6
+ style="opacity: 0.6;margin-bottom:8px;"><%= motto.prefix %></span><span><%= motto.content %></span></span>
7
+ </div>
8
+ <div class="author-content-item buff">
9
+ <% const expertise = site.data.about.expertise; %>
10
+ <div class="card-content">
11
+ <div class="author-content-item-tips"><%= expertise.title %></div>
12
+ <span class="buff-title"><span style="opacity: 0.6;margin-bottom:8px;"><%= expertise.prefix %><span
13
+ class="inline-word"><%= expertise.specialist %></span></span><span><%= expertise.content %><span
14
+ class="inline-word"><%= expertise.level %></span></span></span>
15
+ </div>
16
+ </div>
17
+ </div>
@@ -0,0 +1,68 @@
1
+ <div class="author-content">
2
+ <div class="about-statistic author-content-item" style="background: url(<%= site.data.about.tj.img %>);">
3
+ <div class="card-content">
4
+ <div class="author-content-item-tips">数据</div>
5
+ <span class="author-content-item-title">访问统计</span>
6
+ <div id="statistic"></div>
7
+ <div class="post-tips">
8
+ 统计信息来自 <a href="https://invite.51.la/1NzKqTeb?target=V6" target="_blank" rel="noopener nofollow">51la网站统计</a>
9
+ </div>
10
+ <div class="banner-button-group">
11
+ <a class="banner-button" onclick="pjax.loadUrl(&quot;/echart/&quot;)" data-pjax-state="">
12
+ <i class="ri-arrow-right-circle-fill"></i>
13
+ <span class="banner-button-text">文章统计</span>
14
+ </a>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ <script>
19
+ fetch("<%= site.data.about.tj.url %>")
20
+ .then(res => res.text())
21
+ .then(data => {
22
+ let title = ["最近活跃", "今日人数", "今日访问", "昨日人数", "昨日访问", "本月访问", "总访问量"];
23
+ let num = data.match(/(<\/span><span>).*?(\/span><\/p>)/g);
24
+ num = num.map(el => {
25
+ let val = el.replace(/(<\/span><span>)/g, "");
26
+ let str = val.replace(/(<\/span><\/p>)/g, "");
27
+ return str;
28
+ });
29
+ let s = document.getElementById("statistic");
30
+ let statistic = [];
31
+ for (let i = 0; i < num.length; i++) {
32
+ if (i == 0 || i == num.length - 1) continue;
33
+ s.innerHTML += "<div><span>" + title[i] + "</span><span id=" + title[i] + ">" + num[i] + "</span></div>";
34
+ }
35
+ });
36
+ </script>
37
+ <style>
38
+ :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 %>);
41
+ }
42
+ </style>
43
+ <% const oneself = site.data.about.oneself; %>
44
+ <div class="author-content-item-group column mapAndInfo">
45
+ <div class="author-content-item map single">
46
+ <span class="map-title">我现在住在 <b><%= oneself.location %></b></span></div>
47
+ <div class="author-content-item selfInfo single">
48
+ <div><span class="selfInfo-title">生于</span>
49
+ <span class="selfInfo-content" style="color: #43a6c6;"><%= oneself.birthYear %></span>
50
+ </div>
51
+ <div>
52
+ <span class="selfInfo-title"><%= oneself.university %></span>
53
+ <span class="selfInfo-content" style="color: #c69043;"><%= oneself.major %></span>
54
+ </div>
55
+ <div>
56
+ <span class="selfInfo-title">现在职业</span>
57
+ <span class="selfInfo-content" style="color: #b04fe6;"><%= oneself.occupation %></span>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div class="author-content">
63
+ <div class="create-site-post author-content-item single">
64
+ <div class="author-content-item-tips">心路历程</div>
65
+ <span class="author-content-item-title">为什么建站?</span>
66
+ <%- site.data.about.cause %>
67
+ </div>
68
+ </div>
@@ -0,0 +1,11 @@
1
+ <% const personalities = site.data.about.personalities; %>
2
+ <div class="author-content">
3
+ <div class="author-content-item personalities">
4
+ <div class="author-content-item-tips"><%= personalities.tips %></div>
5
+ <span class="author-content-item-title"><%= personalities.title %></span>
6
+ <div class="title2" style="color: <%= personalities.color %>;"><%= personalities.type %></div>
7
+ <div class="image"><img src="<%= personalities.image %>"></div>
8
+ <div class="post-tips">在 <a href="https://www.16personalities.com/" target="_blank" rel="noopener nofollow"><%= personalities.linkText %></a> 了解更多关于 <a target="_blank" rel="noopener external nofollow" href="<%= personalities.typeLink %>"><%= personalities.typeName %></a></div>
9
+ </div>
10
+ <div class="author-content-item myphoto"><img class="author-content-img" src="<%= personalities.myphoto %>" alt="自拍"></div>
11
+ </div>
@@ -0,0 +1,62 @@
1
+ <div class="author-content">
2
+ <% const skills = site.data.about.skills; %>
3
+ <div class="author-content-item skills">
4
+ <div class="card-content">
5
+ <div class="author-content-item-tips"><%= skills.title %></div>
6
+ <span class="author-content-item-title"><%= skills.subtitle %></span>
7
+ <div class="skills-style-group">
8
+ <div class="tags-group-all">
9
+ <div class="tags-group-wrapper">
10
+ <div class="tags-group-all">
11
+ <div class="tags-group-wrapper" >
12
+ <% for (let i = 0; i < 2; i++) { %>
13
+ <% skills.tags.reduce(function(acc, tag, index) { %>
14
+ <% if (index % 2 === 0) { %>
15
+ <% if (index !== 0) { %>
16
+ </div>
17
+ <% } %>
18
+ <div class="tags-group-icon-pair">
19
+ <% } %>
20
+ <div class="tags-group-icon" style="background:<%= tag.color %>">
21
+ <img src="<%= tag.icon %>" title="<%= tag.title %>">
22
+ </div>
23
+ <% if (index === skills.tags.length - 1) { %>
24
+ </div>
25
+ <% } %>
26
+ <% }, '') %>
27
+ <% } %>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <div class="skills-list">
33
+ <% skills.tags.forEach(function(tag){ %>
34
+ <div class="skill-info">
35
+ <div class="skill-icon" style="background:<%= tag.color %>">
36
+ <img src="<%= tag.icon %>" title="<%= tag.title %>">
37
+ </div>
38
+ <div class="skill-name"> <span><%= tag.title %></span></div>
39
+ </div>
40
+ <% }); %>
41
+ <div class="etc">...</div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <% const careers = site.data.about.careers; %>
47
+ <div class="author-content-item careers">
48
+ <div class="card-content">
49
+ <div class="author-content-item-tips"><%= careers.title %></div>
50
+ <span class="author-content-item-title"><%= careers.subtitle %></span>
51
+ <div class="careers-group">
52
+ <% careers.items.forEach(function(item) { %>
53
+ <div class="careers-item">
54
+ <div class="circle" style="background: <%= item.color %>"></div>
55
+ <div class="name"><%= item.school %>, <%= item.major %></div>
56
+ </div>
57
+ <% }); %>
58
+ </div>
59
+ <img class="author-content-img" src="<%= careers.image %>" alt="<%= careers.title %>">
60
+ </div>
61
+ </div>
62
+ </div>