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.
- package/LICENSE +19 -0
- package/README.md +56 -0
- package/_config.yml +432 -0
- package/languages/en-US.yml +39 -0
- package/languages/zh-CN.yml +39 -0
- package/layout/404.ejs +34 -0
- package/layout/archive.ejs +10 -0
- package/layout/category.ejs +18 -0
- package/layout/index.ejs +20 -0
- package/layout/layout.ejs +35 -0
- package/layout/page/about.ejs +13 -0
- package/layout/page/categories.ejs +12 -0
- package/layout/page/circle.ejs +5 -0
- package/layout/page/echarts.ejs +14 -0
- package/layout/page/equipment.ejs +2 -0
- package/layout/page/links.ejs +57 -0
- package/layout/page/page.ejs +3 -0
- package/layout/page/rss.ejs +37 -0
- package/layout/page/says.ejs +16 -0
- package/layout/page/tags.ejs +12 -0
- package/layout/page/tlink.ejs +11 -0
- package/layout/page.ejs +45 -0
- package/layout/partial/body.ejs +8 -0
- package/layout/partial/compoment/about/authorinfo.ejs +18 -0
- package/layout/partial/compoment/about/award.ejs +57 -0
- package/layout/partial/compoment/about/contentinfo.ejs +33 -0
- package/layout/partial/compoment/about/hobbies.ejs +44 -0
- package/layout/partial/compoment/about/motto.ejs +17 -0
- package/layout/partial/compoment/about/other.ejs +68 -0
- package/layout/partial/compoment/about/personalities.ejs +11 -0
- package/layout/partial/compoment/about/skillsinfo.ejs +62 -0
- package/layout/partial/compoment/aside/aside.ejs +28 -0
- package/layout/partial/compoment/aside/asideAllInfo.ejs +6 -0
- package/layout/partial/compoment/aside/asideArchive.ejs +11 -0
- package/layout/partial/compoment/aside/asideFlipCard.ejs +8 -0
- package/layout/partial/compoment/aside/asideInfoCard.ejs +39 -0
- package/layout/partial/compoment/aside/asideNewestPost.ejs +31 -0
- package/layout/partial/compoment/aside/asidePower.ejs +31 -0
- package/layout/partial/compoment/aside/asideSwitch.ejs +35 -0
- package/layout/partial/compoment/aside/asideTag.ejs +5 -0
- package/layout/partial/compoment/aside/asideToc.ejs +11 -0
- package/layout/partial/compoment/aside/asideWebInfo.ejs +60 -0
- package/layout/partial/compoment/circle/angle.ejs +26 -0
- package/layout/partial/compoment/circle/banner.ejs +11 -0
- package/layout/partial/compoment/circle/content.ejs +22 -0
- package/layout/partial/compoment/dorakika/rightmenu.ejs +115 -0
- package/layout/partial/compoment/equipment/list.ejs +37 -0
- package/layout/partial/compoment/home/homeCategoryBar.ejs +11 -0
- package/layout/partial/compoment/home/postList.ejs +37 -0
- package/layout/partial/compoment/hometop/bbTimeList.ejs +15 -0
- package/layout/partial/compoment/hometop/categoryGroup.ejs +19 -0
- package/layout/partial/compoment/hometop/groupTag.ejs +30 -0
- package/layout/partial/compoment/hometop/topGroup.ejs +48 -0
- package/layout/partial/compoment/inject/body.ejs +57 -0
- package/layout/partial/compoment/inject/head.ejs +19 -0
- package/layout/partial/compoment/links/banner.ejs +42 -0
- package/layout/partial/compoment/links/linksCard.ejs +27 -0
- package/layout/partial/compoment/links/linksItem.ejs +21 -0
- package/layout/partial/compoment/mixins/articleSort.ejs +26 -0
- package/layout/partial/compoment/mixins/pagination.ejs +11 -0
- package/layout/partial/compoment/nav/left.ejs +22 -0
- package/layout/partial/compoment/nav/menu.ejs +25 -0
- package/layout/partial/compoment/nav/right.ejs +42 -0
- package/layout/partial/compoment/post/award.ejs +52 -0
- package/layout/partial/compoment/post/copyright.ejs +37 -0
- package/layout/partial/compoment/post/postMeta.ejs +83 -0
- package/layout/partial/compoment/post/postNav.ejs +41 -0
- package/layout/partial/compoment/post/wave.ejs +14 -0
- package/layout/partial/compoment/says/banner.ejs +10 -0
- package/layout/partial/compoment/says/saysBottom.ejs +18 -0
- package/layout/partial/compoment/says/saysContent.ejs +11 -0
- package/layout/partial/compoment/third-party/comments/comment.ejs +12 -0
- package/layout/partial/compoment/third-party/comments/twikoo.ejs +29 -0
- package/layout/partial/compoment/third-party/comments/twikoo_k.ejs +29 -0
- package/layout/partial/compoment/third-party/music.ejs +5 -0
- package/layout/partial/compoment/third-party/pjax.ejs +31 -0
- package/layout/partial/compoment/third-party/search/algolia-search.ejs +20 -0
- package/layout/partial/compoment/third-party/search/index.ejs +10 -0
- package/layout/partial/compoment/third-party/search/local-search.ejs +22 -0
- package/layout/partial/compoment/tlink/banner.ejs +10 -0
- package/layout/partial/console.ejs +62 -0
- package/layout/partial/footer.ejs +107 -0
- package/layout/partial/head.ejs +37 -0
- package/layout/partial/header.ejs +6 -0
- package/layout/partial/hometop.ejs +15 -0
- package/layout/partial/loading.ejs +86 -0
- package/layout/partial/nav.ejs +34 -0
- package/layout/partial/pwa.ejs +40 -0
- package/layout/partial/sidebar.ejs +31 -0
- package/layout/post.ejs +36 -0
- package/layout/tag.ejs +19 -0
- package/package.json +24 -0
- package/scripts/event/init.js +22 -0
- package/scripts/event/page.js +40 -0
- package/scripts/event/welcome.js +15 -0
- package/scripts/filter/checkThemeConfig.js +18 -0
- package/scripts/filter/default.js +23 -0
- package/scripts/filter/katex.js +25 -0
- package/scripts/filter/lazyload.js +11 -0
- package/scripts/filter/randomPosts.js +9 -0
- package/scripts/helper/charts.js +397 -0
- package/scripts/helper/getArchiveLength.js +18 -0
- package/scripts/helper/randomLinks.js +16 -0
- package/scripts/helper/related_post.js +91 -0
- package/scripts/helper/themeJsExport.js +77 -0
- package/scripts/tags/bvideo.js +42 -0
- package/scripts/tags/expand.js +4 -0
- package/scripts/tags/fold.js +19 -0
- package/scripts/tags/link.js +17 -0
- package/scripts/tags/note.js +3 -0
- package/scripts/tags/tabs.js +61 -0
- package/scripts/tags/timeline.js +35 -0
- package/source/css/commentBarrage.css +174 -0
- package/source/css/custom.css +901 -0
- package/source/css/main.css +16471 -0
- package/source/css/search/algolia-search.css +141 -0
- package/source/css/search/local-search.css +138 -0
- package/source/css/var.css +186 -0
- package/source/img/default.png +0 -0
- package/source/img/loading.gif +0 -0
- package/source/img/power.png +0 -0
- package/source/img/pwa/180.png +0 -0
- package/source/img/pwa/192.png +0 -0
- package/source/img/pwa/512.png +0 -0
- package/source/img/pwa/logo.png +0 -0
- package/source/img/pwa/siteicon/splash-1125x2436.png +0 -0
- package/source/img/pwa/siteicon/splash-1136x640.png +0 -0
- package/source/img/pwa/siteicon/splash-1170x2532.png +0 -0
- package/source/img/pwa/siteicon/splash-1179x2556.png +0 -0
- package/source/img/pwa/siteicon/splash-1242x2208.png +0 -0
- package/source/img/pwa/siteicon/splash-1242x2688.png +0 -0
- package/source/img/pwa/siteicon/splash-1248x2778.png +0 -0
- package/source/img/pwa/siteicon/splash-1290x2796.png +0 -0
- package/source/img/pwa/siteicon/splash-1334x750.png +0 -0
- package/source/img/pwa/siteicon/splash-1536x2048.png +0 -0
- package/source/img/pwa/siteicon/splash-1620x2160.png +0 -0
- package/source/img/pwa/siteicon/splash-1668x2224.png +0 -0
- package/source/img/pwa/siteicon/splash-1668x2388.png +0 -0
- package/source/img/pwa/siteicon/splash-1792x828.png +0 -0
- package/source/img/pwa/siteicon/splash-2048x1536.png +0 -0
- package/source/img/pwa/siteicon/splash-2048x2732.png +0 -0
- package/source/img/pwa/siteicon/splash-2160x1620.png +0 -0
- package/source/img/pwa/siteicon/splash-2208x1242.png +0 -0
- package/source/img/pwa/siteicon/splash-2224x1668.png +0 -0
- package/source/img/pwa/siteicon/splash-2388x1668.png +0 -0
- package/source/img/pwa/siteicon/splash-2436x1125.png +0 -0
- package/source/img/pwa/siteicon/splash-2532x1170.png +0 -0
- package/source/img/pwa/siteicon/splash-2556x1179.png +0 -0
- package/source/img/pwa/siteicon/splash-2688x1242.png +0 -0
- package/source/img/pwa/siteicon/splash-2732x2048.png +0 -0
- package/source/img/pwa/siteicon/splash-2778x1248.png +0 -0
- package/source/img/pwa/siteicon/splash-2796x1290.png +0 -0
- package/source/img/pwa/siteicon/splash-640x1136.png +0 -0
- package/source/img/pwa/siteicon/splash-750x1334.png +0 -0
- package/source/img/pwa/siteicon/splash-828x1792.png +0 -0
- package/source/img/theme/avatar.png +0 -0
- package/source/js/circle.js +1828 -0
- package/source/js/commentBarrage.js +148 -0
- package/source/js/extend/console/comment.js +99 -0
- package/source/js/extend/covercolor/local.js +150 -0
- package/source/js/extend/covercolor/web.js +137 -0
- package/source/js/extend/search/algolia-search.js +136 -0
- package/source/js/extend/search/local-search.js +160 -0
- package/source/js/main.js +705 -0
- package/source/js/post_ai.js +517 -0
- package/source/js/utils.js +153 -0
- package/source/lib/bundle.js +27 -0
- package/source/lib/friends_post.js +98 -0
- package/source/lib/lazyload.js +1 -0
- package/source/lib/snackbar.js +16 -0
- package/source/lib/snackbar.min.css +1 -0
- package/source/lib/view-image.js +13 -0
- package/source/lib/waterfall.min.js +1 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
<style type="text/css">
|
2
|
+
<!--.topGroup .todayCard::after {-->
|
3
|
+
<!-- box-shadow: 0 -109px 133px -9px <%- theme.hometop.recommendList.color %> inset;-->
|
4
|
+
<!--}-->
|
5
|
+
|
6
|
+
.todayCard-title,
|
7
|
+
.todayCard-tips,
|
8
|
+
.topGroup .banner-button {
|
9
|
+
color: #ffffff;
|
10
|
+
}
|
11
|
+
|
12
|
+
.topGroup .todayCard {
|
13
|
+
background: <%- theme.hometop.recommendList.color %>;
|
14
|
+
}
|
15
|
+
</style>
|
16
|
+
<% for (const post of site.posts.data.filter(item => item.recommend === true).slice(0,6)){ %>
|
17
|
+
<div class="recent-post-item">
|
18
|
+
<div class="post_cover left_radius">
|
19
|
+
<a href="<%= url_for(post.path) %>"
|
20
|
+
title="<%= post.title %>">
|
21
|
+
<span class="recent-post-top-text">荐</span>
|
22
|
+
<img class="post_bg"
|
23
|
+
alt="<%= post.title %>" src="<%= post.cover %>" loading="lazy">
|
24
|
+
</a>
|
25
|
+
</div>
|
26
|
+
<div class="recent-post-info">
|
27
|
+
<a class="article-title" href="<%= url_for(post.path) %>"
|
28
|
+
title="<%= post.title %>"><%= post.title %>
|
29
|
+
</a>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<% } %>
|
33
|
+
<div class="todayCard" id="todayCard" onclick="pjax.loadUrl('<%= theme.hometop.recommendList.url %>')"
|
34
|
+
style="z-index: 1;">
|
35
|
+
<div class="todayCard-info">
|
36
|
+
<div class="todayCard-tips"><%= theme.hometop.recommendList.sup %></div>
|
37
|
+
<div class="todayCard-title"><%= theme.hometop.recommendList.title %></div>
|
38
|
+
</div>
|
39
|
+
<div class="todayCard-cover nolazyload"
|
40
|
+
style="background: url('<%- theme.hometop.recommendList.img %>') no-repeat center /cover">
|
41
|
+
</div>
|
42
|
+
<div class="banner-button-group"><a class="banner-button"
|
43
|
+
onclick="window.event.cancelBubble=true;sco.hideTodayCard();">
|
44
|
+
<i class="scoicon ri-add-circle-fill"></i>
|
45
|
+
<span class="banner-button-text">更多推荐</span>
|
46
|
+
</a>
|
47
|
+
</div>
|
48
|
+
</div>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<% const cdn = theme.cdn.body %>
|
2
|
+
<%- js(cdn.pjaxjs) %>
|
3
|
+
<% if(theme.lazyload.enable){ %>
|
4
|
+
<%- js(cdn.lazyloadjs) %>
|
5
|
+
<% } %>
|
6
|
+
<%- js(cdn.snackbarjs) %>
|
7
|
+
<% if(theme.lightbox){ %>
|
8
|
+
<%- js(cdn.viewimagejs) %>
|
9
|
+
<% } %>
|
10
|
+
<% if(theme.hometop.bbtime){ %>
|
11
|
+
<%- css(cdn.swipercss) %>
|
12
|
+
<%- js(cdn.swiperjs) %>
|
13
|
+
<% } %>
|
14
|
+
<div id="js-pjax">
|
15
|
+
<% if(page.type === 'says' || page.type === 'album' || page.type === 'album_detail' ){ %>
|
16
|
+
<%- js(cdn.waterfalljs) %>
|
17
|
+
<script>
|
18
|
+
window.addEventListener('resize', utils.throttle(function () {
|
19
|
+
if (document.getElementById('waterfall')) {
|
20
|
+
sco.reflashEssayWaterFall();
|
21
|
+
}
|
22
|
+
}), 500);
|
23
|
+
</script>
|
24
|
+
<% } %>
|
25
|
+
<% if(theme.thirdparty.busuanzi && (theme.aside.siteinfo.uv || theme.aside.siteinfo.pv)){ %>
|
26
|
+
<script async
|
27
|
+
src="<%= cdn.busuanzijs %>"></script>
|
28
|
+
<% } %>
|
29
|
+
</div>
|
30
|
+
<% if(theme.thirdparty.aplayer.enable){ %>
|
31
|
+
<%- css(cdn.aplayercss) %>
|
32
|
+
<%- js(cdn.aplayerjs) %>
|
33
|
+
<%- js(cdn.metingjs) %>
|
34
|
+
<script>
|
35
|
+
var meting_api = "<%- theme.thirdparty.aplayer.api %>";
|
36
|
+
</script>
|
37
|
+
<% } %>
|
38
|
+
<% if(theme.post.covercolor && !theme.post.covercolor.local){ %>
|
39
|
+
<%- js('/js/extend/covercolor/web') %>
|
40
|
+
<% }else{ %>
|
41
|
+
<%- js('/js/extend/covercolor/local') %>
|
42
|
+
<% } %>
|
43
|
+
|
44
|
+
<% if(theme.footer.randomlink){ %>
|
45
|
+
<%- randomLinks() %>
|
46
|
+
<% } %>
|
47
|
+
|
48
|
+
<% if(theme.comment.enable){
|
49
|
+
%>
|
50
|
+
<%- js('/js/extend/console/comment')
|
51
|
+
%>
|
52
|
+
<% } %>
|
53
|
+
|
54
|
+
<% if (page.katex){ %>
|
55
|
+
<% css(cdn.katexcss) %>
|
56
|
+
<% js(cdn.katexjs) %>
|
57
|
+
<% } %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% const cdn = theme.cdn.head %>
|
2
|
+
<% if(theme.verify.baidu){%>
|
3
|
+
<meta name="baidu-site-verification" content="<%- theme.verify.baidu %>" />
|
4
|
+
<%} %>
|
5
|
+
<% if(theme.loading.pace){ %>
|
6
|
+
<script data-pace-options="{ "restartOnRequestAfter":false,"eventLag":false}" src="<%= cdn.pacejs %>"></script>
|
7
|
+
<% } %>
|
8
|
+
<%- css(theme.icon.customicon) %>
|
9
|
+
<%- css(cdn.remixicon) %>
|
10
|
+
<%- css(cdn.snackbarcss) %>
|
11
|
+
<% if(theme.comment.enable){ %>
|
12
|
+
<%- css('/css/commentBarrage') %>
|
13
|
+
<%- js(cdn.twikoojs) %>
|
14
|
+
<% } %>
|
15
|
+
<% if(theme.thirdparty.search.algolia_search.enable){ %>
|
16
|
+
<%- js(cdn.instantsearch) %>
|
17
|
+
<%- js(cdn.algolia) %>
|
18
|
+
<% } %>
|
19
|
+
<script type="text/javascript" src="/js/utils.js"></script>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<div class="banners-title">
|
2
|
+
<div class="banners-title-small"><%= page.title %></div>
|
3
|
+
<div class="banners-title-big"><%= page.desc %></div>
|
4
|
+
</div>
|
5
|
+
<div class="banner-button-group">
|
6
|
+
<% if (theme.footer.randomlink){ %>
|
7
|
+
<a class="banner-button secondary" onclick="travelling()">
|
8
|
+
<i class="scoicon ri-signal-tower-fill"></i>
|
9
|
+
<span class="banner-button-text">随机访问</span>
|
10
|
+
</a>
|
11
|
+
<% } %>
|
12
|
+
<a class="banner-button" onclick="sco.scrollToComment()">
|
13
|
+
<i class="scoicon ri-arrow-right-circle-fill"></i>
|
14
|
+
<span class="scoicon banner-button-text">申请友链</span>
|
15
|
+
</a>
|
16
|
+
</div>
|
17
|
+
<div class="tags-group-all nowrapMove">
|
18
|
+
<div class="tags-group-wrapper">
|
19
|
+
<% const data = site.data.links.links %>
|
20
|
+
<% for (let i = 0; i < 2; i++){ %>
|
21
|
+
<% data.forEach(x => {
|
22
|
+
if (x.type === "item") {
|
23
|
+
x.link_list.forEach((y, index) => { %>
|
24
|
+
<% if(index % 2 === 0){ %>
|
25
|
+
<div class="tags-group-icon-pair">
|
26
|
+
<% } %>
|
27
|
+
<a class="tags-group-icon" href="<%= url_for(y.link) %>" title="<%= y.name %>">
|
28
|
+
<img src="<%= y.avatar %>" title="<%= y.name %>">
|
29
|
+
</a>
|
30
|
+
<% if(index % 2 !== 0 || index === x.link_list.length - 1){ %>
|
31
|
+
</div>
|
32
|
+
<% } %>
|
33
|
+
<% })
|
34
|
+
}
|
35
|
+
}) %>
|
36
|
+
<% } %>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<div class="site-card-group">
|
2
|
+
<% data.forEach(item =>{ %>
|
3
|
+
<div class="site-card">
|
4
|
+
<% if(item.tag){ %>
|
5
|
+
<% if(item.vip){ %>
|
6
|
+
<span class="site-card-tag vip"><%= item.tag %></span>
|
7
|
+
<% }else{ %>
|
8
|
+
<span class="site-card-tag"><%= item.tag %></span>
|
9
|
+
<% } %>
|
10
|
+
<% } %>
|
11
|
+
<a class="img" itle="<%= item.name %>" href="<%= url_for(item.link) %>">
|
12
|
+
<img class="flink-avatar" src="<%= item.topimg %>" alt="<%= item.name %>">
|
13
|
+
<div class="img-alt is-center"><%= item.name %></div>
|
14
|
+
</a>
|
15
|
+
<a class="info cf-friends-link" title="<%= item.name %>" href="<%= url_for(item.link) %>">
|
16
|
+
<div class="site-card-avatar">
|
17
|
+
<img class="flink-avatar cf-friends-avatar" src="<%= item.avatar %>" alt="<%= item.name %>">
|
18
|
+
<div class="img-alt is-center"><%= item.name %></div>
|
19
|
+
</div>
|
20
|
+
<div class="site-card-text">
|
21
|
+
<span class="title cf-friends-name"><%= item.name %></span>
|
22
|
+
<span class="desc" title="<%= item.descr %>"><%= item.descr %></span>
|
23
|
+
</div>
|
24
|
+
</a>
|
25
|
+
</div>
|
26
|
+
<% }) %>
|
27
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="flink-list">
|
2
|
+
<% data.forEach(item =>{ %>
|
3
|
+
<div class="flink-list-item">
|
4
|
+
<a class="cf-friends-link" href="<%= url_for(item.link) %>" title="<%= item.name %>">
|
5
|
+
<% if(item.tag){ %>
|
6
|
+
<% if(item.vip){ %>
|
7
|
+
<span class="site-card-tag vip"><%= item.tag %></span>
|
8
|
+
<% }else{ %>
|
9
|
+
<span class="site-card-tag"><%= item.tag %></span>
|
10
|
+
<% } %>
|
11
|
+
<% } %>
|
12
|
+
<img class="flink-avatar cf-friends-avatar" alt="<%= item.name %>" src="<%= item.avatar %>">
|
13
|
+
<div class="img-alt is-center"><%= item.name %></div>
|
14
|
+
<div class="flink-item-info">
|
15
|
+
<span class="flink-item-name cf-friends-name"><%= item.name %></span>
|
16
|
+
<span class="flink-item-desc" title="<%= item.descr %>"><%= item.descr %></span>
|
17
|
+
</div>
|
18
|
+
</a>
|
19
|
+
</div>
|
20
|
+
<% }) %>
|
21
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<% let year %>
|
2
|
+
<% page.posts.data.forEach(post => { %>
|
3
|
+
<% if(year !== moment(post.date).year()){ year = moment(post.date).year() %>
|
4
|
+
<div class="article-sort-item year"><%= year %></div>
|
5
|
+
<% } %>
|
6
|
+
<div class="article-sort-item">
|
7
|
+
<a class="article-sort-item-img" href="<%= url_for(post.path) %>" title="<%= post.title %>">
|
8
|
+
<img src="<%= post.cover %>"
|
9
|
+
alt="<%= post.title %>">
|
10
|
+
</a>
|
11
|
+
<div class="article-sort-item-info">
|
12
|
+
<a class="article-sort-item-title" href="<%= url_for(post.path) %>" title="<%= post.title %>"
|
13
|
+
onclick="window.event.cancelBubble=true;">
|
14
|
+
<%= post.title %>
|
15
|
+
</a>
|
16
|
+
<div class="article-sort-item-tags">
|
17
|
+
<% post.tags.data.forEach(tags => { %>
|
18
|
+
<a class="article-meta__tags" href="<%= url_for(tags.path) %>" onclick="window.event.cancelBubble=true;">
|
19
|
+
<span class="tags-punctuation"></span>
|
20
|
+
<%= tags.name %>
|
21
|
+
</a>
|
22
|
+
<% }) %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<% }); %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<nav id="pagination">
|
2
|
+
<div class="pagination">
|
3
|
+
<% const options = {
|
4
|
+
mid_size: 1,
|
5
|
+
escape: false,
|
6
|
+
next_text: '<div class="pagination_tips_next">下页</div> <i class="scoicon ri-arrow-right-s-line"></i>',
|
7
|
+
prev_text: '<i class="scoicon ri-arrow-left-s-line"></i> <div class="pagination_tips_prev">上页</div>'
|
8
|
+
} %>
|
9
|
+
<%- paginator(options) %>
|
10
|
+
</div>
|
11
|
+
</nav>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="back-menu-list-groups">
|
2
|
+
<% for(const x in theme.nav.left.menu){ %>
|
3
|
+
<% const groupData=theme.nav.left.menu[x] %>
|
4
|
+
<div class="back-menu-list-group">
|
5
|
+
<div class="back-menu-list-title">
|
6
|
+
<%= x %>
|
7
|
+
</div>
|
8
|
+
<div class="back-menu-list">
|
9
|
+
<% for(const y in groupData){ %>
|
10
|
+
<% const data=groupData[y] %>
|
11
|
+
<a class="back-menu-item" href="<%= url_for(data.url) %>" rel="external nofollow" title="<%= y %>">
|
12
|
+
<img class="back-menu-item-icon" src="<%= data.icon %>" loading="lazy">
|
13
|
+
<span class="back-menu-item-text">
|
14
|
+
<%= y %>
|
15
|
+
</span>
|
16
|
+
</a>
|
17
|
+
<% } %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<% } %>
|
21
|
+
</div>
|
22
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="menus_items">
|
2
|
+
<% for(const x in theme.nav.menu){ %>
|
3
|
+
<div class="menus_item">
|
4
|
+
<% if(!theme.nav.menu[x].url){ %>
|
5
|
+
<a class="site-page" href="javascript:void(0);" rel="external nofollow">
|
6
|
+
<span> <%= x %></span>
|
7
|
+
</a>
|
8
|
+
<ul class="menus_item_child">
|
9
|
+
<% for(y in theme.nav.menu[x].child){ %>
|
10
|
+
<li>
|
11
|
+
<a class="site-page child" href="<%- url_for(theme.nav.menu[x].child[y].url) %>">
|
12
|
+
<i class="<%- theme.nav.menu[x].child[y].icon %>"></i>
|
13
|
+
<span> <%= y %></span>
|
14
|
+
</a>
|
15
|
+
</li>
|
16
|
+
<% } %>
|
17
|
+
</ul>
|
18
|
+
<% } else { %>
|
19
|
+
<a class="site-page not-child" href="<%- url_for(theme.nav.menu[x].url) %>" rel="external nofollow">
|
20
|
+
<span> <%= x %></span>
|
21
|
+
</a>
|
22
|
+
<% } %>
|
23
|
+
</div>
|
24
|
+
<% } %>
|
25
|
+
</div>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<% if(theme.nav.right.travellings){ %>
|
2
|
+
<div class="nav-button only-home" id="travellings_button">
|
3
|
+
<a class="site-page" target="_blank" rel="noopener external nofollow" href="https://www.travellings.cn/go.html" title="开往-友链接力" width="120">
|
4
|
+
<i class="scoicon ri-subway-line" style="font-size: 1rem;"></i>
|
5
|
+
</a>
|
6
|
+
</div>
|
7
|
+
<% } %>
|
8
|
+
<% if(theme.nav.right.random){ %>
|
9
|
+
<div class="nav-button" id="randomPost_button">
|
10
|
+
<a class="site-page" onclick="toRandomPost()"
|
11
|
+
title="随机前往一个文章">
|
12
|
+
<i class="scoicon ri-signal-tower-fill" style="font-size: 1rem;"></i>
|
13
|
+
</a>
|
14
|
+
</div>
|
15
|
+
<% } %>
|
16
|
+
<% if(theme.thirdparty.search.algolia_search.enable || theme.thirdparty.search.local_search.enable){ %>
|
17
|
+
<div class="nav-button" id="search-button">
|
18
|
+
<a class="site-page social-icon search" title="站内搜索"
|
19
|
+
href="javascript:void(0);" rel="external nofollow">
|
20
|
+
<i class="scoicon ri-search-2-line" style="font-size: 1rem;"></i>
|
21
|
+
</a>
|
22
|
+
</div>
|
23
|
+
<% } %>
|
24
|
+
<% if(theme.nav.right.console){ %>
|
25
|
+
<div class="nav-button" id="nav-console">
|
26
|
+
<a class="console_switchbutton" onclick="sco.showConsole()"
|
27
|
+
title="显示中控台" href="javascript:void(0);" rel="external nofollow">
|
28
|
+
<i class="scoicon ri-layout-masonry-fill" style="font-size: 1rem;"></i>
|
29
|
+
</a>
|
30
|
+
</div>
|
31
|
+
<% } %>
|
32
|
+
<div class="nav-button" id="nav-totop" onclick="sco.toTop()">
|
33
|
+
<a class="totopbtn">
|
34
|
+
<i class="scoicon ri-arrow-up-line"></i>
|
35
|
+
<span id="percent">0</span>
|
36
|
+
</a>
|
37
|
+
</div>
|
38
|
+
<div id="toggle-menu">
|
39
|
+
<a class="site-page">
|
40
|
+
<i class="scoicon ri-menu-fill" style="font-size: 1rem;"></i>
|
41
|
+
</a>
|
42
|
+
</div>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<div class="post-reward">
|
2
|
+
<div class="reward-button button--animated" title="赞赏作者">
|
3
|
+
<script>
|
4
|
+
if (utils.isMobile()) {
|
5
|
+
const showReward = () => {
|
6
|
+
const rewardMain = document.querySelector('.reward-main');
|
7
|
+
rewardMain.style.display = 'flex';
|
8
|
+
document.addEventListener('touchstart', hideReward);
|
9
|
+
};
|
10
|
+
const hideReward = () => {
|
11
|
+
const rewardMain = document.querySelector('.reward-main');
|
12
|
+
rewardMain.style.display = 'none';
|
13
|
+
document.removeEventListener('touchstart', hideReward);
|
14
|
+
};
|
15
|
+
const rewardButton = document.querySelector('.reward-button');
|
16
|
+
rewardButton.addEventListener('touchstart', event => {
|
17
|
+
event.stopPropagation();
|
18
|
+
showReward();
|
19
|
+
});
|
20
|
+
}
|
21
|
+
</script>
|
22
|
+
<i class="heofont icon-hand-heart-fill"></i>
|
23
|
+
打赏作者
|
24
|
+
</div>
|
25
|
+
<div class="reward-main">
|
26
|
+
<ul class="reward-all">
|
27
|
+
<span class="reward-title">感谢你赐予我前进的力量</span>
|
28
|
+
<ul class="reward-group">
|
29
|
+
<% if(theme.post.award.wechat){ %>
|
30
|
+
<li class="reward-item">
|
31
|
+
<a href="<%= theme.post.award.wechat %>" target="_blank">
|
32
|
+
<img class="post-qr-code-img" src="<%= theme.post.award.wechat %>" alt="微信">
|
33
|
+
</a>
|
34
|
+
<div class="post-qr-code-desc">微信</div>
|
35
|
+
</li>
|
36
|
+
<% } %>
|
37
|
+
<% if(theme.post.award.alipay){ %>
|
38
|
+
<li class="reward-item">
|
39
|
+
<a href="<%= theme.post.award.alipay %>" target="_blank">
|
40
|
+
<img class="post-qr-code-img" src="<%= theme.post.award.alipay %>" alt="支付宝">
|
41
|
+
</a>
|
42
|
+
<div class="post-qr-code-desc">支付宝</div>
|
43
|
+
</li>
|
44
|
+
<% } %>
|
45
|
+
</ul>
|
46
|
+
<a class="reward-main-btn" href="<%= url_for(theme.post.award.url) %>">
|
47
|
+
<div class="reward-text">赞赏者名单</div>
|
48
|
+
<div class="reward-dec">因为你们的支持让我意识到写文章的价值🙏</div>
|
49
|
+
</a>
|
50
|
+
</ul>
|
51
|
+
</div>
|
52
|
+
</div>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<div class="post-copyright">
|
2
|
+
<div class="post-copyright__author_group">
|
3
|
+
<a class="post-copyright__author_img" href="/about/"
|
4
|
+
data-pjax-state="">
|
5
|
+
<img class="post-copyright__author_img_back"
|
6
|
+
src="https://bu.dusays.com/2023/11/01/6541f6d4b2573.png">
|
7
|
+
<img class="post-copyright__author_img_front"
|
8
|
+
src="<%= theme.site.icon %>"></a>
|
9
|
+
<div class="post-copyright__author_name"><%= config.title %></div>
|
10
|
+
<div class="post-copyright__author_desc"><%= config.subtitle %></div>
|
11
|
+
</div>
|
12
|
+
<div class="post-tools" id="post-tools">
|
13
|
+
<div class="post-tools-left">
|
14
|
+
<% if(theme.post.award.enable){%>
|
15
|
+
<%- partial('/award', {cache: true}) %>
|
16
|
+
<%} %>
|
17
|
+
<div class="reward-link mode">
|
18
|
+
<a class="reward-link-button" href="<%= theme.footer.rss.url %>">
|
19
|
+
<i class="heofont icon-plant-fill"></i>
|
20
|
+
订阅
|
21
|
+
</a>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="post-copyright__notice">
|
26
|
+
<span class="post-copyright-info">
|
27
|
+
本文是<%= page.cc || theme.post.default.copyright %>文章,
|
28
|
+
<% if(page.cc === "转载或翻译"){ %>
|
29
|
+
版权归原作者所有。转载本文请联系原作者。
|
30
|
+
<% }else{ %>
|
31
|
+
采用 <a href="/copyright/" target="_blank">CC BY-NC-ND 4.0</a>
|
32
|
+
协议,完整转载请注明来自
|
33
|
+
<a href="/" target="_blank"><%= config.title %></a>
|
34
|
+
<% } %>
|
35
|
+
</span>
|
36
|
+
</div>
|
37
|
+
</div>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<div class="coverdiv" id="coverdiv">
|
2
|
+
<img id="post-cover" class="nolazyload" src="<%= page.cover %>" alt="cover">
|
3
|
+
</div>
|
4
|
+
<div id="post-info">
|
5
|
+
<div id="post-firstinfo">
|
6
|
+
<div class="meta-firstline">
|
7
|
+
<a class="post-meta-original" title="该文章为<%= page.cc %>文章,注意版权协议">
|
8
|
+
<%= page.cc %>
|
9
|
+
</a>
|
10
|
+
<% if (page.categories.data.length) { %>
|
11
|
+
<span class="post-meta-categories">
|
12
|
+
<% page.categories.data.forEach(item => { %>
|
13
|
+
<a class="post-meta-categories" href="<%= url_for(item.path) %>"><%= item.name %></a>
|
14
|
+
<% }) %>
|
15
|
+
</span>
|
16
|
+
<% } %>
|
17
|
+
<div class="tag_share">
|
18
|
+
<div class="post-meta__tag-list">
|
19
|
+
<% page.tags.data.forEach(tags => { %>
|
20
|
+
<a class="post-meta__tags" href="<%= url_for(tags.path) %>">
|
21
|
+
<span class="tags-punctuation"></span>
|
22
|
+
<span class="tags-name"><%= tags.name %></span>
|
23
|
+
</a>
|
24
|
+
<% }) %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<h1 class="post-title"><%= page.title %></h1>
|
30
|
+
<div id="post-meta">
|
31
|
+
<div class="meta-secondline">
|
32
|
+
<span class="post-meta-date" title="发布于">
|
33
|
+
<i class="post-meta-icon ri-calendar-todo-fill"></i>
|
34
|
+
<time datetime="<%= moment(page.date).format() %>"></time>
|
35
|
+
</span>
|
36
|
+
<% if(theme.post.meta.updated){ %>
|
37
|
+
<span class="post-meta-date" title="更新于">
|
38
|
+
<i class="post-meta-icon ri-refresh-line"></i>
|
39
|
+
<time datetime="<%= moment(page.updated).format() %>"></time>
|
40
|
+
</span>
|
41
|
+
<% } %>
|
42
|
+
<% if(theme.post.meta.locate){ %>
|
43
|
+
<span class="post-meta-position" title="作者IP归属地为<%= page.locate %>">
|
44
|
+
<i class="post-meta-icon ri-map-pin-fill"></i>
|
45
|
+
<span><%= page.locate %></span>
|
46
|
+
</span>
|
47
|
+
<% } %>
|
48
|
+
<% if(theme.thirdparty.wordcount){ %>
|
49
|
+
<% if(theme.post.meta.wordcount){ %>
|
50
|
+
<span class="post-meta-wordcount">
|
51
|
+
<i class="ri-file-word-fill post-meta-icon" title="文章字数"></i>
|
52
|
+
<span class="word-count"><%= wordcount(page.content) %></span>
|
53
|
+
</span>
|
54
|
+
<% } %>
|
55
|
+
<% if(theme.post.meta.readtime){ %>
|
56
|
+
<span class="post-meta-time">
|
57
|
+
<i class="ri-time-fill post-meta-icon" title="阅读耗时"></i>
|
58
|
+
<span><%= min2read(page.content) %> min</span>
|
59
|
+
</span>
|
60
|
+
<% } %>
|
61
|
+
<% } %>
|
62
|
+
<% if(theme.thirdparty.busuanzi.enable && theme.post.meta.pv){ %>
|
63
|
+
<span class="post-meta-pv" title="文章热度">
|
64
|
+
<i class="ri-fire-fill post-meta-icon"></i>
|
65
|
+
<% if(theme.thirdparty.busuanzi.usecomment){ %>
|
66
|
+
<span id="twikoo_visitors"><i class="ri-loader-2-fill"></i></span>
|
67
|
+
<% }else{ %>
|
68
|
+
<span id="busuanzi_value_page_pv"><i class="ri-loader-2-fill"></i></span>
|
69
|
+
<% } %>
|
70
|
+
</span>
|
71
|
+
<% } %>
|
72
|
+
<% if(theme.post.meta.comment && page.comment){ %>
|
73
|
+
<span class="post-meta-commentcount" title="评论数">
|
74
|
+
<i class="ri-message-fill"></i>
|
75
|
+
<a href="#post-comment">
|
76
|
+
<span id="twikoo-count"><i class="ri-loader-2-fill"></i></span>
|
77
|
+
</a>
|
78
|
+
</span>
|
79
|
+
<% } %>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
<%- partial('partial/compoment/post/wave', {cache: true}) %>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<nav class="needEndHide pagination-post" id="pagination">
|
2
|
+
<% if(page.prev && page.next){ %>
|
3
|
+
<div class="prev-post pull-left">
|
4
|
+
<a href="<%= url_for(page.prev.path) %>">
|
5
|
+
<div class="pagination-info">
|
6
|
+
<div class="label">上一篇</div>
|
7
|
+
<div class="prev_info"><%= page.prev.title %></div>
|
8
|
+
</div>
|
9
|
+
</a>
|
10
|
+
</div>
|
11
|
+
<div class="next-post pull-right">
|
12
|
+
<a href="<%= url_for(page.next.path) %>">
|
13
|
+
<div class="pagination-info">
|
14
|
+
<div class="label">下一篇</div>
|
15
|
+
<div class="next_info"><%= page.next.title %></div>
|
16
|
+
</div>
|
17
|
+
</a>
|
18
|
+
</div>
|
19
|
+
<% }else{ %>
|
20
|
+
<% if(!page.prev && page.next){ %>
|
21
|
+
<div class="next-post pull-full">
|
22
|
+
<a href="<%= url_for(page.next.path) %>">
|
23
|
+
<div class="pagination-info">
|
24
|
+
<div class="label">下一篇</div>
|
25
|
+
<div class="next_info"><%= page.next.title %></div>
|
26
|
+
</div>
|
27
|
+
</a>
|
28
|
+
</div>
|
29
|
+
<% } %>
|
30
|
+
<% if(!page.next && page.prev){ %>
|
31
|
+
<div class="prev-post pull-full">
|
32
|
+
<a href="<%= url_for(page.prev.path) %>">
|
33
|
+
<div class="pagination-info">
|
34
|
+
<div class="label">上一篇</div>
|
35
|
+
<div class="prev_info"><%= page.prev.title %></div>
|
36
|
+
</div>
|
37
|
+
</a>
|
38
|
+
</div>
|
39
|
+
<% } %>
|
40
|
+
<% } %>
|
41
|
+
</nav>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<section class="main-hero-waves-area waves-area"><svg class="waves-svg" xmlns="http://www.w3.org/2000/svg"
|
2
|
+
xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto">
|
3
|
+
<defs>
|
4
|
+
<path id="gentle-wave"
|
5
|
+
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"></path>
|
6
|
+
</defs>
|
7
|
+
<g class="parallax">
|
8
|
+
<use href="#gentle-wave" x="48" y="0"></use>
|
9
|
+
<use href="#gentle-wave" x="48" y="3"></use>
|
10
|
+
<use href="#gentle-wave" x="48" y="5"></use>
|
11
|
+
<use href="#gentle-wave" x="48" y="7"></use>
|
12
|
+
</g>
|
13
|
+
</svg>
|
14
|
+
</section>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<div class="author-content author-content-item essayPage single nolazyload" style="background: url(<%= page.cover %>) no-repeat center;background-size: cover;">
|
2
|
+
<div class="card-content">
|
3
|
+
<div class="author-content-item-tips"><%= page.title %></div>
|
4
|
+
<span class="author-content-item-title"><%= page.desc %></span>
|
5
|
+
<div class="content-bottom">
|
6
|
+
<div class="tips"><%- page.tipl %></div>
|
7
|
+
<div class="tips"><%- page.tipr %></div>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="bber-bottom">
|
2
|
+
<div class="bber-info">
|
3
|
+
<div class="bber-info-time">
|
4
|
+
<i class="ri-time-fill"></i>
|
5
|
+
<time class="datetime" datetime="<%= moment(item.date).format() %>"></time>
|
6
|
+
</div>
|
7
|
+
<% if(item.link){ %>
|
8
|
+
<a class="bber-content-link" href="<%= url_for(item.link) %>" title="跳转到短文指引的链接">
|
9
|
+
<i class="ri-link-m"></i>
|
10
|
+
链接
|
11
|
+
</a>
|
12
|
+
<% } %>
|
13
|
+
</div>
|
14
|
+
<a class="bber-reply" onclick="sco.toTalk('<%- item.content %>')" >
|
15
|
+
<i class="ri-message-3-fill" style="font-size: 1rem;">
|
16
|
+
</i>
|
17
|
+
</a>
|
18
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div id="post-comment" view-image>
|
2
|
+
<div class="comment-head">
|
3
|
+
<div class="comment-headline">
|
4
|
+
<i class="scoicon ri-message-fill"></i>
|
5
|
+
<span> 评论</span>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
<div class="comment-wrap">
|
9
|
+
<div id="comment"></div>
|
10
|
+
<%- partial('partial/compoment/third-party/comments/twikoo', {cache: true}) %>
|
11
|
+
</div>
|
12
|
+
</div>
|