hexo-theme-solitude 1.7.8 → 1.7.9
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/README.md +13 -9
- package/README_zh-cn.md +13 -9
- package/README_zh-tw.md +13 -9
- package/_config.yml +34 -6
- package/languages/en.yml +26 -1
- package/languages/zh-CN.yml +26 -1
- package/languages/zh-TW.yml +26 -1
- package/layout/includes/head/config.pug +32 -1
- package/layout/includes/inject/body.pug +9 -15
- package/layout/includes/inject/head.pug +2 -2
- package/layout/includes/layout.pug +4 -0
- package/layout/includes/rightmenu.pug +80 -0
- package/package.json +1 -1
- package/scripts/event/cdn.js +6 -1
- package/scripts/event/merge_config.js +173 -62
- package/scripts/tags/gallery.js +27 -44
- package/scripts/tags/link.js +40 -13
- package/source/css/_global/function.styl +6 -1
- package/source/css/_highlight/prismjs/line-number.styl +2 -1
- package/source/css/_layout/article-container.styl +3 -1
- package/source/css/_layout/recent-post.styl +5 -0
- package/source/css/_layout/rightmenu.styl +1 -1
- package/source/css/_page/_about/reward.styl +0 -2
- package/source/css/_page/_home/home.styl +2 -2
- package/source/css/_page/says.styl +1 -1
- package/source/css/_tags/button.styl +1 -1
- package/source/css/_tags/gallery.styl +97 -57
- package/source/js/main.js +23 -24
- package/source/js/right_menu.js +230 -0
- package/source/js/search/algolia.js +10 -0
- package/source/js/search/local.js +10 -0
- package/source/js/tw_cn.js +102 -52
- package/source/css/_post/content.styl +0 -0
- /package/source/css/_page/_home/{banner.styl → carousel.styl} +0 -0
@@ -4,11 +4,13 @@ hexo.extend.filter.register('before_generate', () => {
|
|
4
4
|
name: {
|
5
5
|
class: 'text', custom: 'Solitude'
|
6
6
|
}, siteIcon: '/img/pwa/favicon.ico', icon: 'icon'
|
7
|
-
},
|
7
|
+
},
|
8
|
+
nav: {
|
8
9
|
group: null, menu: null, right: {
|
9
10
|
random: false, console: false, custom: [],
|
10
11
|
}
|
11
|
-
},
|
12
|
+
},
|
13
|
+
hometop: {
|
12
14
|
enable: false, banner: {
|
13
15
|
title: 'Solitude', url: 'A simple theme for Hexo', icon: null,
|
14
16
|
}, group: null, recommendList: {
|
@@ -18,14 +20,18 @@ hexo.extend.filter.register('before_generate', () => {
|
|
18
20
|
img: '/img/default.png',
|
19
21
|
color: 'none',
|
20
22
|
}
|
21
|
-
},
|
23
|
+
},
|
24
|
+
aside: {
|
22
25
|
home: {
|
23
26
|
noSticky: 'about', Sticky: 'allInfo'
|
24
|
-
},
|
27
|
+
},
|
28
|
+
post: {
|
25
29
|
noSticky: 'about', Sticky: 'allInfo'
|
26
|
-
},
|
30
|
+
},
|
31
|
+
page: {
|
27
32
|
noSticky: 'about', Sticky: 'allInfo'
|
28
|
-
},
|
33
|
+
},
|
34
|
+
card: {
|
29
35
|
author: {
|
30
36
|
img: '/img/logo.png', sticker: '/img/happy-sticker.png',
|
31
37
|
},
|
@@ -41,14 +47,26 @@ hexo.extend.filter.register('before_generate', () => {
|
|
41
47
|
},
|
42
48
|
sayhello2: ['Welcome to Solitude', 'A simple theme for Hexo', 'Enjoy your time', 'Have a nice day', 'Good luck'],
|
43
49
|
information: null,
|
44
|
-
},
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
+
},
|
51
|
+
flip: {
|
52
|
+
favicon: '',
|
53
|
+
face: '',
|
54
|
+
backface: '',
|
55
|
+
backcolor: 'var(--efu-blue)'
|
56
|
+
},
|
57
|
+
toc: {
|
58
|
+
post: true,
|
59
|
+
page: false,
|
60
|
+
vague: true,
|
61
|
+
},
|
62
|
+
tags: {
|
63
|
+
enable: true,
|
64
|
+
limit: 20,
|
65
|
+
highlight: false,
|
66
|
+
list: [],
|
50
67
|
}, archive: {
|
51
|
-
enable: true,
|
68
|
+
enable: true,
|
69
|
+
type: 'month'
|
52
70
|
}, siteinfo: {
|
53
71
|
postcount: true,
|
54
72
|
wordcount: false,
|
@@ -58,20 +76,32 @@ hexo.extend.filter.register('before_generate', () => {
|
|
58
76
|
runtimeenable: true,
|
59
77
|
runtime: "2023-04-20 00:00:00",
|
60
78
|
},
|
61
|
-
},
|
62
|
-
|
63
|
-
|
64
|
-
|
79
|
+
},
|
80
|
+
index_post_list: {
|
81
|
+
direction: 'column',
|
82
|
+
content: false,
|
83
|
+
length: 500,
|
84
|
+
cover: 'both'
|
85
|
+
},
|
86
|
+
page: {
|
87
|
+
error: true,
|
88
|
+
tags: true,
|
89
|
+
categories: true,
|
90
|
+
default: {
|
65
91
|
cover: ['/img/default.png'],
|
66
92
|
}
|
67
|
-
},
|
93
|
+
},
|
94
|
+
post: {
|
68
95
|
default: {
|
69
|
-
cover: ['/img/default.png'],
|
96
|
+
cover: ['/img/default.png'],
|
97
|
+
locate: 'China, Changsha',
|
98
|
+
copyright: {
|
70
99
|
enable: true,
|
71
100
|
license: 'CC BY-NC-SA 4.0',
|
72
101
|
licenurl: 'https://creativecommons.org/licenses/by-nc-sa/4.0/',
|
73
102
|
}
|
74
|
-
},
|
103
|
+
},
|
104
|
+
meta: {
|
75
105
|
date: false,
|
76
106
|
updated: false,
|
77
107
|
locate: false,
|
@@ -80,16 +110,23 @@ hexo.extend.filter.register('before_generate', () => {
|
|
80
110
|
pv: false,
|
81
111
|
uv: false,
|
82
112
|
comment: false,
|
83
|
-
},
|
113
|
+
},
|
114
|
+
award: {
|
84
115
|
enable: false,
|
85
116
|
appreciators: '/',
|
86
117
|
title: '感谢您的赞赏。',
|
87
118
|
desc: '因为有你们的支持,我才体会到写文章的价值。',
|
88
119
|
list: [],
|
89
|
-
},
|
90
|
-
|
120
|
+
},
|
121
|
+
rss: null,
|
122
|
+
covercolor: {
|
123
|
+
enable: false,
|
124
|
+
mode: 'local',
|
125
|
+
api: 'https://api.qjqq.cn/api/Imgcolor?img=',
|
126
|
+
time: 43200000,
|
91
127
|
}
|
92
|
-
},
|
128
|
+
},
|
129
|
+
theme_color: {
|
93
130
|
dark: "#ffc848",
|
94
131
|
dark_op: "#f2b94b23",
|
95
132
|
dark_op_deep: "#f2b94bdd",
|
@@ -98,25 +135,55 @@ hexo.extend.filter.register('before_generate', () => {
|
|
98
135
|
light_op: "#4259ef23",
|
99
136
|
light_op_deep: "#4259efdd",
|
100
137
|
light_none: "#4259ef01"
|
101
|
-
},
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
},
|
138
|
+
},
|
139
|
+
display_mode: {
|
140
|
+
type: 'auto',
|
141
|
+
universe: false
|
142
|
+
},
|
143
|
+
related_post: {
|
144
|
+
enable: false,
|
145
|
+
limit: 2,
|
146
|
+
date_type: 'created'
|
147
|
+
},
|
148
|
+
footer: {
|
106
149
|
information: {
|
107
|
-
left: null,
|
108
|
-
|
109
|
-
|
150
|
+
left: null,
|
151
|
+
right: null,
|
152
|
+
},
|
153
|
+
group: null,
|
154
|
+
randomlink: false,
|
155
|
+
privacy: null,
|
156
|
+
license: null,
|
157
|
+
links: [{
|
158
|
+
name: 'Solitude',
|
159
|
+
url: 'https://github.com/valor-x/hexo-theme-solitude',
|
110
160
|
}]
|
111
161
|
}, errorpage: {
|
112
|
-
img: 'https://7.isyangs.cn/34/65f2e65eae32a-34.png',
|
162
|
+
img: 'https://7.isyangs.cn/34/65f2e65eae32a-34.png',
|
163
|
+
text: '404 Not Found',
|
164
|
+
recommendList: true
|
113
165
|
}, says: {
|
114
|
-
enable: false,
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
166
|
+
enable: false,
|
167
|
+
home_mini: false,
|
168
|
+
style: 1,
|
169
|
+
strip: 30
|
170
|
+
},
|
171
|
+
meting_api: "https://meting.qjqq.cn/?server=:server&type=:type&id=:id&auth=:auth&r=:r",
|
172
|
+
music: {
|
173
|
+
enable: false,
|
174
|
+
id: '8407304077',
|
175
|
+
server: 'netease',
|
176
|
+
type: 'playlist',
|
177
|
+
volume: 0.8,
|
178
|
+
mutex: true,
|
179
|
+
},
|
180
|
+
capsule: {
|
181
|
+
enable: false,
|
182
|
+
id: '8407304077',
|
183
|
+
server: 'netease',
|
184
|
+
type: 'playlist',
|
185
|
+
},
|
186
|
+
moments: {
|
120
187
|
enable: false,
|
121
188
|
api: '',
|
122
189
|
error_img: '/img/logo.png',
|
@@ -128,24 +195,49 @@ hexo.extend.filter.register('before_generate', () => {
|
|
128
195
|
appjs: 'https://cdn.cbd.int/st-source@1.0.3/js/fcircle.min.js',
|
129
196
|
bundlejs: 'https://cdn.cbd.int/st-source/js/moment/bundle.min.js',
|
130
197
|
randompostjs: 'https://cdn.cbd.int/st-source/js/moment/random_post.min.js'
|
131
|
-
},
|
132
|
-
|
198
|
+
},
|
199
|
+
keyboard: {
|
200
|
+
enable: false,
|
201
|
+
list: []
|
133
202
|
}
|
134
|
-
,lazyload: {
|
135
|
-
enable: false,
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
enable:
|
203
|
+
, lazyload: {
|
204
|
+
enable: false,
|
205
|
+
field: 'site',
|
206
|
+
placeholder: '/img/loading.gif',
|
207
|
+
errorimg: '/img/error_load.png'
|
208
|
+
},
|
209
|
+
loading: {
|
210
|
+
fullpage: false,
|
211
|
+
pace: true,
|
212
|
+
},
|
213
|
+
highlight: {
|
214
|
+
enable: true,
|
215
|
+
limit: 200,
|
216
|
+
copy: true,
|
217
|
+
expand: true,
|
218
|
+
theme: 'default',
|
219
|
+
color: 'default',
|
220
|
+
},
|
221
|
+
lightbox: false,
|
222
|
+
fancybox: false,
|
223
|
+
mediumZoom: false,
|
224
|
+
mermaid: false,
|
225
|
+
OpenGraph: {
|
226
|
+
enable: false,
|
227
|
+
options: null
|
228
|
+
},
|
229
|
+
wordcount: false,
|
230
|
+
busuanzi: false,
|
231
|
+
search: {
|
232
|
+
enable: false,
|
233
|
+
type: 'local',
|
234
|
+
tags: [],
|
235
|
+
algolia: null,
|
236
|
+
local: {
|
146
237
|
preload: false, CDN: null,
|
147
238
|
}
|
148
|
-
},
|
239
|
+
},
|
240
|
+
rightside: {
|
149
241
|
enable: false
|
150
242
|
},
|
151
243
|
copy: {
|
@@ -154,17 +246,21 @@ hexo.extend.filter.register('before_generate', () => {
|
|
154
246
|
enable: false,
|
155
247
|
limit: 50
|
156
248
|
}
|
157
|
-
}
|
158
|
-
|
249
|
+
},
|
250
|
+
post_ai: {
|
159
251
|
enable: false,
|
160
252
|
modelName: 'GPT 3',
|
161
253
|
key: 'your key',
|
162
254
|
talk: 'I am a AI.',
|
163
255
|
randomPost: false,
|
164
256
|
tips: 'AI is not perfect, please use it with caution.'
|
165
|
-
},
|
166
|
-
|
167
|
-
|
257
|
+
},
|
258
|
+
katex: {
|
259
|
+
enable: false,
|
260
|
+
per_page: false,
|
261
|
+
copytex: false,
|
262
|
+
},
|
263
|
+
comment: {
|
168
264
|
enable: false,
|
169
265
|
type: '',
|
170
266
|
commentBarrage: false,
|
@@ -172,10 +268,14 @@ hexo.extend.filter.register('before_generate', () => {
|
|
172
268
|
randomInfoStart: [`baby's`, `little`, `my`,],
|
173
269
|
randomInfoEnd: [`home`, `world`, `heart`,],
|
174
270
|
twikoo: {
|
175
|
-
envId: 'your envId',
|
271
|
+
envId: 'your envId',
|
272
|
+
lang: 'zh-CN',
|
273
|
+
accessToken: null,
|
176
274
|
},
|
177
275
|
waline: {
|
178
|
-
envId: 'your envId',
|
276
|
+
envId: 'your envId',
|
277
|
+
pageview: true,
|
278
|
+
option: null,
|
179
279
|
},
|
180
280
|
verify_site: [],
|
181
281
|
css_prefix: false,
|
@@ -186,7 +286,8 @@ hexo.extend.filter.register('before_generate', () => {
|
|
186
286
|
'code-font-family': 'monospace, monospace',
|
187
287
|
},
|
188
288
|
extends: {
|
189
|
-
head: [],
|
289
|
+
head: [],
|
290
|
+
body: [],
|
190
291
|
},
|
191
292
|
pwa: {
|
192
293
|
enable: false,
|
@@ -206,6 +307,16 @@ hexo.extend.filter.register('before_generate', () => {
|
|
206
307
|
client: '',
|
207
308
|
slot: '',
|
208
309
|
},
|
310
|
+
right_menu: {
|
311
|
+
enable: false,
|
312
|
+
commentBarrage: false,
|
313
|
+
translate: {
|
314
|
+
enable: false,
|
315
|
+
defaultEncoding: 2,
|
316
|
+
translateDelay: 0,
|
317
|
+
},
|
318
|
+
custom_list: []
|
319
|
+
},
|
209
320
|
CDN: {
|
210
321
|
internal: 'local',
|
211
322
|
third_party: 'cdnjs',
|
package/scripts/tags/gallery.js
CHANGED
@@ -1,54 +1,37 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
-
|
4
|
-
const title = args[0];
|
5
|
-
const description = args[1];
|
6
|
-
const link = args[2];
|
7
|
-
const image = args[3];
|
3
|
+
const urlFor = require('hexo-util').url_for.bind(hexo)
|
8
4
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
const galleryBox = args => {
|
6
|
+
const [name, descr, url, img] = args
|
7
|
+
const imgUrl = urlFor(img)
|
8
|
+
const urlLink = urlFor(url)
|
9
|
+
|
10
|
+
return `<figure class="gallery-group">
|
11
|
+
<img class="gallery-group-img no-lightbox" src='${imgUrl}' alt="Group Image Gallery">
|
12
|
+
<figcaption>
|
13
|
+
<div class="gallery-group-name">${name}</div>
|
14
|
+
<p>${descr}</p>
|
15
|
+
<a href='${urlLink}'></a>
|
16
|
+
</figcaption>
|
17
|
+
</figure>
|
18
|
+
`
|
14
19
|
}
|
15
20
|
|
16
|
-
const urlFor = require('hexo-util').url_for.bind(hexo)
|
17
|
-
|
18
21
|
const gallery = (args, content) => {
|
19
|
-
|
20
|
-
|
21
|
-
let
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
[type, dataStr, button] = args // url,[link],[lazyload]
|
26
|
-
} else {
|
27
|
-
[button] = args // [lazyload]
|
28
|
-
const regex = /!\[(.*?)\]\(([^\s]*)\s*(?:["'](.*?)["']?)?\s*\)/g
|
29
|
-
let m
|
30
|
-
const arr = []
|
31
|
-
while ((m = regex.exec(content)) !== null) {
|
32
|
-
if (m.index === regex.lastIndex) {
|
33
|
-
regex.lastIndex++
|
34
|
-
}
|
35
|
-
arr.push({
|
36
|
-
url: m[2],
|
37
|
-
alt: m[1],
|
38
|
-
title: m[3]
|
39
|
-
})
|
22
|
+
let html = ""
|
23
|
+
const regex = /!\[(.*?)\]\(([^\s]*)\s*(?:["'](.*?)["']?)?\s*\)/g
|
24
|
+
let m
|
25
|
+
while ((m = regex.exec(content)) !== null) {
|
26
|
+
if (m.index === regex.lastIndex) {
|
27
|
+
regex.lastIndex++
|
40
28
|
}
|
41
|
-
|
42
|
-
dataStr = JSON.stringify(arr)
|
29
|
+
html += `<div class="gallery-item"><img class="nolazyload" src=${m[2]} alt="${m[1]}" /></div>`
|
43
30
|
}
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<div class="gallery-items">
|
48
|
-
</div>
|
49
|
-
</div>`
|
31
|
+
return `<div class="gallery-container" id="waterfall">
|
32
|
+
${html}
|
33
|
+
</div>`
|
50
34
|
}
|
51
35
|
|
52
|
-
hexo.extend.tag.register('gallery', gallery, {ends: true})
|
53
|
-
|
54
|
-
hexo.extend.tag.register('galleryGroup',galleryGroup, {ends: false});
|
36
|
+
hexo.extend.tag.register('gallery', gallery, {ends: true})
|
37
|
+
hexo.extend.tag.register('galleryGroup', galleryBox)
|
package/scripts/tags/link.js
CHANGED
@@ -1,22 +1,49 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
const urlFor = require("hexo-util").url_for.bind(hexo);
|
3
2
|
function link(args) {
|
4
|
-
|
5
|
-
|
6
|
-
let
|
7
|
-
|
8
|
-
|
3
|
+
const themeConfig = hexo.theme.config;
|
4
|
+
args = args.join(" ").split(",");
|
5
|
+
let title = args[0];
|
6
|
+
let sitename = args[1];
|
7
|
+
let link = args[2];
|
8
|
+
let imgUrl = args[3] || "";
|
9
|
+
let favicon = themeConfig.site.siteIcon;
|
10
|
+
|
11
|
+
link = link.trim();
|
12
|
+
imgUrl = imgUrl.trim();
|
13
|
+
favicon = favicon.trim();
|
14
|
+
|
15
|
+
try {
|
16
|
+
new URL(link);
|
17
|
+
InsideStation = false;
|
18
|
+
} catch (err) {
|
19
|
+
InsideStation = true;
|
20
|
+
}
|
21
|
+
|
22
|
+
if ((imgUrl == "") && (InsideStation == false)) {
|
23
|
+
let domain = new URL(link).hostname
|
24
|
+
if (domain) {
|
25
|
+
imgUrl_online = "https://api.iowen.cn/favicon/" + domain + ".png";
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
return `<a class="tag-link" target="_blank" href="${urlFor(link)}">
|
30
|
+
<div class="tag-link-tips">${InsideStation ? "站内链接" : "引用站外链接"
|
31
|
+
}</div>
|
9
32
|
<div class="tag-link-bottom">
|
10
|
-
<div class="tag-link-left" style="
|
11
|
-
|
33
|
+
<div class="tag-link-left" style="${InsideStation
|
34
|
+
? `background-image: url(${imgUrl ? imgUrl : favicon})`
|
35
|
+
: `background-image: url(${imgUrl ? imgUrl : imgUrl_online})`
|
36
|
+
}">
|
37
|
+
<i class="solitude st-link-m-line" style="${`(imgUrl) || (imgUrl_online)` ? "display: none" : ""
|
38
|
+
}"></i>
|
12
39
|
</div>
|
13
40
|
<div class="tag-link-right">
|
14
|
-
<div class="tag-link-title">${
|
15
|
-
<div class="tag-link-sitename">${
|
41
|
+
<div class="tag-link-title">${title}</div>
|
42
|
+
<div class="tag-link-sitename">${sitename}</div>
|
16
43
|
</div>
|
17
44
|
<i class="solitude st-arrow-right-bold"></i>
|
18
45
|
</div>
|
19
|
-
</a
|
46
|
+
</a>`;
|
20
47
|
}
|
21
48
|
|
22
|
-
hexo.extend.tag.register(
|
49
|
+
hexo.extend.tag.register("link", link, { ends: false });
|
@@ -6,7 +6,7 @@
|
|
6
6
|
> code
|
7
7
|
display block
|
8
8
|
position relative
|
9
|
-
padding 8px 0 8px
|
9
|
+
padding 8px 0 8px 58px
|
10
10
|
|
11
11
|
.line-numbers-rows
|
12
12
|
position absolute
|
@@ -14,6 +14,7 @@
|
|
14
14
|
left 0
|
15
15
|
color var(--efu-secondtext)
|
16
16
|
border-right var(--style-border-always)
|
17
|
+
width 45px
|
17
18
|
padding 8px 0
|
18
19
|
|
19
20
|
& > span
|
@@ -30,7 +30,6 @@
|
|
30
30
|
left auto
|
31
31
|
bottom auto
|
32
32
|
width fit-content
|
33
|
-
box-shadow var(--efu-shadow-border)
|
34
33
|
|
35
34
|
.reward-all::before
|
36
35
|
bottom auto
|
@@ -50,7 +49,6 @@
|
|
50
49
|
width fit-content
|
51
50
|
height fit-content
|
52
51
|
line-height 2
|
53
|
-
user-select none
|
54
52
|
|
55
53
|
+maxWidth768()
|
56
54
|
display none
|
@@ -11,7 +11,7 @@ if hexo-config('hometop.enable') || hexo-config('says.enable')
|
|
11
11
|
if hexo-config('hometop.enable')
|
12
12
|
@import "home-top.styl"
|
13
13
|
|
14
|
-
if hexo-config('
|
15
|
-
@import "
|
14
|
+
if hexo-config('carousel')
|
15
|
+
@import "carousel.styl"
|
16
16
|
|
17
17
|
@import "category-bar.styl"
|