hexo-theme-particlex 2.3.0 → 2.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +12 -6
- package/_config.yml +5 -5
- package/layout/archives.ejs +5 -7
- package/layout/card.ejs +2 -6
- package/layout/categories.ejs +2 -4
- package/layout/current.ejs +7 -19
- package/layout/footer.ejs +6 -7
- package/layout/layout.ejs +4 -4
- package/layout/loading.ejs +1 -3
- package/layout/menu.ejs +5 -5
- package/layout/post.ejs +3 -5
- package/layout/posts.ejs +3 -3
- package/layout/tags.ejs +2 -4
- package/package.json +1 -1
- package/source/css/particlex.css +3 -5
package/README.md
CHANGED
@@ -23,9 +23,15 @@ cd themes
|
|
23
23
|
git clone https://github.com/argvchs/hexo-theme-particlex.git particlex --depth=1
|
24
24
|
```
|
25
25
|
|
26
|
+
然后在根目录 `_config.yml` 设置主题为 ParticleX 即可
|
27
|
+
|
28
|
+
```yaml
|
29
|
+
theme: particlex
|
30
|
+
```
|
31
|
+
|
26
32
|
- 关闭自带 Highlight
|
27
33
|
|
28
|
-
|
34
|
+
Hexo 有自带的 Highlight,但是和 ParticleX 的 Highlight 不兼容
|
29
35
|
|
30
36
|
```yaml
|
31
37
|
highlight:
|
@@ -80,23 +86,23 @@ highlightStyle: github # Highlight style
|
|
80
86
|
|
81
87
|
```yaml
|
82
88
|
menu:
|
83
|
-
|
89
|
+
Home:
|
84
90
|
name: house
|
85
91
|
theme: solid
|
86
92
|
src: /
|
87
|
-
|
93
|
+
About:
|
88
94
|
name: id-card
|
89
95
|
theme: solid
|
90
96
|
src: /about
|
91
|
-
|
97
|
+
Archives:
|
92
98
|
name: box-archive
|
93
99
|
theme: solid
|
94
100
|
src: /archives
|
95
|
-
|
101
|
+
Categories:
|
96
102
|
name: bookmark
|
97
103
|
theme: solid
|
98
104
|
src: /categories
|
99
|
-
|
105
|
+
Tags:
|
100
106
|
name: tags
|
101
107
|
theme: solid
|
102
108
|
src: /tags
|
package/_config.yml
CHANGED
@@ -19,23 +19,23 @@ highlightStyle: github
|
|
19
19
|
|
20
20
|
# Main menu navigation
|
21
21
|
menu:
|
22
|
-
|
22
|
+
Home:
|
23
23
|
name: house
|
24
24
|
theme: solid
|
25
25
|
src: /
|
26
|
-
|
26
|
+
About:
|
27
27
|
name: id-card
|
28
28
|
theme: solid
|
29
29
|
src: /about
|
30
|
-
|
30
|
+
Archives:
|
31
31
|
name: box-archive
|
32
32
|
theme: solid
|
33
33
|
src: /archives
|
34
|
-
|
34
|
+
Categories:
|
35
35
|
name: bookmark
|
36
36
|
theme: solid
|
37
37
|
src: /categories
|
38
|
-
|
38
|
+
Tags:
|
39
39
|
name: tags
|
40
40
|
theme: solid
|
41
41
|
src: /tags
|
package/layout/archives.ejs
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
%>
|
5
5
|
<div id="archives">
|
6
6
|
<% if (theme.search.enable) { %>
|
7
|
-
<div id="search-mask" style="z-index:
|
8
|
-
<input id="search-bar" class="input" placeholder="搜索" style="z-index:
|
7
|
+
<div id="search-mask" style="z-index: <%- posts.length + 1 %>"></div>
|
8
|
+
<input id="search-bar" class="input" placeholder="搜索" style="z-index: <%- posts.length + 2 %>">
|
9
9
|
<% } %>
|
10
10
|
<% posts.forEach((post, id) => { %>
|
11
|
-
<div class="timeline" style="z-index:
|
11
|
+
<div class="timeline" style="z-index: <%- posts.length - id %>" data-title="<%- post.title.toLowerCase().replace(/\s+/gm, "") %>">
|
12
12
|
<div class="timeline-tail"></div>
|
13
13
|
<div class="timeline-content">
|
14
|
-
<div class="item-time"
|
14
|
+
<div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
|
15
15
|
<a href="<%- url_for(post.path) %>">
|
16
16
|
<h3><%= post.title %></h3>
|
17
17
|
</a>
|
@@ -37,9 +37,7 @@
|
|
37
37
|
const color = ["color: #ffa2c4", "color: #00bcd4", "color: #03a9f4", "color: #00a596", "color: #ff7d73"];
|
38
38
|
let num = Math.floor(Math.random() * color.length);
|
39
39
|
%>
|
40
|
-
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>">
|
41
|
-
<%= data.name %>
|
42
|
-
</a>
|
40
|
+
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>"><%= data.name %></a>
|
43
41
|
</span>
|
44
42
|
<% }); %>
|
45
43
|
</span>
|
package/layout/card.ejs
CHANGED
@@ -3,9 +3,7 @@
|
|
3
3
|
<div class="avatar">
|
4
4
|
<img src="<%- url_for(theme.avatar) %>" alt="avatar">
|
5
5
|
</div>
|
6
|
-
<div class="name">
|
7
|
-
<%= config.author %>
|
8
|
-
</div>
|
6
|
+
<div class="name"><%= config.author %></div>
|
9
7
|
<div class="description">
|
10
8
|
<%- markdown(theme.card.description) %>
|
11
9
|
</div>
|
@@ -24,9 +22,7 @@
|
|
24
22
|
<div class="friend-links">
|
25
23
|
<% Object.keys(theme.card.friendLinks).forEach(key => { %>
|
26
24
|
<div class="friend-link">
|
27
|
-
<a href="<%- url_for(theme.card.friendLinks[key]) %>">
|
28
|
-
<%= key %>
|
29
|
-
</a>
|
25
|
+
<a href="<%- url_for(theme.card.friendLinks[key]) %>"><%= key %></a>
|
30
26
|
</div>
|
31
27
|
<% }); %>
|
32
28
|
</div>
|
package/layout/categories.ejs
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
<div class="timeline-content">
|
31
31
|
<div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
|
32
32
|
<a href="<%- url_for(post.path) %>">
|
33
|
-
<h3><%=
|
33
|
+
<h3><%= post.title %></h3>
|
34
34
|
</a>
|
35
35
|
<div class="info">
|
36
36
|
<% if (post.categories && post.categories.data.length != 0) { %>
|
@@ -54,9 +54,7 @@
|
|
54
54
|
const color = ["color: #ffa2c4", "color: #00bcd4", "color: #03a9f4", "color: #00a596", "color: #ff7d73"];
|
55
55
|
let num = Math.floor(Math.random() * color.length);
|
56
56
|
%>
|
57
|
-
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>">
|
58
|
-
<%= data.name %>
|
59
|
-
</a>
|
57
|
+
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>"><%= data.name %></a>
|
60
58
|
</span>
|
61
59
|
<% }); %>
|
62
60
|
</span>
|
package/layout/current.ejs
CHANGED
@@ -18,41 +18,29 @@
|
|
18
18
|
<a class="page-num" href="<%- config.root %>">1</a>
|
19
19
|
<% } %>
|
20
20
|
<% if (page.current - 2 != 1) { %>
|
21
|
-
<a class="page-num" href="<%- url_for("page/" + (page.current - 2)) %>">
|
22
|
-
<%= page.current - 2 %>
|
23
|
-
</a>
|
21
|
+
<a class="page-num" href="<%- url_for("page/" + (page.current - 2)) %>"><%= page.current - 2 %></a>
|
24
22
|
<% } %>
|
25
23
|
<% } %>
|
26
|
-
<a class="page-num" href="<%- url_for(page.prev_link) %>">
|
27
|
-
<%= page.prev %>
|
28
|
-
</a>
|
24
|
+
<a class="page-num" href="<%- url_for(page.prev_link) %>"><%= page.prev %></a>
|
29
25
|
</span>
|
30
26
|
<% } %>
|
31
|
-
<span class="current">
|
32
|
-
<%= page.current %>
|
33
|
-
</span>
|
27
|
+
<span class="current"><%= page.current %></span>
|
34
28
|
<% if (page.current != page.total) { %>
|
35
29
|
<span>
|
36
|
-
<a class="page-num" href="<%- url_for(page.next_link) %>">
|
37
|
-
<%= page.next %>
|
38
|
-
</a>
|
30
|
+
<a class="page-num" href="<%- url_for(page.next_link) %>"><%= page.next %></a>
|
39
31
|
<% if (page.current + 2 <= page.total) { %>
|
40
|
-
<a class="page-num" href="<%- url_for("page/" + (page.current + 2)) %>">
|
41
|
-
<%= page.current + 2 %>
|
42
|
-
</a>
|
32
|
+
<a class="page-num" href="<%- url_for("page/" + (page.current + 2)) %>"><%= page.current + 2 %></a>
|
43
33
|
<% } %>
|
44
34
|
<% if (page.current + 3 <= page.total) { %>
|
45
35
|
<span class="page-omit">...</span>
|
46
|
-
<a class="page-num" href="<%- url_for("page/" + page.total) %>">
|
47
|
-
<%= page.total %>
|
48
|
-
</a>
|
36
|
+
<a class="page-num" href="<%- url_for("page/" + page.total) %>"><%= page.total %></a>
|
49
37
|
<% } %>
|
50
38
|
</span>
|
51
39
|
<% } %>
|
52
40
|
</div>
|
53
41
|
<div class="next">
|
54
42
|
<% if (page.current != page.total) { %>
|
55
|
-
<a class="page-num" href="<%- url_for(page.next_link) %>
|
43
|
+
<a class="page-num" href="<%- url_for(page.next_link) %>">
|
56
44
|
<i class="fa-solid fa-caret-right fa-fw"></i>
|
57
45
|
</a>
|
58
46
|
<% } %>
|
package/layout/footer.ejs
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
<footer id="footer">
|
2
2
|
<div class="footer-wrap">
|
3
3
|
<div>
|
4
|
-
|
4
|
+
©
|
5
|
+
<%= theme.footer.since %> - <%= date(Date.now(), "YYYY") %> <%= config.title %>
|
5
6
|
<span class="footer-icon">
|
6
7
|
<i class="fa-solid fa-font-awesome fa-fw"></i>
|
7
8
|
</span>
|
8
|
-
|
9
|
+
@<%= config.author %>
|
9
10
|
</div>
|
10
11
|
<div></div>
|
11
|
-
<div>Based on the <a href="https://hexo.io">Hexo Engine</a> & <a href="https://github.com/argvchs/hexo-theme-particlex">ParticleX Theme</a></div>
|
12
|
+
<div>Based on the <a href="https://hexo.io">Hexo Engine</a> & <a href="https://github.com/argvchs/hexo-theme-particlex">ParticleX Theme</a></div>
|
12
13
|
<% if (theme.footer.ICP.enable) { %>
|
13
14
|
<div>
|
14
|
-
|
15
|
+
备案号
|
15
16
|
<% if (theme.footer.ICP.link) { %>
|
16
|
-
<a href="
|
17
|
-
<%= theme.footer.ICP.code %>
|
18
|
-
</a>
|
17
|
+
<a href="<%- theme.footer.ICP.link %>"><%= theme.footer.ICP.code %></a>
|
19
18
|
<% } else { %>
|
20
19
|
<%= theme.footer.ICP.code %>
|
21
20
|
<% } %>
|
package/layout/layout.ejs
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
type = "categories";
|
9
9
|
else if (is_tag() || page.type == "tags")
|
10
10
|
type = "tags";
|
11
|
-
else if (is_archive()
|
11
|
+
else if (is_archive())
|
12
12
|
type = "archives";
|
13
13
|
let title = "";
|
14
14
|
if (page.title)
|
@@ -17,7 +17,7 @@
|
|
17
17
|
title = "Categories: " + page.category + " | ";
|
18
18
|
else if (is_tag())
|
19
19
|
title = "Tags: " + page.tag + " | ";
|
20
|
-
else if (is_archive()
|
20
|
+
else if (is_archive())
|
21
21
|
title = "Archives | ";
|
22
22
|
title += config.title;
|
23
23
|
%>
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<html lang="<%- config.language %>">
|
26
26
|
<head>
|
27
27
|
<meta charset="UTF-8">
|
28
|
-
<title><%=
|
28
|
+
<title><%= title %></title>
|
29
29
|
<meta name="author" content="<%- config.author %>">
|
30
30
|
<meta name="description" content="<%- config.description %>">
|
31
31
|
<meta name="keywords" content="<%- config.keywords %>">
|
@@ -36,7 +36,7 @@
|
|
36
36
|
<link rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/11.7.0/styles/<%- theme.highlightStyle %>.min.css">
|
37
37
|
<link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.2.1/css/all.min.css">
|
38
38
|
<% if (theme.polyfill.enable) { %>
|
39
|
-
<script src="https://polyfill.io/v3/polyfill.min.js?features
|
39
|
+
<script src="https://polyfill.io/v3/polyfill.min.js?features=<%- theme.polyfill.features.join(",") %>"></script>
|
40
40
|
<% } %>
|
41
41
|
<% if (theme.math.enable) { %>
|
42
42
|
<script src="https://cdn.staticfile.org/KaTeX/0.16.4/katex.min.js"></script>
|
package/layout/loading.ejs
CHANGED
@@ -4,9 +4,7 @@
|
|
4
4
|
<div>
|
5
5
|
<h2>LOADING...</h2>
|
6
6
|
<p style="word-break: keep-all">加载过慢请开启缓存(浏览器默认开启)</p>
|
7
|
-
<
|
8
|
-
<img alt="loading" src="<%- url_for("/images/loading.gif") %>" style="height: 50px">
|
9
|
-
</div>
|
7
|
+
<img alt="loading" src="<%- url_for("/images/loading.gif") %>" style="height: 50px">
|
10
8
|
</div>
|
11
9
|
</div>
|
12
10
|
</div>
|
package/layout/menu.ejs
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
<nav id="menu">
|
2
2
|
<div class="desktop-menu">
|
3
3
|
<a href="<%- config.root %>">
|
4
|
-
<span class="title"
|
4
|
+
<span class="title"><%= config.title.toUpperCase() %></span>
|
5
5
|
</a>
|
6
6
|
<% Object.keys(theme.menu).forEach(key => { %>
|
7
|
-
<a href="
|
7
|
+
<a href="<%- url_for(theme.menu[key].src) %>">
|
8
8
|
<i class="fa-<%- theme.menu[key].theme %> fa-<%- theme.menu[key].name %> fa-fw"></i>
|
9
9
|
<span> <%= key %></span>
|
10
10
|
</a>
|
11
11
|
<% }); %>
|
12
12
|
</div>
|
13
|
-
<div :class="
|
13
|
+
<div :class=""phone-menu " + menushow" id="phone-menu">
|
14
14
|
<div class="curtain" @click="menushow = !menushow" v-show="menushow"></div>
|
15
15
|
<div class="title" @click="menushow = !menushow">
|
16
16
|
<i class="fa-solid fa-bars fa-fw"></i>
|
17
|
-
<span>&emsp
|
17
|
+
<span> <%= config.title.toUpperCase() %></span>
|
18
18
|
</div>
|
19
19
|
<transition name="slide">
|
20
20
|
<div class="items" v-show="menushow">
|
21
21
|
<% Object.keys(theme.menu).forEach(key => { %>
|
22
|
-
<a href="
|
22
|
+
<a href="<%- url_for(theme.menu[key].src) %>">
|
23
23
|
<div class="item">
|
24
24
|
<div style="min-width: 20px; max-width: 50px; width: 10%">
|
25
25
|
<i class="fa-<%- theme.menu[key].theme %> fa-<%- theme.menu[key].name %> fa-fw"></i>
|
package/layout/post.ejs
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="article">
|
2
2
|
<div>
|
3
|
-
<h1><%=
|
3
|
+
<h1><%= page.title %> </h1>
|
4
4
|
</div>
|
5
5
|
<div class="info">
|
6
6
|
<span class="date">
|
@@ -30,9 +30,7 @@
|
|
30
30
|
const color = ["color: #ffa2c4", "color: #00bcd4", "color: #03a9f4", "color: #00a596", "color: #ff7d73"];
|
31
31
|
let num = Math.floor(Math.random() * color.length);
|
32
32
|
%>
|
33
|
-
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>">
|
34
|
-
<%= data.name %>
|
35
|
-
</a>
|
33
|
+
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>"><%= data.name %></a>
|
36
34
|
</span>
|
37
35
|
<% }); %>
|
38
36
|
</span>
|
@@ -52,7 +50,7 @@
|
|
52
50
|
}
|
53
51
|
%>
|
54
52
|
<input id="crypto" class="input" placeholder="文章被加密,请输入密码" data-encrypt="<%- encrypt(page.content, page.password.toString()) %>" data-check="<%- sha(page.content) %>">
|
55
|
-
<div class="content" style="opacity: 0"
|
53
|
+
<div class="content" v-pre style="opacity: 0"></div>
|
56
54
|
<% } else { %>
|
57
55
|
<div class="content" v-pre>
|
58
56
|
<%- page.content %>
|
package/layout/posts.ejs
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
<% posts.forEach(post => { %>
|
11
11
|
<div class="post">
|
12
12
|
<a href="<%- url_for(post.path) %>">
|
13
|
-
<h2 class="post-title"><%=
|
13
|
+
<h2 class="post-title"><%= post.title %></h2>
|
14
14
|
</a>
|
15
15
|
<div class="category-and-date">
|
16
16
|
<% if (post.categories.data.length != 0) { %>
|
@@ -40,11 +40,11 @@
|
|
40
40
|
</span>
|
41
41
|
<% } %>
|
42
42
|
</div>
|
43
|
-
<div class="
|
43
|
+
<div class="description">
|
44
44
|
<div class="content" v-pre>
|
45
45
|
<% if (typeof post.description !== "undefined") { %>
|
46
46
|
<%- markdown(post.description) %>
|
47
|
-
<% } else if (
|
47
|
+
<% } else if (post.excerpt) { %>
|
48
48
|
<%- post.excerpt %>
|
49
49
|
<% } else { %>
|
50
50
|
<%- post.content %>
|
package/layout/tags.ejs
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
<div class="timeline-content">
|
31
31
|
<div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
|
32
32
|
<a href="<%- url_for(post.path) %>">
|
33
|
-
<h3><%=
|
33
|
+
<h3><%= post.title %></h3>
|
34
34
|
</a>
|
35
35
|
<div class="info">
|
36
36
|
<% if (post.categories && post.categories.data.length != 0){ %>
|
@@ -54,9 +54,7 @@
|
|
54
54
|
const color = ["color: #ffa2c4", "color: #00bcd4", "color: #03a9f4", "color: #00a596", "color: #ff7d73"];
|
55
55
|
let num = Math.floor(Math.random() * color.length);
|
56
56
|
%>
|
57
|
-
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>">
|
58
|
-
<%= data.name %>
|
59
|
-
</a>
|
57
|
+
<a href="<%- url_for(data.path) %>" style="<%- color[num] %>"><%= data.name %></a>
|
60
58
|
</span>
|
61
59
|
<% }); %>
|
62
60
|
</span>
|
package/package.json
CHANGED
package/source/css/particlex.css
CHANGED
@@ -330,7 +330,7 @@
|
|
330
330
|
display: inline-block;
|
331
331
|
margin-left: 25px;
|
332
332
|
}
|
333
|
-
#home-posts .post .
|
333
|
+
#home-posts .post .description {
|
334
334
|
color: #1e3e3f;
|
335
335
|
}
|
336
336
|
#home-posts .post .go-post {
|
@@ -408,7 +408,6 @@
|
|
408
408
|
display: inline-block;
|
409
409
|
font-family: Lexend, "Noto Sans SC", sans-serif;
|
410
410
|
margin-left: 30px;
|
411
|
-
text-transform: uppercase;
|
412
411
|
}
|
413
412
|
#menu .desktop-menu a {
|
414
413
|
color: #555;
|
@@ -452,7 +451,6 @@
|
|
452
451
|
#menu .phone-menu .title {
|
453
452
|
color: #555;
|
454
453
|
cursor: pointer;
|
455
|
-
text-transform: uppercase;
|
456
454
|
z-index: 10004;
|
457
455
|
}
|
458
456
|
#menu.hidden-menu {
|
@@ -853,7 +851,7 @@ ol {
|
|
853
851
|
margin-bottom: 25px;
|
854
852
|
padding: 50px;
|
855
853
|
}
|
856
|
-
#home-posts .post .
|
854
|
+
#home-posts .post .description {
|
857
855
|
padding: 20px 0;
|
858
856
|
}
|
859
857
|
#home-posts-wrap {
|
@@ -935,7 +933,7 @@ ol {
|
|
935
933
|
margin-bottom: 30px;
|
936
934
|
padding: 20px 30px;
|
937
935
|
}
|
938
|
-
#home-posts .post .
|
936
|
+
#home-posts .post .description {
|
939
937
|
padding: 20px 0;
|
940
938
|
}
|
941
939
|
#home-posts .post .post-tags {
|