hexo-theme-particlex 2.7.5 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [ParticleX](https://github.com/theme-particlex/hexo-theme-particlex) 主题,诞生原因是因为原来的 [Particle](https://github.com/korilin/hexo-theme-particle) 主题不维护了,但是我觉得还是很好的。
4
4
 
5
- 原来用的是 Vue 2 + Ant Design Vue 1,现更新到 Vue 3,去除 Ant Design Vue 采用自定义样式,图标更改为 Font Awesome 6,CDN 改为 Staticfile
5
+ 原来用的是 Vue 2 + Ant Design Vue 1,现更新到 Vue 3,去除 Ant Design Vue 采用自定义样式,图标更改为 Font Awesome 6,CDN 改为 ZStatic
6
6
 
7
7
  原项目 `README.md` 里说:
8
8
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  # 2. 安装
20
20
 
21
- ```bash
21
+ ```shell
22
22
  cd themes
23
23
  git clone https://github.com/theme-particlex/hexo-theme-particlex.git particlex --depth=1
24
24
  ```
@@ -40,6 +40,12 @@ prismjs:
40
40
  enable: false
41
41
  ```
42
42
 
43
+ 如果使用 Hexo 7.0.0 之后的版本只需要修改为:
44
+
45
+ ```yaml
46
+ syntax_highlighter:
47
+ ```
48
+
43
49
  如果使用 Pandoc 还需要设置一下:
44
50
 
45
51
  ```yaml
@@ -250,14 +256,14 @@ search:
250
256
 
251
257
  ## 3.4. 评论配置
252
258
 
253
- ### 3.4.1. Giscus
259
+ ### 3.4.1. giscus
254
260
 
255
- Giscus 是一个由 GitHub Discussions 支持的评论系统。
261
+ giscus 是一个由 GitHub Discussions 支持的评论系统。
256
262
 
257
- 在 [Giscus.app](https://giscus.app) 设置好各项后,会在下面生成一个 `<script>` 标签,在主题内填入即可。
263
+ 在 [giscus.app](https://giscus.app) 设置好各项后,会在下面生成一个 `<script>` 标签,在主题内填入即可。
258
264
 
259
265
  ```yaml
260
- # Giscus
266
+ # giscus
261
267
  # https://github.com/giscus/giscus
262
268
  giscus:
263
269
  enable: false
package/_config.yml CHANGED
@@ -93,7 +93,7 @@ crypto:
93
93
  search:
94
94
  enable: false
95
95
 
96
- # Giscus
96
+ # giscus
97
97
  # https://github.com/giscus/giscus
98
98
  giscus:
99
99
  enable: false
@@ -1,70 +1,70 @@
1
- <div id="archives">
2
- <% let posts = []; %>
3
- <div class="categories-tags">
4
- <% let prev; %>
5
- <% site.categories.data.forEach(category => { %>
6
- <%
7
- const colors = is_category(category.name)
8
- ? ["linear-gradient(120deg, #9abbf7 0%, #ffbbf4 100%)"]
9
- : theme.colors.filter(color => color !== prev);
10
- let id = Math.floor(Math.random() * colors.length);
11
- prev = colors[id];
12
- %>
13
- <span>
14
- <a href="<%- url_for(category.path) %>" style="background: <%- colors[id] %>">
15
- <span class="icon">
16
- <i class="fa-solid fa-bookmark fa-fw"></i>
17
- </span>
18
- <%= category.name %>
19
- </a>
20
- </span>
21
- <% if (is_category(category.name)) { %>
22
- <%
23
- posts = category.posts;
24
- posts.data.sort((a, b) => b.date - a.date);
25
- %>
26
- <% } %>
27
- <% }); %>
28
- </div>
29
- <% posts.forEach(post => { %>
30
- <div class="timeline">
31
- <div class="timeline-tail"></div>
32
- <div class="timeline-content">
33
- <div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
34
- <a href="<%- url_for(post.path) %>">
35
- <h3><%= post.title %></h3>
36
- </a>
37
- <div class="info">
38
- <% if (post.categories && post.categories.data.length !== 0) { %>
39
- <span class="category">
40
- <a href="<%- url_for(post.categories.data[0].path) %>">
41
- <span class="icon">
42
- <i class="fa-solid fa-bookmark fa-fw"></i>
43
- </span>
44
- <%= post.categories.data[0].name %>
45
- </a>
46
- </span>
47
- <% } %>
48
- <% if (post.tags && post.tags.data.length !== 0) { %>
49
- <span class="tags">
50
- <span class="icon">
51
- <i class="fa-solid fa-tags fa-fw"></i>
52
- </span>
53
- <% let prev; %>
54
- <% post.tags.data.forEach(tag => { %>
55
- <span class="tag">
56
- <%
57
- const colors = theme.colors.filter(color => color !== prev);
58
- let id = Math.floor(Math.random() * colors.length);
59
- prev = colors[id];
60
- %>
61
- <a href="<%- url_for(tag.path) %>" style="color: <%- colors[id] %>"><%= tag.name %></a>
62
- </span>
63
- <% }); %>
64
- </span>
65
- <% } %>
66
- </div>
67
- </div>
68
- </div>
69
- <% }); %>
70
- </div>
1
+ <div id="archives">
2
+ <% let posts = []; %>
3
+ <div class="categories-tags">
4
+ <% let prev; %>
5
+ <% site.categories.forEach(category => { %>
6
+ <%
7
+ const colors = is_category(category.name)
8
+ ? ["linear-gradient(120deg, #9abbf7 0%, #ffbbf4 100%)"]
9
+ : theme.colors.filter(color => color !== prev);
10
+ let id = Math.floor(Math.random() * colors.length);
11
+ prev = colors[id];
12
+ %>
13
+ <span>
14
+ <a href="<%- url_for(category.path) %>" style="background: <%- colors[id] %>">
15
+ <span class="icon">
16
+ <i class="fa-solid fa-bookmark fa-fw"></i>
17
+ </span>
18
+ <%= category.name %>
19
+ </a>
20
+ </span>
21
+ <% if (is_category(category.name)) { %>
22
+ <%
23
+ posts = category.posts;
24
+ posts.data.sort((a, b) => b.date - a.date);
25
+ %>
26
+ <% } %>
27
+ <% }); %>
28
+ </div>
29
+ <% posts.forEach(post => { %>
30
+ <div class="timeline">
31
+ <div class="timeline-tail"></div>
32
+ <div class="timeline-content">
33
+ <div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
34
+ <a href="<%- url_for(post.path) %>">
35
+ <h3><%= post.title %></h3>
36
+ </a>
37
+ <div class="info">
38
+ <% if (post.categories && post.categories.data.length !== 0) { %>
39
+ <span class="category">
40
+ <a href="<%- url_for(post.categories.data[0].path) %>">
41
+ <span class="icon">
42
+ <i class="fa-solid fa-bookmark fa-fw"></i>
43
+ </span>
44
+ <%= post.categories.data[0].name %>
45
+ </a>
46
+ </span>
47
+ <% } %>
48
+ <% if (post.tags && post.tags.data.length !== 0) { %>
49
+ <span class="tags">
50
+ <span class="icon">
51
+ <i class="fa-solid fa-tags fa-fw"></i>
52
+ </span>
53
+ <% let prev; %>
54
+ <% post.tags.data.forEach(tag => { %>
55
+ <span class="tag">
56
+ <%
57
+ const colors = theme.colors.filter(color => color !== prev);
58
+ let id = Math.floor(Math.random() * colors.length);
59
+ prev = colors[id];
60
+ %>
61
+ <a href="<%- url_for(tag.path) %>" style="color: <%- colors[id] %>"><%= tag.name %></a>
62
+ </span>
63
+ <% }); %>
64
+ </span>
65
+ <% } %>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ <% }); %>
70
+ </div>
package/layout/import.ejs CHANGED
@@ -1,6 +1,6 @@
1
- <link rel="preconnect" href="https://cdn.staticfile.org" />
2
- <script src="https://cdn.staticfile.org/vue/3.3.4/vue.global.prod.min.js"></script>
3
- <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" />
1
+ <link rel="preconnect" href="https://s4.zstatic.net" />
2
+ <script src="https://s4.zstatic.net/ajax/libs/vue/3.3.7/vue.global.prod.min.js"></script>
3
+ <link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/font-awesome/6.4.2/css/all.min.css" />
4
4
  <link rel="preconnect" href="https://fonts.loli.net" />
5
5
  <link rel="preconnect" href="https://gstatic.loli.net" crossorigin />
6
6
  <link rel="stylesheet" href="https://fonts.loli.net/css2?family=Fira+Code:wght@400;500;600;700&family=Lexend:wght@400;500;600;700;800;900&family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap" />
@@ -9,25 +9,25 @@
9
9
  <script src="https://polyfill.io/v3/polyfill.min.js?features=<%- theme.polyfill.features %>"></script>
10
10
  <% } %>
11
11
  <% if (theme.highlight.enable) { %>
12
- <script src="https://cdn.staticfile.org/highlight.js/11.8.0/highlight.min.js"></script>
13
- <script src="https://cdn.staticfile.org/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
12
+ <script src="https://s4.zstatic.net/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
13
+ <script src="https://s4.zstatic.net/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
14
14
  <link
15
15
  rel="stylesheet"
16
- href="https://cdn.staticfile.org/highlight.js/11.8.0/styles/<%- theme.highlight.style %>.min.css"
16
+ href="https://s4.zstatic.net/ajax/libs/highlight.js/11.9.0/styles/<%- theme.highlight.style %>.min.css"
17
17
  />
18
18
  <script src="<%- url_for("/js/lib/highlight.js") %>"></script>
19
19
  <% } %>
20
20
  <% if (theme.math.enable) { %>
21
- <script src="https://cdn.staticfile.org/KaTeX/0.16.8/katex.min.js"></script>
22
- <script src="https://cdn.staticfile.org/KaTeX/0.16.8/contrib/auto-render.min.js"></script>
23
- <link rel="stylesheet" href="https://cdn.staticfile.org/KaTeX/0.16.8/katex.min.css" />
21
+ <script src="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/katex.min.js"></script>
22
+ <script src="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/contrib/auto-render.min.js"></script>
23
+ <link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/katex.min.css" />
24
24
  <script src="<%- url_for("/js/lib/math.js") %>"></script>
25
25
  <% } %>
26
26
  <% if (theme.preview.enable) { %>
27
27
  <script src="<%- url_for("/js/lib/preview.js") %>"></script>
28
28
  <% } %>
29
29
  <% if (theme.crypto.enable && typeof page.secret !== "undefined") { %>
30
- <script src="https://cdn.staticfile.org/crypto-js/4.1.1/crypto-js.min.js"></script>
30
+ <script src="https://s4.zstatic.net/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>
31
31
  <script src="<%- url_for("/js/lib/crypto.js") %>"></script>
32
32
  <% } %>
33
33
  <% if (type === "archives" && theme.search.enable) { %>
@@ -35,16 +35,16 @@
35
35
  <% } %>
36
36
  <% if (type === "post" && page.comments) { %>
37
37
  <% if (theme.gitalk.enable) { %>
38
- <script src="https://cdn.staticfile.org/gitalk/1.8.0/gitalk.min.js"></script>
39
- <link rel="stylesheet" href="https://cdn.staticfile.org/gitalk/1.8.0/gitalk.min.css" />
38
+ <script src="https://s4.zstatic.net/ajax/libs/gitalk/1.8.0/gitalk.min.js"></script>
39
+ <link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/gitalk/1.8.0/gitalk.min.css" />
40
40
  <% } %>
41
41
  <% if (theme.waline.enable) { %>
42
- <script src="https://cdn.staticfile.org/waline/2.15.5/waline.min.js"></script>
43
- <link rel="stylesheet" href="https://cdn.staticfile.org/waline/2.15.5/waline.min.css" />
44
- <link rel="stylesheet" href="https://cdn.staticfile.org/waline/2.15.5/waline-meta.min.css" />
42
+ <script src="https://s4.zstatic.net/ajax/libs/waline/2.15.8/waline.min.js"></script>
43
+ <link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/waline/2.15.8/waline.min.css" />
44
+ <link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/waline/2.15.8/waline-meta.min.css" />
45
45
  <% } %>
46
46
  <% if (theme.twikoo.enable) { %>
47
- <script src="https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js"></script>
47
+ <script src="https://s4.zstatic.net/ajax/libs/twikoo/1.6.31/twikoo.all.min.js"></script>
48
48
  <% } %>
49
49
  <% } %>
50
50
  <% if (type === "index") { %>
package/layout/layout.ejs CHANGED
@@ -1,11 +1,11 @@
1
1
  <%
2
- let type;
2
+ let type = "post";
3
3
  if (is_home()) type = "index";
4
4
  if (is_post() || is_page()) type = "post";
5
5
  if (is_category() || page.type === "categories") type = "categories";
6
6
  if (is_tag() || page.type === "tags") type = "tags";
7
7
  if (is_archive()) type = "archives";
8
- let title;
8
+ let title = page.title + " | " + config.title;
9
9
  if (is_home()) title = config.title;
10
10
  if (is_post() || is_page()) title = page.title + " | " + config.title;
11
11
  if (is_category()) title = "Categories: " + page.category + " | " + config.title;
package/layout/tags.ejs CHANGED
@@ -1,70 +1,70 @@
1
- <div id="archives">
2
- <% let posts = []; %>
3
- <div class="categories-tags">
4
- <% let prev; %>
5
- <% site.tags.data.forEach(tag => { %>
6
- <%
7
- const colors = is_tag(tag.name)
8
- ? ["linear-gradient(120deg, #9abbf7 0%, #ffbbf4 100%)"]
9
- : theme.colors.filter(color => color !== prev);
10
- let id = Math.floor(Math.random() * colors.length);
11
- prev = colors[id];
12
- %>
13
- <span>
14
- <a href="<%- url_for(tag.path) %>" style="background: <%- colors[id] %>">
15
- <span class="icon">
16
- <i class="fa-solid fa-tags fa-fw"></i>
17
- </span>
18
- <%= tag.name %>
19
- </a>
20
- </span>
21
- <% if (is_tag(tag.name)) { %>
22
- <%
23
- posts = tag.posts;
24
- posts.data.sort((a, b) => b.date - a.date);
25
- %>
26
- <% } %>
27
- <% }); %>
28
- </div>
29
- <% posts.forEach(post => { %>
30
- <div class="timeline">
31
- <div class="timeline-tail"></div>
32
- <div class="timeline-content">
33
- <div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
34
- <a href="<%- url_for(post.path) %>">
35
- <h3><%= post.title %></h3>
36
- </a>
37
- <div class="info">
38
- <% if (post.categories && post.categories.data.length !== 0) { %>
39
- <span class="category">
40
- <a href="<%- url_for(post.categories.data[0].path) %>">
41
- <span class="icon">
42
- <i class="fa-solid fa-bookmark fa-fw"></i>
43
- </span>
44
- <%= post.categories.data[0].name %>
45
- </a>
46
- </span>
47
- <% } %>
48
- <% if (post.tags && post.tags.data.length !== 0) { %>
49
- <span class="tags">
50
- <span class="icon">
51
- <i class="fa-solid fa-tags fa-fw"></i>
52
- </span>
53
- <% let prev; %>
54
- <% post.tags.data.forEach(tag => { %>
55
- <span class="tag">
56
- <%
57
- const colors = theme.colors.filter(color => color !== prev);
58
- let id = Math.floor(Math.random() * colors.length);
59
- prev = colors[id];
60
- %>
61
- <a href="<%- url_for(tag.path) %>" style="color: <%- colors[id] %>"><%= tag.name %></a>
62
- </span>
63
- <% }); %>
64
- </span>
65
- <% } %>
66
- </div>
67
- </div>
68
- </div>
69
- <% }); %>
70
- </div>
1
+ <div id="archives">
2
+ <% let posts = []; %>
3
+ <div class="categories-tags">
4
+ <% let prev; %>
5
+ <% site.tags.forEach(tag => { %>
6
+ <%
7
+ const colors = is_tag(tag.name)
8
+ ? ["linear-gradient(120deg, #9abbf7 0%, #ffbbf4 100%)"]
9
+ : theme.colors.filter(color => color !== prev);
10
+ let id = Math.floor(Math.random() * colors.length);
11
+ prev = colors[id];
12
+ %>
13
+ <span>
14
+ <a href="<%- url_for(tag.path) %>" style="background: <%- colors[id] %>">
15
+ <span class="icon">
16
+ <i class="fa-solid fa-tags fa-fw"></i>
17
+ </span>
18
+ <%= tag.name %>
19
+ </a>
20
+ </span>
21
+ <% if (is_tag(tag.name)) { %>
22
+ <%
23
+ posts = tag.posts;
24
+ posts.data.sort((a, b) => b.date - a.date);
25
+ %>
26
+ <% } %>
27
+ <% }); %>
28
+ </div>
29
+ <% posts.forEach(post => { %>
30
+ <div class="timeline">
31
+ <div class="timeline-tail"></div>
32
+ <div class="timeline-content">
33
+ <div class="item-time"><%= date(post.date, "YYYY/M/D") %></div>
34
+ <a href="<%- url_for(post.path) %>">
35
+ <h3><%= post.title %></h3>
36
+ </a>
37
+ <div class="info">
38
+ <% if (post.categories && post.categories.data.length !== 0) { %>
39
+ <span class="category">
40
+ <a href="<%- url_for(post.categories.data[0].path) %>">
41
+ <span class="icon">
42
+ <i class="fa-solid fa-bookmark fa-fw"></i>
43
+ </span>
44
+ <%= post.categories.data[0].name %>
45
+ </a>
46
+ </span>
47
+ <% } %>
48
+ <% if (post.tags && post.tags.data.length !== 0) { %>
49
+ <span class="tags">
50
+ <span class="icon">
51
+ <i class="fa-solid fa-tags fa-fw"></i>
52
+ </span>
53
+ <% let prev; %>
54
+ <% post.tags.data.forEach(tag => { %>
55
+ <span class="tag">
56
+ <%
57
+ const colors = theme.colors.filter(color => color !== prev);
58
+ let id = Math.floor(Math.random() * colors.length);
59
+ prev = colors[id];
60
+ %>
61
+ <a href="<%- url_for(tag.path) %>" style="color: <%- colors[id] %>"><%= tag.name %></a>
62
+ </span>
63
+ <% }); %>
64
+ </span>
65
+ <% } %>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ <% }); %>
70
+ </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-particlex",
3
- "version": "2.7.5",
3
+ "version": "2.8.0",
4
4
  "description": "A concise Hexo theme, based on Particle.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "homepage": "https://github.com/theme-particlex/hexo-theme-particlex#readme",
23
23
  "dependencies": {
24
- "hexo-helper-crypto": "^1.1.4",
24
+ "hexo-helper-crypto": "^1.1.5",
25
25
  "hexo-renderer-ejs": "^2.0.0"
26
26
  },
27
27
  "scripts": {