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,28 @@
|
|
1
|
+
<div class="aside-content" id="aside-content">
|
2
|
+
<%
|
3
|
+
var noSticky, Sticky;
|
4
|
+
if(is_home()){
|
5
|
+
noSticky = theme.aside.home.noSticky.split(',')
|
6
|
+
Sticky = theme.aside.home.Sticky.split(',')
|
7
|
+
}
|
8
|
+
if(is_post()){
|
9
|
+
noSticky = theme.aside.post.noSticky.split(',')
|
10
|
+
Sticky = theme.aside.post.Sticky.split(',')
|
11
|
+
}
|
12
|
+
if(is_page() || is_archive() || is_tag() || is_category()){
|
13
|
+
noSticky = theme.aside.page.noSticky.split(',')
|
14
|
+
Sticky = theme.aside.page.Sticky.split(',')
|
15
|
+
}
|
16
|
+
%>
|
17
|
+
<% if(noSticky)noSticky.forEach(item => { %>
|
18
|
+
<%- partial('partial/compoment/aside/asideSwitch', {item: item}) %>
|
19
|
+
<% }); %>
|
20
|
+
<div class="sticky_layout">
|
21
|
+
<% if(page.toc){ %>
|
22
|
+
<%- partial('partial/compoment/aside/asideToc') %>
|
23
|
+
<% } %>
|
24
|
+
<% if(Sticky)Sticky.forEach(item => { %>
|
25
|
+
<%- partial('partial/compoment/aside/asideSwitch', {item: item}) %>
|
26
|
+
<% }); %>
|
27
|
+
</div>
|
28
|
+
</div>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<div class="card-widget card-tags card-archives card-webinfo card-allinfo">
|
2
|
+
<%- partial('partial/compoment/aside/asideTag', {cache: true}) %>
|
3
|
+
<%- partial('partial/compoment/aside/asideArchive', {cache: true}) %>
|
4
|
+
<hr>
|
5
|
+
<%- partial('partial/compoment/aside/asideWebInfo', {cache: true}) %>
|
6
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<ul class="card-archive-list">
|
2
|
+
<% var type = locals.type ? locals.type : 'year'; %>
|
3
|
+
<% for(const [key, value] of Object.entries(getArchiveLength(type))){ %>
|
4
|
+
<li class="card-archive-list-item"><a class="card-archive-list-link" onclick="pjax.loadUrl('/archives/<%= key %>/')" data-pjax-state=""><span
|
5
|
+
class="card-archive-list-date"><%= key %></span>
|
6
|
+
<div class="card-archive-list-count-group"><span class="card-archive-list-count"><%= value %></span><span
|
7
|
+
class="card-archive-list-count-unit">篇</span></div>
|
8
|
+
</a>
|
9
|
+
</li>
|
10
|
+
<% } %>
|
11
|
+
</ul>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="card-widget heo-right-widget" id="card-wechat">
|
2
|
+
<div id="flip-wrapper">
|
3
|
+
<div id="flip-content">
|
4
|
+
<div class="face" style="background: url(<%= theme.aside.flip.face %>) center center no-repeat; background-size: 100%;"></div>
|
5
|
+
<div class="back face" style="background: url(<%= theme.aside.flip.backface %>) center center no-repeat;background-size: 100%"></div>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<div class="card-widget card-info">
|
2
|
+
<div class="card-content">
|
3
|
+
<div class="card-info-avatar is-center">
|
4
|
+
<div class="author-info__top-group">
|
5
|
+
<div class="author-info__sayhi" id="author-info__sayhi" onclick="sco.changeSayHelloText()">
|
6
|
+
一日之计在于晨
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="avatar-img-group">
|
11
|
+
<img class="avatar-img" alt="avatar" src="<%= theme.aside.card.author.img %>">
|
12
|
+
<div class="avatar-sticker">
|
13
|
+
<svg class="avatar-sticker-img" alt="avatar" aria-hidden="true">
|
14
|
+
<use xlink:href="<%= theme.aside.card.author.state %>"></use>
|
15
|
+
</svg>
|
16
|
+
<%- js(theme.aside.card.author.js) %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div class="author-info__description_group">
|
20
|
+
<div class="author-info__description"><%- theme.aside.card.content %></div>
|
21
|
+
<div class="author-info__description2"><%- theme.aside.card.content2 %></div>
|
22
|
+
</div>
|
23
|
+
<div class="author-info__bottom-group">
|
24
|
+
<a class="author-info__bottom-group-left" href="/about" data-pjax-state="">
|
25
|
+
<div class="author-info__name">
|
26
|
+
<%= config.author %>
|
27
|
+
</div>
|
28
|
+
<div class="author-info__desc"><%- config.subtitle %></div>
|
29
|
+
</a>
|
30
|
+
<div class="card-info-social-icons is-center">
|
31
|
+
<% for(const i in theme.aside.card.information){ %>
|
32
|
+
<a class="social-icon" href="<%= url_for(theme.aside.card.information[i].url) %>" title="<%= i %>">
|
33
|
+
<i class="<%= theme.aside.card.information[i].icon %>"></i>
|
34
|
+
</a>
|
35
|
+
<% } %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="card-widget card-recent-post">
|
2
|
+
<div class="item-headline">
|
3
|
+
<i class="ri-map-2-line"></i>
|
4
|
+
<span>最近发布</span>
|
5
|
+
</div>
|
6
|
+
<div class="aside-list">
|
7
|
+
<% let index = 1 %>
|
8
|
+
<% for (const post of site.posts.data.sort((a, b) => {
|
9
|
+
return b.date < a.date ? -1 : 1
|
10
|
+
})){ %>
|
11
|
+
<div class="aside-list-item">
|
12
|
+
<a class="thumbnail" href="<%= url_for(post.path) %>" title="<%= post.title %>">
|
13
|
+
<img
|
14
|
+
alt="<%= post.title %>"
|
15
|
+
src="<%= post.cover %>">
|
16
|
+
</a>
|
17
|
+
<div class="content">
|
18
|
+
<% post.categories.data.forEach(categories => { %>
|
19
|
+
<a class="article-recent_post_categories" href="<%= url_for(post.path) %>">
|
20
|
+
<%= categories.name %>
|
21
|
+
</a>
|
22
|
+
<% }) %>
|
23
|
+
<a class="title" href="<%= url_for(post.path) %>" title="<%= post.title %>">
|
24
|
+
<%= post.title %>
|
25
|
+
</a>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<% index++;if(index > 5)break; %>
|
29
|
+
<% } %>
|
30
|
+
</div>
|
31
|
+
</div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="card-widget card-power">
|
2
|
+
<% const data = site.data.aifadian.links %>
|
3
|
+
<% const vip = data[Math.floor(Math.random() * data.length)] %>
|
4
|
+
<div class="item-headline">
|
5
|
+
<img src="/img/power.png" style="width: 1.2rem">
|
6
|
+
<span>爱发电赞助</span>
|
7
|
+
<a class="power-charge" href="<%= theme.aside.power.link %>" rel="external nofollow" target="_blank"
|
8
|
+
title="赞助博主">赞助</a>
|
9
|
+
</div>
|
10
|
+
<a id="power-star" data-pjax-state="" href="<%= vip.url %>>">
|
11
|
+
<div id="power-star-image"
|
12
|
+
style="background-image: url('<%= vip.avatar %>');"></div>
|
13
|
+
<div class="power-star-body">
|
14
|
+
<div id="power-star-title"><%= vip.name %></div>
|
15
|
+
<div id="power-star-desc"><%= vip.descr %></div>
|
16
|
+
</div>
|
17
|
+
</a>
|
18
|
+
<div class="power-list">
|
19
|
+
<div class="power-item">
|
20
|
+
<div class="power-item-body">
|
21
|
+
<% data.forEach(item => { %>
|
22
|
+
<% if(item.name !== vip.name){ %>
|
23
|
+
<div class="power-item-link">
|
24
|
+
<a target="_blank" href="<%= item.link %>" rel="external nofollow"><%= item.name %></a>
|
25
|
+
</div>
|
26
|
+
<% } %>
|
27
|
+
<% }) %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<% switch (item) {
|
2
|
+
case 'power': %>
|
3
|
+
<%- partial('partial/compoment/aside/asidePower', {cache: true}) %>
|
4
|
+
<% break;
|
5
|
+
case 'about': %>
|
6
|
+
<%- partial('partial/compoment/aside/asideInfoCard', {cache: true}) %>
|
7
|
+
<% break;
|
8
|
+
case 'flip': %>
|
9
|
+
<%- partial('partial/compoment/aside/asideFlipCard', {cache: true}) %>
|
10
|
+
<% break;
|
11
|
+
case 'newestPost': %>
|
12
|
+
<%- partial('partial/compoment/aside/asideNewestPost', {cache: true}) %>
|
13
|
+
<% break;
|
14
|
+
case 'tag': %>
|
15
|
+
<div class="card-widget card-tags">
|
16
|
+
<%- partial('partial/compoment/aside/asideTag', {cache: true}) %>
|
17
|
+
</div>
|
18
|
+
<% break;
|
19
|
+
case 'archive': %>
|
20
|
+
<div class="card-widget card-archives">
|
21
|
+
<%- partial('partial/compoment/aside/asideArchive', {cache: true}) %>
|
22
|
+
</div>
|
23
|
+
<% break;
|
24
|
+
case 'webInfo': %>
|
25
|
+
<div class="card-widget card-webinfo">
|
26
|
+
<%- partial('partial/compoment/aside/asideWebInfo', {cache: true}) %>
|
27
|
+
</div>
|
28
|
+
<% break;
|
29
|
+
case 'allInfo': %>
|
30
|
+
<%- partial('partial/compoment/aside/asideAllInfo', {cache: true}) %>
|
31
|
+
<% break;
|
32
|
+
default: %>
|
33
|
+
<%- partial('page/page') %>
|
34
|
+
<% break;
|
35
|
+
} %>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
<div class="webinfo">
|
2
|
+
<% if(theme.aside.siteinfo.postcount){ %>
|
3
|
+
<div class="webinfo-item">
|
4
|
+
<div class="webinfo-item-title">
|
5
|
+
<i class="item-icon ri-archive-fill"></i>
|
6
|
+
<div class="item-name">文章总数 :</div>
|
7
|
+
</div>
|
8
|
+
<div class="item-count"><%= site.posts.length %></div>
|
9
|
+
</div>
|
10
|
+
<% } %>
|
11
|
+
<% if(theme.thirdparty.busuanzi){ %>
|
12
|
+
<% if(theme.aside.siteinfo.pv){ %>
|
13
|
+
<div class="webinfo-item">
|
14
|
+
<div class="webinfo-item-title">
|
15
|
+
<i class="item-icon ri-window-fill"></i>
|
16
|
+
<div class="item-name">总访问数 :</div>
|
17
|
+
</div>
|
18
|
+
<span id="busuanzi_value_site_pv"><i class="ri-loader-2-fill"></i></span>
|
19
|
+
</div>
|
20
|
+
<% } %>
|
21
|
+
<% if(theme.aside.siteinfo.uv){ %>
|
22
|
+
<div class="webinfo-item">
|
23
|
+
<div class="webinfo-item-title">
|
24
|
+
<i class="item-icon ri-team-fill"></i>
|
25
|
+
<div class="item-name">总访客数 :</div>
|
26
|
+
</div>
|
27
|
+
<span id="busuanzi_value_site_uv"><i class="ri-loader-2-fill"></i></span>
|
28
|
+
</div>
|
29
|
+
<% } %>
|
30
|
+
<% } %>
|
31
|
+
<% if(theme.aside.siteinfo.runtimeenable){ %>
|
32
|
+
<div class="webinfo-item">
|
33
|
+
<div class="webinfo-item-title">
|
34
|
+
<i class="item-icon ri-calendar-todo-fill"></i>
|
35
|
+
<div class="item-name">建站天数 :</div>
|
36
|
+
</div>
|
37
|
+
<div class="item-count" id="runtimeshow">
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<% } %>
|
41
|
+
<% if(theme.aside.siteinfo.updatetime){ %>
|
42
|
+
<div class="webinfo-item">
|
43
|
+
<div class="webinfo-item-title">
|
44
|
+
<i class="item-icon ri-loop-left-fill"></i>
|
45
|
+
<div class="item-name">最后更新 :</div>
|
46
|
+
</div>
|
47
|
+
<time class="item-count" datetime="<%= new Date() %>">
|
48
|
+
</time>
|
49
|
+
</div>
|
50
|
+
<% } %>
|
51
|
+
<% if(theme.thirdparty.wordcount && theme.aside.siteinfo.wordcount){ %>
|
52
|
+
<div class="webinfo-item">
|
53
|
+
<div class="webinfo-item-title">
|
54
|
+
<i class="item-icon ri-file-word-fill"></i>
|
55
|
+
<div class="item-name">全站字数 :</div>
|
56
|
+
</div>
|
57
|
+
<div class="item-count"><%= totalcount(site) %></div>
|
58
|
+
</div>
|
59
|
+
<% } %>
|
60
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<div class="title-h2-a">
|
2
|
+
<div class="title-h2-a-left">
|
3
|
+
<h2 style="padding-top: 0;margin:0.6rem 0 0.6rem;">🎣 钓鱼</h2>
|
4
|
+
<a id="random-post-start" href="javascript:fetchRandomPost();" rel="external nofollow"
|
5
|
+
style="transition-duration: 0.3s; transform: rotate(63000deg); opacity: 1;" data-pjax-state="">
|
6
|
+
<i class="scoicon ri-refresh-line"></i>
|
7
|
+
</a>
|
8
|
+
</div>
|
9
|
+
<div class="title-h2-a-right"><a class="random-post-all" href="/links/" data-pjax-state="">全部友链</a></div>
|
10
|
+
</div>
|
11
|
+
<div id="random-post"></div>
|
12
|
+
|
13
|
+
<div class="title-h2-a">
|
14
|
+
<div class="title-h2-a-left">
|
15
|
+
<h2 style="padding-top: 0;margin:0.6rem 0 0.6rem;">🐟 鱼塘</h2>
|
16
|
+
</div>
|
17
|
+
<div class="title-h2-a-right"><span>以下内容自动生成,未经过审核</span></div>
|
18
|
+
</div>
|
19
|
+
<script>
|
20
|
+
var fdata = {
|
21
|
+
apiurl: "<%= theme.circle.api %>",
|
22
|
+
defaultFish: 100,
|
23
|
+
hungryFish: 100,
|
24
|
+
}
|
25
|
+
</script>
|
26
|
+
<script type="text/javascript" src="/lib/friends_post.js"></script>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="author-content author-content-item essayPage single nolazyload"
|
2
|
+
style="background: url(<%= page.cover %>) no-repeat center;background-size: cover;">
|
3
|
+
<div class="card-content">
|
4
|
+
<div class="author-content-item-tips"><%= page.title %></div>
|
5
|
+
<span class="author-content-item-title"><%= page.desc %></span>
|
6
|
+
<div class="content-bottom">
|
7
|
+
<div class="tips">使用 友链朋友圈 订阅友链最新文章</div>
|
8
|
+
<div class="tips"></div>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div id="hexo-circle-of-friends-root"></div>
|
2
|
+
<script>
|
3
|
+
let UserConfig = {
|
4
|
+
// 填写你的api地址
|
5
|
+
private_api_url: '<%= theme.circle.api %>',
|
6
|
+
// 默认加载文章数
|
7
|
+
page_init_number: <%= theme.circle.page_init_number%>,
|
8
|
+
// 点击加载更多时,一次最多加载几篇文章,默认10
|
9
|
+
page_turning_number: <%= theme.circle.page_turning_number %>,
|
10
|
+
// 头像加载失败时,默认头像地址
|
11
|
+
error_img: '<%= theme.circle.error_img %>',
|
12
|
+
// 进入页面时第一次的排序规则
|
13
|
+
sort_rule: '<%= theme.circle.sort_rule %>',
|
14
|
+
// 本地文章缓存数据过期时间(天)
|
15
|
+
expire_days: <%= theme.circle.expire_days %>,
|
16
|
+
}
|
17
|
+
</script>
|
18
|
+
<script type="text/javascript"
|
19
|
+
src="<%= theme.circle.appjs ? theme.circle.appjs : '/js/circle.js' %>" rel="external nofollow"></script>
|
20
|
+
<script type="text/javascript"
|
21
|
+
src="<%= theme.circle.bundejs ? theme.circle.bundejs : 'https://npm.elemecdn.com/wzheo-absolute@1.0.3/lib/bundle.min.js' %>"
|
22
|
+
rel="external nofollow"></script>
|
@@ -0,0 +1,115 @@
|
|
1
|
+
<div id="rightMenu">
|
2
|
+
<div class="rightMenu-group rightMenu-small">
|
3
|
+
<a class="rightMenu-item" href="javascript:window.history.back();">
|
4
|
+
<i class="scoicon ri-arrow-left-circle-fill"></i>
|
5
|
+
</a>
|
6
|
+
<a class="rightMenu-item" href="javascript:window.history.forward();">
|
7
|
+
<i class="scoicon ri-arrow-right-circle-fill"></i>
|
8
|
+
</a>
|
9
|
+
<a class="rightMenu-item" href="javascript:window.location.reload();">
|
10
|
+
<i class="scoicon ri-restart-fill"></i>
|
11
|
+
</a>
|
12
|
+
<a class="rightMenu-item" href="javascript:sco.toTop();">
|
13
|
+
<i class="scoicon ri-arrow-up-circle-fill"></i>
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
<div class="rightMenu-group rightMenu-line hide" id="menu-text">
|
17
|
+
<a class="rightMenu-item" href="javascript:rmf.copySelect();">
|
18
|
+
<i class="scoicon ri-file-copy-fill"></i>
|
19
|
+
<span>复制选中文本</span>
|
20
|
+
</a>
|
21
|
+
</div>
|
22
|
+
<div class="rightMenu-group rightMenu-line">
|
23
|
+
<a class="rightMenu-item" href="javascript:toRandomPost();">
|
24
|
+
<i class="scoicon ri-signal-tower-fill"></i>
|
25
|
+
<span>随便逛逛</span>
|
26
|
+
</a>
|
27
|
+
<a class="rightMenu-item" href="/categories/">
|
28
|
+
<i class="scoicon ri-send-backward"></i>
|
29
|
+
<span>文章分类</span>
|
30
|
+
</a>
|
31
|
+
<a class="rightMenu-item" href="/tags/">
|
32
|
+
<i class="scoicon ri-price-tag-3-fill"></i>
|
33
|
+
<span>文章标签</span>
|
34
|
+
</a>
|
35
|
+
</div>
|
36
|
+
<div class="rightMenu-group rightMenu-line">
|
37
|
+
<a class="rightMenu-item" href="javascript:sco.switchDarkMode();">
|
38
|
+
<i class="scoicon ri-contrast-2-fill"></i>
|
39
|
+
<span>昼夜转换</span>
|
40
|
+
</a>
|
41
|
+
<a class="rightMenu-item" href="javascript:sco.copyPageUrl();">
|
42
|
+
<i class="scoicon ri-external-link-fill"></i>
|
43
|
+
<span>复制地址</span>
|
44
|
+
</a>
|
45
|
+
<% if(theme.comment.enable){ %>
|
46
|
+
<a class="rightMenu-item" href="javascript:sco.switchCommentBarrage()">
|
47
|
+
<i class="scoicon ri-message-3-fill"></i>
|
48
|
+
<span class="menu-commentBarrage-text">关闭热评</span>
|
49
|
+
</a>
|
50
|
+
<% } %>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<script>
|
54
|
+
let rmf = {};
|
55
|
+
rmf.showRightMenu = function (isTrue, x = 0, y = 0) {
|
56
|
+
let rightMenu = document.getElementById('rightMenu');
|
57
|
+
rightMenu.style.top = x + 'px';
|
58
|
+
rightMenu.style.left = y + 'px';
|
59
|
+
|
60
|
+
if (isTrue) {
|
61
|
+
rightMenu.style.display = 'block';
|
62
|
+
} else {
|
63
|
+
rightMenu.style.display = 'none';
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
//复制选中文字
|
68
|
+
rmf.copySelect = function () {
|
69
|
+
document.execCommand('Copy', false, null);
|
70
|
+
//这里可以写点东西提示一下 已复制
|
71
|
+
}
|
72
|
+
|
73
|
+
rmf.hideRightMenu = function () {
|
74
|
+
rmf.showRightMenu(false);
|
75
|
+
document.getElementById("rightmenu-item").style.display = "none";
|
76
|
+
};
|
77
|
+
|
78
|
+
rmf.rightmenuCopyText = function (e) {
|
79
|
+
navigator.clipboard && navigator.clipboard.writeText(e),
|
80
|
+
rmf.hideRightMenu()
|
81
|
+
}
|
82
|
+
|
83
|
+
// 右键菜单事件
|
84
|
+
if (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
|
85
|
+
window.oncontextmenu = function (event) {
|
86
|
+
let rightMenuGroup = document.querySelectorAll('.rightMenu-group.hide');
|
87
|
+
rightMenuGroup.forEach(function (group) {
|
88
|
+
group.style.display = 'none';
|
89
|
+
});
|
90
|
+
|
91
|
+
//如果有文字选中,则显示 文字选中相关的菜单项
|
92
|
+
if (document.getSelection().toString()) {
|
93
|
+
document.getElementById('menu-text').style.display = 'block';
|
94
|
+
}
|
95
|
+
|
96
|
+
let pageX = event.clientX + 10;
|
97
|
+
let pageY = event.clientY;
|
98
|
+
let rmWidth = document.getElementById('rightMenu').offsetWidth;
|
99
|
+
let rmHeight = document.getElementById('rightMenu').offsetHeight;
|
100
|
+
if (pageX + rmWidth > window.innerWidth) {
|
101
|
+
pageX -= rmWidth + 10;
|
102
|
+
}
|
103
|
+
if (pageY + rmHeight > window.innerHeight) {
|
104
|
+
pageY -= pageY + rmHeight - window.innerHeight;
|
105
|
+
}
|
106
|
+
|
107
|
+
rmf.showRightMenu(true, pageY, pageX);
|
108
|
+
return false;
|
109
|
+
};
|
110
|
+
|
111
|
+
window.addEventListener('click', function () {
|
112
|
+
rmf.showRightMenu(false);
|
113
|
+
});
|
114
|
+
}
|
115
|
+
</script>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<div id="equipment">
|
2
|
+
<% if (site.data.equipment) { %>
|
3
|
+
<% site.data.equipment.forEach(function(i) { %>
|
4
|
+
<div class="equipment-item">
|
5
|
+
<h2 class="equipment-item-title"><%= i.class_name %></h2>
|
6
|
+
<div class="equipment-item-description"><%= i.description %></div>
|
7
|
+
<div class="equipment-item-content">
|
8
|
+
<% i.equipment_list.forEach(function(item) { %>
|
9
|
+
<div class="equipment-item-content-item">
|
10
|
+
<div class="equipment-item-content-item-cover">
|
11
|
+
<img class="equipment-item-content-item-image" src="<%= item.image %>" alt="<%= item.name %>">
|
12
|
+
</div>
|
13
|
+
<div class="equipment-item-content-item-info">
|
14
|
+
<div class="equipment-item-content-item-name"><%= item.name %></div>
|
15
|
+
<div class="equipment-item-content-item-specification"><%= item.specification %></div>
|
16
|
+
<div class="equipment-item-content-item-description"><%= item.description %></div>
|
17
|
+
<% if (item.link) { %>
|
18
|
+
<div class="equipment-item-content-item-toolbar">
|
19
|
+
<% if (item.link.includes('https://') || item.link.includes('http://')) { %>
|
20
|
+
<a class="equipment-item-content-item-link" href="<%= item.link %>" target="_blank">详情</a>
|
21
|
+
<% } else { %>
|
22
|
+
<a class="equipment-item-content-item-link" href="<%= item.link %>" target="_blank">查看文章</a>
|
23
|
+
<% } %>
|
24
|
+
<a class="bber-reply" onclick="sco.toTalk('<%- item.description %>')" >
|
25
|
+
<i class="fa-solid fa-comment" style="font-size: 1rem;">
|
26
|
+
</i>
|
27
|
+
</a>
|
28
|
+
</div>
|
29
|
+
<% } %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<% }) %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<% }) %>
|
36
|
+
<% } %>
|
37
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="category-bar-items" id="category-bar-items">
|
2
|
+
<div class="category-bar-item <%= is_home() ? 'select' : '' %>" id="category-bar-home">
|
3
|
+
<a href="/">首页</a>
|
4
|
+
</div>
|
5
|
+
<% for(const item of site.categories.data){ %>
|
6
|
+
<div class="category-bar-item <%= select ? (select === item.name ? 'select' : '') : '' %>">
|
7
|
+
<a href="<%= url_for(item.path) %>"><%= item.name %></a>
|
8
|
+
</div>
|
9
|
+
<% } %>
|
10
|
+
</div>
|
11
|
+
<a class="category-bar-more" href="/categories/">更多</a>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<div class="recent-post-item" onclick="pjax.loadUrl('/<%= post.path %>')">
|
2
|
+
<div class="post_cover left_radius">
|
3
|
+
<a href="<%= url_for(post.path) %>" title="<%= post.title %>">
|
4
|
+
<img class="post_bg" alt="<%= post.title %>" src="<%= post.cover %>">
|
5
|
+
</a>
|
6
|
+
</div>
|
7
|
+
<div class="recent-post-info">
|
8
|
+
<div class="recent-post-info-top">
|
9
|
+
<div class="recent-post-info-top-tips">
|
10
|
+
<% post.categories.data.forEach(categories => { %>
|
11
|
+
<span class="original"><%= categories.name %></span>
|
12
|
+
<% }) %>
|
13
|
+
<% if(post.prev == null){ %>
|
14
|
+
<span class="original">最新</span>
|
15
|
+
<% }%>
|
16
|
+
<a class="unvisited-post" href="<%= url_for(post.path) %>" title="<%= post.title %>" data-pjax-state>未读</a>
|
17
|
+
</div>
|
18
|
+
<a class="article-title" href="<%= url_for(post.path) %>" title="<%= post.title %>">
|
19
|
+
<%= post.title %>
|
20
|
+
</a>
|
21
|
+
</div>
|
22
|
+
<div class="article-meta-wrap">
|
23
|
+
<span class="article-meta tags">
|
24
|
+
<% post.tags.data.forEach(tags => { %>
|
25
|
+
<a class="article-meta__tags" href="<%= url_for(tags.path) %>"
|
26
|
+
onclick="window.event.cancelBubble=true;">
|
27
|
+
<span class="tags-punctuation"></span>
|
28
|
+
<%= tags.name %>
|
29
|
+
</a>
|
30
|
+
<% }) %>
|
31
|
+
</span>
|
32
|
+
<span class="post-meta-date">
|
33
|
+
<time datetime="<%= moment(post.date).format() %>"></time>
|
34
|
+
</span>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="bbTimeList container" id="bbTimeList">
|
2
|
+
<i class="bber-logo scoicon sco-says" onclick="pjax.loadUrl('/essay/')" style="font-size: 1rem;"></i>
|
3
|
+
<div class="swiper-container swiper-no-swiping swiper-container-initialized swiper-container-vertical swiper-container-pointer-events"
|
4
|
+
id="bbtalk" tabindex="-1" onclick="pjax.loadUrl('/essay/')">
|
5
|
+
<div class="swiper-wrapper" id="bber-talk">
|
6
|
+
<% for(i in site.data.essay.essay_list){ %>
|
7
|
+
<% const item = site.data.essay.essay_list[i];if(i >= 10)break; %>
|
8
|
+
<div class="li-style swiper-slide">
|
9
|
+
<%= item.image ? item.content + '【图片】' : item.content %>
|
10
|
+
</div>
|
11
|
+
<% } %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
<i class="bber-gotobb scoicon ri-arrow-right-circle-fill" style="font-size: 1rem" title="查看全文" onclick="pjax.loadUrl('/says/')"></i>
|
15
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="categoryItem" style="box-shadow: var(--sco-shadow-blue);"><a class="categoryButton CB1 bikan"
|
2
|
+
href="<%- url_for(theme.hometop.categoryGroup.G1.url) %>">
|
3
|
+
<span class="categoryButtonText"><%= theme.hometop.categoryGroup.G1.name %></span>
|
4
|
+
<i class="<%- theme.hometop.categoryGroup.G1.icon %>"></i>
|
5
|
+
</a>
|
6
|
+
</div>
|
7
|
+
<div class="categoryItem" style="box-shadow: var(--sco-shadow-red);">
|
8
|
+
<a class="categoryButton remen" href="<%- url_for(theme.hometop.categoryGroup.G2.url) %>">
|
9
|
+
<span class="categoryButtonText"><%= theme.hometop.categoryGroup.G2.name %></span>
|
10
|
+
<i class="<%- theme.hometop.categoryGroup.G2.icon %>"></i>
|
11
|
+
</a>
|
12
|
+
</div>
|
13
|
+
<div class="categoryItem" style="box-shadow: var(--sco-shadow-green);">
|
14
|
+
<a class="categoryButton shiyong"
|
15
|
+
href="<%- url_for(theme.hometop.categoryGroup.G3.url) %>">
|
16
|
+
<span class="categoryButtonText"><%= theme.hometop.categoryGroup.G3.name %></span>
|
17
|
+
<i class="<%- theme.hometop.categoryGroup.G3.icon %>"></i>
|
18
|
+
</a>
|
19
|
+
</div>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<div class="banners-title">
|
2
|
+
<div class="banners-title-big">
|
3
|
+
<%- theme.hometop.banner.title %>
|
4
|
+
</div>
|
5
|
+
<div class="banners-title-small">
|
6
|
+
<%= theme.hometop.banner.url %>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="tags-group-all">
|
10
|
+
<div class="tags-group-wrapper">
|
11
|
+
<% for(let i = 1; i <= 2; i++){ %>
|
12
|
+
<% for(let j = 0; j < Object.keys(theme.hometop.banner.icon).length; j++){ %>
|
13
|
+
<% const key = Object.keys(theme.hometop.banner.icon)[j] %>
|
14
|
+
<% if(j % 2 == 0){ %>
|
15
|
+
<div class="tags-group-icon-pair">
|
16
|
+
<% } %>
|
17
|
+
<div class="tags-group-icon" style="background: <%- theme.hometop.banner.icon[key].color %>">
|
18
|
+
<img src="<%= theme.hometop.banner.icon[key].img %>" title="<%= key %>">
|
19
|
+
</div>
|
20
|
+
<% if(j % 2 == 1 || j == Object.keys(theme.hometop.banner.icon).length - 1){ %>
|
21
|
+
</div>
|
22
|
+
<% } %>
|
23
|
+
<% } %>
|
24
|
+
<% } %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
<a id="banner-hover" onclick="toRandomPost()" data-pjax-state="">
|
28
|
+
<span class="bannerText">随便逛逛</span>
|
29
|
+
<i class="scoicon ri-arrow-right-line banner-righticon"></i>
|
30
|
+
</a>
|