hexo-theme-solitude 1.7.4 → 1.7.6
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/_config.yml +7 -1
- package/layout/includes/inject/body.pug +4 -4
- package/layout/includes/inject/head.pug +1 -1
- package/layout/includes/widgets/home/leonus.pug +49 -0
- package/layout/includes/widgets/third-party/news-comment/twikoo.pug +1 -1
- package/layout/includes/widgets/third-party/news-comment/valine.pug +1 -1
- package/layout/includes/widgets/third-party/news-comment/waline.pug +1 -1
- package/layout/index.pug +2 -0
- package/package.json +1 -1
- package/source/css/_layout/aside.styl +4 -1
- package/source/css/_page/_home/banner.styl +115 -0
- package/source/css/_page/_home/home.styl +3 -0
- package/source/css/_page/says.styl +7 -3
- package/source/js/third_party/efu_ai.min.js +1 -1
- package/source/js/utils.js +0 -6
- package/source/js/third_party/lately.min.js +0 -6
package/_config.yml
CHANGED
@@ -138,6 +138,12 @@ hometop:
|
|
138
138
|
# Shadow color
|
139
139
|
color: "none"
|
140
140
|
|
141
|
+
## banner
|
142
|
+
## 推荐文章banner
|
143
|
+
# 使用方法:在文章的front matter中添加“recommend: true”
|
144
|
+
# tip:建议开了这个就不要开hometop,其功能类似
|
145
|
+
banner: false
|
146
|
+
|
141
147
|
# --------------------------------------
|
142
148
|
# Aside Settings
|
143
149
|
# 侧边栏配置
|
@@ -164,7 +170,7 @@ aside:
|
|
164
170
|
page:
|
165
171
|
noSticky: "about"
|
166
172
|
Sticky: "newestPost,allInfo"
|
167
|
-
position:
|
173
|
+
position: 1 # left(0): 左侧 / right(1): 右侧
|
168
174
|
# 侧边栏个人信息卡片
|
169
175
|
# Sidebar personal information
|
170
176
|
card:
|
@@ -103,16 +103,15 @@ div
|
|
103
103
|
!= item
|
104
104
|
|
105
105
|
div#js-pjax
|
106
|
-
case config.lang
|
107
|
-
when 'en'
|
108
|
-
script.
|
109
|
-
utils.changeTimeFormat()
|
110
106
|
if theme.mermaid
|
111
107
|
script.
|
112
108
|
mermaid.run();
|
113
109
|
if is_home() && theme.says.home_mini
|
114
110
|
script.
|
115
111
|
sco.initbbtalk();
|
112
|
+
if is_home() && theme.banner && site.posts.data.filter(item => item.recommend === true).slice(0,6) || false
|
113
|
+
script.
|
114
|
+
banner_swiper()
|
116
115
|
if page.type === 'says' && theme.says.enable
|
117
116
|
script.
|
118
117
|
window.addEventListener('resize', utils.throttle(function () {
|
@@ -122,6 +121,7 @@ div#js-pjax
|
|
122
121
|
}), 500);
|
123
122
|
sco.reflashEssayWaterFall();
|
124
123
|
GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
|
124
|
+
sco.changeTimeFormat(document.querySelectorAll('.bber-info-time time'))
|
125
125
|
if theme.busuanzi && (theme.aside.siteinfo.uv || theme.aside.siteinfo.pv)
|
126
126
|
script(async src=url_for(theme.cdn.busuanzi_js))
|
127
127
|
|
@@ -111,7 +111,7 @@ script.
|
|
111
111
|
)(window)
|
112
112
|
|
113
113
|
console.log(
|
114
|
-
"%c Program: Hexo %c Theme: Solitude %c Version: v1.7.
|
114
|
+
"%c Program: Hexo %c Theme: Solitude %c Version: v1.7.6",
|
115
115
|
"border-radius:5px 0 0 5px;padding: 5px 10px;color:white;background:#ff3842;",
|
116
116
|
"padding: 5px 10px;color:white;background:#3e9f50;",
|
117
117
|
"border-radius:0 5px 5px 0;padding: 5px 10px;background:#0084ff;color:white;"
|
@@ -0,0 +1,49 @@
|
|
1
|
+
- let recommends = site.posts.data.filter(item => item.recommend === true).slice(0,6) || false
|
2
|
+
|
3
|
+
if recommends
|
4
|
+
.recent-post-item#swiperBox
|
5
|
+
span.swiperBox-top-text= _p('home.recommend')
|
6
|
+
div.blog-slider.swiper-container-fade.swiper-container-horizontal#swiper_container
|
7
|
+
.blog-slider__wrp.swiper-wrapper
|
8
|
+
each item,index in recommends
|
9
|
+
.blog-slider__item.swiper-slide(style=`background-image: url(${item.cover})`)
|
10
|
+
.blog-slider__content
|
11
|
+
a.blog-slider__title(onclick=`event.stopPropagation();`, href=item.path)=item.title
|
12
|
+
span.blog-slider__code
|
13
|
+
| 发布时间:
|
14
|
+
time(datetime=item.date)
|
15
|
+
.blog-slider__text=item.description
|
16
|
+
.swiper-button-next
|
17
|
+
.swiper-button-prev
|
18
|
+
.blog-slider__pagination.swiper-pagination-clickable.swiper-pagination-bullets
|
19
|
+
|
20
|
+
script.
|
21
|
+
function banner_swiper() {
|
22
|
+
let e = new Swiper(".blog-slider", {
|
23
|
+
navigation: {
|
24
|
+
nextEl: ".swiper-button-next",
|
25
|
+
prevEl: ".swiper-button-prev"
|
26
|
+
},
|
27
|
+
passiveListeners: !0,
|
28
|
+
loop: !0,
|
29
|
+
autoplay: {
|
30
|
+
disableOnInteraction: !0,
|
31
|
+
delay: 5e3
|
32
|
+
},
|
33
|
+
mousewheel: !0,
|
34
|
+
pagination: {
|
35
|
+
el: ".blog-slider__pagination",
|
36
|
+
clickable: !0
|
37
|
+
}
|
38
|
+
})
|
39
|
+
, t = document.getElementById("swiper_container");
|
40
|
+
null !== t && (t.onmouseenter = () => {
|
41
|
+
e.autoplay.stop()
|
42
|
+
}
|
43
|
+
,
|
44
|
+
t.onmouseleave = () => {
|
45
|
+
e.autoplay.start()
|
46
|
+
}
|
47
|
+
)
|
48
|
+
}
|
49
|
+
|
@@ -57,7 +57,7 @@ script.
|
|
57
57
|
`).join('') : "!{_p('newest_comment.zero')}"
|
58
58
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
59
59
|
window.pjax && window.pjax.refresh()
|
60
|
-
|
60
|
+
sco && sco.changeTimeFormat(document.querySelectorAll('.aside-list-item time'))
|
61
61
|
}
|
62
62
|
|
63
63
|
const newestCommentInit = () => {
|
@@ -72,7 +72,7 @@ script.
|
|
72
72
|
`).join('') : "!{_p('newest_comment.zero')}"
|
73
73
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
74
74
|
window.pjax && window.pjax.refresh()
|
75
|
-
|
75
|
+
sco && sco.changeTimeFormat(document.querySelectorAll('.aside-list-item time'))
|
76
76
|
}
|
77
77
|
|
78
78
|
newestCommentInit()
|
@@ -62,7 +62,7 @@ script.
|
|
62
62
|
`).join('') : "!{_p('newest_comment.zero')}"
|
63
63
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
64
64
|
window.pjax && window.pjax.refresh()
|
65
|
-
|
65
|
+
sco && sco.changeTimeFormat(document.querySelectorAll('.aside-list-item time'))
|
66
66
|
}
|
67
67
|
|
68
68
|
newestCommentInit()
|
package/layout/index.pug
CHANGED
@@ -9,6 +9,8 @@ block content
|
|
9
9
|
include ./includes/widgets/home/hometop
|
10
10
|
main.layout#content-inner
|
11
11
|
.recent-posts#recent-posts
|
12
|
+
if theme.banner && is_home_first_page()
|
13
|
+
include ./includes/widgets/home/leonus.pug
|
12
14
|
#category-bar
|
13
15
|
include ./includes/widgets/home/categoryBar
|
14
16
|
for post, index in page.posts.sort("-sticky" || "-date").data
|
package/package.json
CHANGED
@@ -0,0 +1,115 @@
|
|
1
|
+
div#swiper_container
|
2
|
+
width 100%
|
3
|
+
height 12rem
|
4
|
+
position relative
|
5
|
+
transition all .3s
|
6
|
+
overflow hidden
|
7
|
+
|
8
|
+
#swiperBox
|
9
|
+
margin-top 0!important
|
10
|
+
|
11
|
+
.swiperBox-top-text
|
12
|
+
position absolute
|
13
|
+
z-index 2
|
14
|
+
color var(--efu-white)
|
15
|
+
background var(--efu-red)
|
16
|
+
letter-spacing 3px
|
17
|
+
top 0
|
18
|
+
left 15px
|
19
|
+
font-size 15px
|
20
|
+
width 35px
|
21
|
+
display flex
|
22
|
+
justify-content center
|
23
|
+
border-radius 0 0 12px 12px
|
24
|
+
|
25
|
+
.swiper-button-next::after, .swiper-button-prev::after
|
26
|
+
font-size 1rem !important
|
27
|
+
|
28
|
+
.swiper-button-prev, .swiper-button-next
|
29
|
+
transition all .3s
|
30
|
+
color var(--efu-main) !important
|
31
|
+
|
32
|
+
&:hover
|
33
|
+
transition all .3s
|
34
|
+
border-radius 5px
|
35
|
+
color var(--efu-card-bg) !important
|
36
|
+
background var(--efu-maskbg)
|
37
|
+
|
38
|
+
.swiper-button-next::after, .swiper-button-prev::after
|
39
|
+
font-size 1.5rem
|
40
|
+
color var(--efu-bg)
|
41
|
+
|
42
|
+
.blog-slider__pagination .swiper-pagination-bullet
|
43
|
+
margin 0 8px
|
44
|
+
width 11px
|
45
|
+
height 11px
|
46
|
+
display inline-block
|
47
|
+
border-radius 99px
|
48
|
+
background var(--efu-white)
|
49
|
+
opacity .8
|
50
|
+
transition all .3s
|
51
|
+
|
52
|
+
.blog-slider__pagination .swiper-pagination-bullet-active
|
53
|
+
opacity 1
|
54
|
+
background var(--efu-main)
|
55
|
+
width 30px
|
56
|
+
|
57
|
+
.blog-slider__pagination
|
58
|
+
position absolute
|
59
|
+
z-index 21
|
60
|
+
text-align center
|
61
|
+
|
62
|
+
#recent-posts > #swiperBox.recent-post-item
|
63
|
+
cursor default
|
64
|
+
|
65
|
+
.blog-slider__item
|
66
|
+
background-size cover
|
67
|
+
background-position center
|
68
|
+
overflow hidden
|
69
|
+
|
70
|
+
&::after
|
71
|
+
content ''
|
72
|
+
position absolute
|
73
|
+
width 100%
|
74
|
+
height 100%
|
75
|
+
background-color rgba(0, 0, 0, .5)
|
76
|
+
z-index -1
|
77
|
+
left 0
|
78
|
+
top 0
|
79
|
+
|
80
|
+
.blog-slider__content > *
|
81
|
+
text-align center
|
82
|
+
line-height 1.5
|
83
|
+
margin 2px 0
|
84
|
+
color var(--efu-white)
|
85
|
+
|
86
|
+
a.blog-slider__title
|
87
|
+
font-size 2rem
|
88
|
+
|
89
|
+
+maxWidth768()
|
90
|
+
font-size 1.3rem
|
91
|
+
|
92
|
+
.blog-slider__code
|
93
|
+
display block
|
94
|
+
font-weight 500
|
95
|
+
|
96
|
+
.blog-slider__text
|
97
|
+
font-size 18px
|
98
|
+
-webkit-line-clamp 2
|
99
|
+
overflow hidden
|
100
|
+
display -webkit-box
|
101
|
+
-webkit-box-orient vertical
|
102
|
+
+minWidth1300()
|
103
|
+
padding 0 5rem
|
104
|
+
+maxWidth900()
|
105
|
+
padding 0 3rem
|
106
|
+
+maxWidth768()
|
107
|
+
display none
|
108
|
+
|
109
|
+
.blog-slider__content
|
110
|
+
padding 0 50px 20px
|
111
|
+
display flex
|
112
|
+
justify-content center
|
113
|
+
align-items center
|
114
|
+
flex-direction column
|
115
|
+
height 100%
|
@@ -5,7 +5,6 @@ if hexo-config('says.home_mini')
|
|
5
5
|
display flex
|
6
6
|
white-space nowrap
|
7
7
|
overflow hidden
|
8
|
-
margin-bottom 1rem
|
9
8
|
border var(--style-border)
|
10
9
|
transition .3s
|
11
10
|
height 50px
|
@@ -18,12 +17,17 @@ if hexo-config('says.home_mini')
|
|
18
17
|
&.more-page
|
19
18
|
margin-bottom 0
|
20
19
|
|
21
|
-
|
20
|
+
if hexo-config('hometop.enable')
|
22
21
|
margin-bottom 1rem
|
22
|
+
|
23
|
+
+maxWidth1300()
|
24
|
+
if hexo-config('hometop.enable')
|
25
|
+
margin-bottom 1rem
|
23
26
|
animation slide-in .6s 0s backwards
|
24
27
|
|
25
28
|
+minWidth1300()
|
26
|
-
|
29
|
+
if hexo-config('hometop.enable')
|
30
|
+
margin-bottom .5rem
|
27
31
|
animation slide-in .6s 0s backwards
|
28
32
|
&:hover
|
29
33
|
border var(--style-border-hover)
|
@@ -3,4 +3,4 @@
|
|
3
3
|
* email: o@efu.me
|
4
4
|
* website: https://efu.me
|
5
5
|
*/
|
6
|
-
class efuAI{constructor(){this.root="https://summary.tianli0.top",this.aiTalkMode=!1,this.aiPostExplanation="",this.config=GLOBAL_CONFIG.post_ai,this.scoGPTIsRunning=!1}init(){this.generate(),this.AIEngine()}getTitleAndContent(){const e=document.getElementById("article-container"),t=document.title,n=e.getElementsByTagName("p"),i=e.querySelectorAll("h1, h2, h3, h4, h5");return(t+" "+Array.from(i).concat(Array.from(n)).map((e=>e.innerText.replace(/https?:\/\/[^\s]+/g,""))).join(" ")).slice(0,1e3)}async generate(){this.aiShowAnimation(this.fetch(document.title,this.getTitleAndContent(),this.config.key))}async fetch(e,t,n){const i=`${this.root}/?content=${encodeURIComponent(t)}&title=${e}&key=${encodeURIComponent(n)}&url=${encodeURIComponent(window.location.href)}`,s=await fetch(i),o=await s.json();return s.ok?(this.aiPostExplanation=o.summary,o.summary):(console.error("Request failed:",o.err_msg),o.err_msg)}aiShowAnimation(e,t=!1){const n=document.querySelector(".ai-explanation"),i=document.querySelector(".ai-tag");if(!n||this.scoGPTIsRunning)return;this.scoGPTIsRunning=!0,this.cleanSuggestions(),i.classList.add("loadingAI"),n.style.display="block",n.innerHTML='生成中...<span class="blinking-cursor"></span>';let s,o,a=!0,c=0,r=!0;const l=new IntersectionObserver((e=>{a=e[0].isIntersecting,a&&requestAnimationFrame(o)}),{threshold:0});e.then((e=>{s=performance.now(),o=()=>{if(c<e.length&&a){const r=performance.now(),g=r-s,h=e.slice(c,c+1),u=/[,。!、?,.!?]/.test(h),m=/[a-zA-Z0-9]/.test(h);g>=(u?100*Math.random()+100:m?10:25)&&(n.innerText=e.slice(0,c+1),s=r,c++,c<e.length?n.innerHTML=e.slice(0,c)+'<span class="blinking-cursor"></span>':(n.innerHTML=e,n.style.display="block",this.scoGPTIsRunning=!1,i.classList.remove("loadingAI"),l.disconnect(),t&&this.createSuggestions())),a&&requestAnimationFrame(o)}},a&&r&&setTimeout((()=>{requestAnimationFrame(o),r=!1}),3e3),l.observe(n)})).catch((e=>{console.error("检索信息失败:",e),n.innerHTML="检索信息失败",n.style.display="block",this.scoGPTIsRunning=!1,i.classList.remove("loadingAI"),l.disconnect()}))}AIEngine(){const e=document.querySelector(".ai-tag");e&&e.addEventListener("click",(()=>{this.scoGPTIsRunning||(this.aiTalkMode=!0,this.aiShowAnimation(Promise.resolve(this.config.talk),!0))}))}cleanSuggestions(){const e=document.querySelector(".ai-suggestions");e?e.innerHTML="":console.error("没有这个元素:'ai-suggestions'")}createSuggestions(){this.aiTalkMode&&(this.cleanSuggestions(),this.createSuggestionItemWithAction("这篇文章讲了什么?",(()=>{""===this.aiPostExplanation?this.generate():this.aiShowAnimation(Promise.resolve(this.aiPostExplanation),!0)})),this.config.randomPost&&this.createSuggestionItemWithAction("带我去看看其他文章",(()=>toRandomPost())),this.aiTalkMode=!0)}createSuggestionItemWithAction(e,t){const n=document.querySelector(".ai-suggestions");if(!n)return void console.error("无法找到具有class为ai-suggestions的元素");const i=document.createElement("div");i.classList.add("ai-suggestions-item"),i.textContent=e,i.addEventListener("click",t),n.appendChild(i)}}const efu_ai=new efuAI;
|
6
|
+
class efuAI{constructor(){this.root="https://summary.tianli0.top",this.aiTalkMode=!1,this.aiPostExplanation="",this.config=GLOBAL_CONFIG.post_ai,this.scoGPTIsRunning=!1}init(){this.scoGPTIsRunning=!1,this.generate(),this.AIEngine()}getTitleAndContent(){const e=document.getElementById("article-container"),t=document.title,n=e.getElementsByTagName("p"),i=e.querySelectorAll("h1, h2, h3, h4, h5");return(t+" "+Array.from(i).concat(Array.from(n)).map((e=>e.innerText.replace(/https?:\/\/[^\s]+/g,""))).join(" ")).slice(0,1e3)}async generate(){this.aiShowAnimation(this.fetch(document.title,this.getTitleAndContent(),this.config.key))}async fetch(e,t,n){const i=`${this.root}/?content=${encodeURIComponent(t)}&title=${e}&key=${encodeURIComponent(n)}&url=${encodeURIComponent(window.location.href)}`,s=await fetch(i),o=await s.json();return s.ok?(this.aiPostExplanation=o.summary,o.summary):(console.error("Request failed:",o.err_msg),o.err_msg)}aiShowAnimation(e,t=!1){const n=document.querySelector(".ai-explanation"),i=document.querySelector(".ai-tag");if(!n||this.scoGPTIsRunning)return;this.scoGPTIsRunning=!0,this.cleanSuggestions(),i.classList.add("loadingAI"),n.style.display="block",n.innerHTML='生成中...<span class="blinking-cursor"></span>';let s,o,a=!0,c=0,r=!0;const l=new IntersectionObserver((e=>{a=e[0].isIntersecting,a&&requestAnimationFrame(o)}),{threshold:0});e.then((e=>{s=performance.now(),o=()=>{if(c<e.length&&a){const r=performance.now(),g=r-s,h=e.slice(c,c+1),u=/[,。!、?,.!?]/.test(h),m=/[a-zA-Z0-9]/.test(h);g>=(u?100*Math.random()+100:m?10:25)&&(n.innerText=e.slice(0,c+1),s=r,c++,c<e.length?n.innerHTML=e.slice(0,c)+'<span class="blinking-cursor"></span>':(n.innerHTML=e,n.style.display="block",this.scoGPTIsRunning=!1,i.classList.remove("loadingAI"),l.disconnect(),t&&this.createSuggestions())),a&&requestAnimationFrame(o)}},a&&r&&setTimeout((()=>{requestAnimationFrame(o),r=!1}),3e3),l.observe(n)})).catch((e=>{console.error("检索信息失败:",e),n.innerHTML="检索信息失败",n.style.display="block",this.scoGPTIsRunning=!1,i.classList.remove("loadingAI"),l.disconnect()}))}AIEngine(){const e=document.querySelector(".ai-tag");e&&e.addEventListener("click",(()=>{this.scoGPTIsRunning||(this.aiTalkMode=!0,this.aiShowAnimation(Promise.resolve(this.config.talk),!0))}))}cleanSuggestions(){const e=document.querySelector(".ai-suggestions");e?e.innerHTML="":console.error("没有这个元素:'ai-suggestions'")}createSuggestions(){this.aiTalkMode&&(this.cleanSuggestions(),this.createSuggestionItemWithAction("这篇文章讲了什么?",(()=>{""===this.aiPostExplanation?this.generate():this.aiShowAnimation(Promise.resolve(this.aiPostExplanation),!0)})),this.config.randomPost&&this.createSuggestionItemWithAction("带我去看看其他文章",(()=>toRandomPost())),this.aiTalkMode=!0)}createSuggestionItemWithAction(e,t){const n=document.querySelector(".ai-suggestions");if(!n)return void console.error("无法找到具有class为ai-suggestions的元素");const i=document.createElement("div");i.classList.add("ai-suggestions-item"),i.textContent=e,i.addEventListener("click",t),n.appendChild(i)}}const efu_ai=new efuAI;
|
package/source/js/utils.js
CHANGED
@@ -237,12 +237,6 @@ const utils = {
|
|
237
237
|
}
|
238
238
|
}
|
239
239
|
},
|
240
|
-
changeTimeFormat() {
|
241
|
-
window.Lately && Lately.init({
|
242
|
-
target: 'time',
|
243
|
-
lang: GLOBAL_CONFIG.lang.lately,
|
244
|
-
})
|
245
|
-
},
|
246
240
|
diffDate: (d, more = false) => {
|
247
241
|
const dateNow = new Date()
|
248
242
|
const datePost = new Date(d)
|
@@ -1,6 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Lately.min.js 2.5.2
|
3
|
-
* MIT License - http://www.opensource.org/licenses/mit-license.php
|
4
|
-
* https://tokinx.github.io/lately/
|
5
|
-
*/
|
6
|
-
!function(){window.Lately=new function(){var t=this;this.lang={second:"秒",minute:"分钟",hour:"小时",day:"天",month:"个月",year:"年",ago:"前",error:"NaN"};var e=function(e){e=new Date(n(e));var r=new function(){this.second=(Date.now()-e.getTime())/1e3,this.minute=this.second/60,this.hour=this.minute/60,this.day=this.hour/24,this.month=this.day/30,this.year=this.month/12},i=Object.keys(r).reverse().find(function(t){return r[t]>=1});return(i?function(t,e){return Math.floor(t)+e}(r[i],t.lang[i]):t.lang.error)+t.lang.ago},n=function(t){return t=new Date(t&&("number"==typeof t?t:t.replace(/-/g,"/").replace("T"," "))),!isNaN(t.getTime())&&t.getTime()};return{init:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=r.target,a=void 0===i?"time":i,o=r.lang;o&&(t.lang=o);var u=!0,h=!1,l=void 0;try{for(var s,c=document.querySelectorAll(a)[Symbol.iterator]();!(u=(s=c.next()).done);u=!0){var f=s.value,g=n(f.dateTime)||n(f.title)||n(f.innerHTML)||0;if(!g)return;f.title=new Date(g).toLocaleString(),f.innerHTML=e(g)}}catch(t){h=!0,l=t}finally{try{!u&&c.return&&c.return()}finally{if(h)throw l}}},format:e}}}();
|