hexo-theme-stellar 1.24.0 → 1.25.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/_config.yml +69 -45
- package/languages/en.yml +2 -1
- package/languages/zh-CN.yml +2 -1
- package/languages/zh-TW.yml +2 -1
- package/layout/404.ejs +1 -3
- package/layout/_partial/head.ejs +1 -1
- package/layout/_partial/main/article/article_footer.ejs +14 -14
- package/layout/_partial/main/article/read_next.ejs +10 -10
- package/layout/_partial/main/navbar/breadcrumb.ejs +36 -14
- package/layout/_partial/main/navbar/{list_post.ejs → nav_tabs_blog.ejs} +15 -7
- package/layout/_partial/main/navbar/{list_wiki.ejs → nav_tabs_wiki.ejs} +15 -1
- package/layout/_partial/main/post_list/post_card.ejs +2 -13
- package/layout/_partial/main/post_list/topic_card.ejs +16 -0
- package/layout/_partial/sidebar/header.ejs +6 -7
- package/layout/_partial/sidebar/index.ejs +37 -29
- package/layout/_partial/sidebar/menu.ejs +2 -2
- package/layout/_partial/widgets/related.ejs +47 -20
- package/layout/_partial/widgets/search.ejs +2 -2
- package/layout/_partial/widgets/toc.ejs +52 -44
- package/layout/archive.ejs +1 -1
- package/layout/categories.ejs +1 -1
- package/layout/index.ejs +6 -42
- package/layout/index_topic.ejs +28 -0
- package/layout/index_wiki.ejs +42 -0
- package/layout/page.ejs +2 -2
- package/layout/tags.ejs +1 -1
- package/layout/topic.ejs +28 -0
- package/layout/wiki.ejs +11 -22
- package/package.json +1 -1
- package/scripts/events/index.js +5 -0
- package/scripts/events/lib/authors.js +1 -1
- package/scripts/events/lib/config.js +2 -2
- package/scripts/events/lib/doc_tree.js +1 -1
- package/scripts/events/lib/merge_posts.js +47 -0
- package/scripts/events/lib/topic_tree.js +45 -0
- package/scripts/generators/404.js +8 -3
- package/scripts/generators/author.js +4 -2
- package/scripts/generators/categories.js +4 -4
- package/scripts/generators/tags.js +4 -4
- package/scripts/generators/topic.js +21 -0
- package/scripts/generators/wiki.js +29 -28
- package/scripts/helpers/parse_config.js +2 -2
- package/scripts/tags/lib/audio.js +10 -5
- package/scripts/tags/lib/navbar.js +1 -1
- package/scripts/tags/lib/video.js +13 -5
- package/source/css/_common/blur.styl +4 -1
- package/source/css/_common/highlight.styl +1 -0
- package/source/css/_common/media.styl +1 -6
- package/source/css/_layout/partial/paginator.styl +2 -2
- package/source/css/_layout/partial/related.styl +3 -0
- package/source/css/_layout/tag-plugins/banner.styl +4 -1
- package/source/css/_layout/tag-plugins/frame.styl +1 -1
- package/source/css/_layout/tag-plugins/media.styl +11 -0
- package/source/css/_layout/widgets/search.styl +21 -29
- package/source/js/main.js +1 -1
- package/source/js/plugins/fcircle.js +1 -1
- package/source/js/plugins/friends.js +1 -1
- package/source/js/plugins/memos.js +1 -1
- package/source/js/plugins/sites.js +2 -2
- package/source/js/plugins/weibo.js +1 -1
- package/source/js/search/local-search.js +4 -1
package/_config.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
######## Stellar info ########
|
|
2
2
|
stellar:
|
|
3
|
-
version: '1.
|
|
3
|
+
version: '1.25.0'
|
|
4
4
|
homepage: 'https://xaoxuu.com/wiki/stellar/'
|
|
5
5
|
repo: 'https://github.com/xaoxuu/hexo-theme-stellar'
|
|
6
6
|
cdn_css: # Use cdn links instead of /css/main.css
|
|
@@ -18,42 +18,65 @@ open_graph:
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
######## Sidebar ########
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
blog_index: search_blog, recent, timeline # for categories/tags/archives
|
|
37
|
-
# 文档索引页
|
|
38
|
-
wiki_index: search_docs, recent, timeline # for wiki
|
|
39
|
-
# 其它(404)
|
|
40
|
-
others: search, recent, timeline # for 404 and ...
|
|
41
|
-
#### 手动创建的页面 ####
|
|
42
|
-
# 文章内页
|
|
43
|
-
post: search_blog, toc, ghrepo, ghissues # for pages using 'layout:post'
|
|
44
|
-
# 文档内页
|
|
45
|
-
wiki: search, toc, ghissues, related # for pages using 'layout:wiki'
|
|
46
|
-
# 其它 layout:page 的页面
|
|
47
|
-
page: toc, search # for custom pages using 'layout:page'
|
|
48
|
-
|
|
49
|
-
######## Index ########
|
|
50
|
-
post-index: # 近期发布 分类 标签 归档 and ...
|
|
51
|
-
# '朋友文章': /friends/rss/
|
|
21
|
+
# 左上角显示的 logo 区域,包含图标、大标题、副标题
|
|
22
|
+
logo:
|
|
23
|
+
avatar: '[config.avatar](/about/)' # you can set avatar link in _config.yml or '[https://xxx.png](/about/)'
|
|
24
|
+
title: '[config.title](/)' # you can set html tag like: '[<img no-lazy height="32px" src="xxx"/>](/)'
|
|
25
|
+
subtitle: '' # '文字1 | 文字2' (鼠标放上去会切换到文字2)
|
|
26
|
+
|
|
27
|
+
# 侧边栏主功能导航菜单
|
|
28
|
+
# 自己可以增加任意的键值对
|
|
29
|
+
# 键:就是 menu_id,后面需要用到
|
|
30
|
+
# 值:就是显示的 md 链接,方括号内支持文字和图片标签
|
|
31
|
+
menu:
|
|
32
|
+
# post: '[btn.blog](/)'
|
|
33
|
+
# wiki: '[btn.wiki](/wiki/)'
|
|
34
|
+
# friends: '[友链](/friends/)'
|
|
35
|
+
# about: '[关于](/about/)'
|
|
52
36
|
|
|
53
37
|
|
|
54
38
|
######## Main ########
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
# 站点主结构树
|
|
40
|
+
site_tree:
|
|
41
|
+
# 主页配置
|
|
42
|
+
home:
|
|
43
|
+
sidebar: search, recent, timeline
|
|
44
|
+
# 博客配置
|
|
45
|
+
blog:
|
|
46
|
+
base_dir: blog # 只影响自动生成的页面路径
|
|
47
|
+
menu_id: post # 未在 front-matter 中指定 menu_id 时,layout 为 post 的页面默认使用这里配置的 menu_id
|
|
48
|
+
sidebar: search_blog, recent, timeline # for categories/tags/archives
|
|
49
|
+
nav_tabs: # 近期发布 分类 标签 专栏 归档 and ...
|
|
50
|
+
# '朋友文章': /friends/rss/
|
|
51
|
+
# 博客文章配置
|
|
52
|
+
post:
|
|
53
|
+
menu_id: post # 未在 front-matter 中指定 menu_id 时,layout 为 post 的页面默认使用这里配置的 menu_id
|
|
54
|
+
sidebar: search_blog, toc, related, ghrepo, ghissues # for pages using 'layout:post'
|
|
55
|
+
# 博客专栏配置
|
|
56
|
+
topic:
|
|
57
|
+
base_dir: topic # 只影响自动生成的页面路径
|
|
58
|
+
menu_id: post # 未在 front-matter 中指定 menu_id 时,layout 为 topic 的页面默认使用这里配置的 menu_id
|
|
59
|
+
sidebar: search_blog, toc, related # for topic
|
|
60
|
+
# wiki配置
|
|
61
|
+
wiki:
|
|
62
|
+
base_dir: wiki # 只影响自动生成的页面路径
|
|
63
|
+
menu_id: wiki # 未在 front-matter 中指定 menu_id 时,layout 为 wiki 的页面默认使用这里配置的 menu_id
|
|
64
|
+
sidebar: search_docs, ghissues, related, recent, timeline # for wiki
|
|
65
|
+
# 作者信息配置
|
|
66
|
+
author:
|
|
67
|
+
base_dir: author # 只影响自动生成的页面路径
|
|
68
|
+
menu_id: post
|
|
69
|
+
sidebar: search_blog, recent, timeline
|
|
70
|
+
# 错误页配置
|
|
71
|
+
error_page:
|
|
72
|
+
menu_id: post
|
|
73
|
+
'404': '/404.html'
|
|
74
|
+
sidebar: search, recent, timeline
|
|
75
|
+
# 其它自定义页面配置 layout: page
|
|
76
|
+
page:
|
|
77
|
+
sidebar: toc, search
|
|
78
|
+
|
|
79
|
+
|
|
57
80
|
|
|
58
81
|
######## Article ########
|
|
59
82
|
article:
|
|
@@ -189,16 +212,16 @@ comments:
|
|
|
189
212
|
footer:
|
|
190
213
|
social:
|
|
191
214
|
# github:
|
|
192
|
-
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
215
|
+
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/08a41b181ce68.svg"/>'
|
|
193
216
|
# url: /
|
|
194
217
|
# music:
|
|
195
|
-
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
218
|
+
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/3845874.svg"/>'
|
|
196
219
|
# url: /
|
|
197
220
|
# unsplash:
|
|
198
|
-
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
221
|
+
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/3616429.svg"/>'
|
|
199
222
|
# url: /
|
|
200
223
|
# comments:
|
|
201
|
-
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
224
|
+
# icon: '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/942ebbf1a4b91.svg"/>'
|
|
202
225
|
# url: /about/#comments
|
|
203
226
|
sitemap:
|
|
204
227
|
# '博客':
|
|
@@ -443,7 +466,7 @@ style:
|
|
|
443
466
|
underline: true # true / false
|
|
444
467
|
animated_avatar:
|
|
445
468
|
animate: auto # auto, always
|
|
446
|
-
background: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
469
|
+
background: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/avatar/round/rainbow64@3x.webp
|
|
447
470
|
codeblock:
|
|
448
471
|
scrollbar: 4px
|
|
449
472
|
highlightjs_theme: https://gcore.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/styles/atom-one-dark.min.css
|
|
@@ -455,12 +478,13 @@ style:
|
|
|
455
478
|
search: 'linear-gradient(to right, #04F3FF, #08FFC6, #DDF730, #FFBD19, #FF1FE0, #C418FF, #04F3FF)'
|
|
456
479
|
|
|
457
480
|
default:
|
|
458
|
-
avatar: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
459
|
-
link: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
460
|
-
cover: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
461
|
-
image: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
462
|
-
project: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
463
|
-
banner: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
481
|
+
avatar: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/avatar/round/3442075.svg
|
|
482
|
+
link: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/link/8f277b4ee0ecd.svg
|
|
483
|
+
cover: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/cover/76b86c0226ffd.svg
|
|
484
|
+
image: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/image/2659360.svg
|
|
485
|
+
project: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/image/2779789.png
|
|
486
|
+
banner: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/banner/books.jpg
|
|
487
|
+
topic: https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/image/10433048.png
|
|
464
488
|
|
|
465
489
|
api_host:
|
|
466
490
|
ghapi: https://api.github.com
|
package/languages/en.yml
CHANGED
|
@@ -2,6 +2,7 @@ btn:
|
|
|
2
2
|
home: Home
|
|
3
3
|
blog: Blog
|
|
4
4
|
wiki: Wiki
|
|
5
|
+
topic: Topic
|
|
5
6
|
recent_publish: Recent
|
|
6
7
|
all_wiki: All Products
|
|
7
8
|
category: Category
|
|
@@ -23,7 +24,7 @@ meta:
|
|
|
23
24
|
related_posts: Related Posts
|
|
24
25
|
comment_title: Join the discussion
|
|
25
26
|
back_to_top: Back to top
|
|
26
|
-
more:
|
|
27
|
+
more: More
|
|
27
28
|
created_author: '%s posted on'
|
|
28
29
|
created: 'Posted on'
|
|
29
30
|
updated: 'Updated on'
|
package/languages/zh-CN.yml
CHANGED
|
@@ -2,6 +2,7 @@ btn:
|
|
|
2
2
|
home: 主页
|
|
3
3
|
blog: 文章
|
|
4
4
|
wiki: 项目
|
|
5
|
+
topic: 专栏
|
|
5
6
|
recent_publish: 近期发布
|
|
6
7
|
all_wiki: 所有项目
|
|
7
8
|
category: 分类
|
|
@@ -23,7 +24,7 @@ meta:
|
|
|
23
24
|
related_posts: 您可能感兴趣的文章
|
|
24
25
|
comment_title: 快来参与讨论吧
|
|
25
26
|
back_to_top: 回到顶部
|
|
26
|
-
more:
|
|
27
|
+
more: 更多
|
|
27
28
|
created_author: 本文由 %s 发布于
|
|
28
29
|
created: 发布于
|
|
29
30
|
updated: 更新于
|
package/languages/zh-TW.yml
CHANGED
|
@@ -2,6 +2,7 @@ btn:
|
|
|
2
2
|
home: 首頁
|
|
3
3
|
blog: 網誌
|
|
4
4
|
wiki: Wiki
|
|
5
|
+
topic: 專欄
|
|
5
6
|
recent_publish: 近期發布
|
|
6
7
|
all_wiki: 所有 Wiki
|
|
7
8
|
category: 分類
|
|
@@ -23,7 +24,7 @@ meta:
|
|
|
23
24
|
related_posts: 您可能感興趣的文章
|
|
24
25
|
comment_title: 參與討論
|
|
25
26
|
back_to_top: 回到頁首
|
|
26
|
-
more:
|
|
27
|
+
more: 更多
|
|
27
28
|
created_author: 本文由 %s 發布於
|
|
28
29
|
created: 發布於
|
|
29
30
|
updated: 更新於
|
package/layout/404.ejs
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
<%
|
|
2
|
-
page.menu_id = '404';
|
|
3
|
-
page.layout = '404';
|
|
4
2
|
page.comment_title = '';
|
|
5
3
|
page.header = 'auto';
|
|
6
4
|
page.robots = 'none';
|
|
7
5
|
%>
|
|
8
6
|
<article class='md-text error-page'>
|
|
9
|
-
<h1><img id='error' src='https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
7
|
+
<h1><img id='error' src='https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/404/1c830bfcd517d.svg' alt='404'></h1>
|
|
10
8
|
<p class='what'>
|
|
11
9
|
<strong>
|
|
12
10
|
<%- __('page.error.what') %>
|
package/layout/_partial/head.ejs
CHANGED
|
@@ -26,7 +26,7 @@ function generate_description() {
|
|
|
26
26
|
if (theme.open_graph && theme.open_graph.enable) {
|
|
27
27
|
return '';
|
|
28
28
|
}
|
|
29
|
-
if (page.
|
|
29
|
+
if (page.wiki) {
|
|
30
30
|
let proj = theme.wiki.tree[page.wiki];
|
|
31
31
|
if (proj && proj.description) {
|
|
32
32
|
return '<meta name="description" content="' + proj.description + '">';
|
|
@@ -38,11 +38,7 @@ function layoutDiv() {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
var license = ''
|
|
41
|
-
if (page.
|
|
42
|
-
if (theme.article.license && (page.license != false)) {
|
|
43
|
-
license = page.license || theme.article.license
|
|
44
|
-
}
|
|
45
|
-
} else if (page.layout == 'wiki' && page.wiki) {
|
|
41
|
+
if (page.wiki) {
|
|
46
42
|
let proj = theme.wiki.tree[page.wiki]
|
|
47
43
|
if (page.license != null) {
|
|
48
44
|
license = page.license || theme.article.license
|
|
@@ -53,6 +49,10 @@ function layoutDiv() {
|
|
|
53
49
|
license = proj.license
|
|
54
50
|
}
|
|
55
51
|
}
|
|
52
|
+
} else if (page.layout == 'post') {
|
|
53
|
+
if (theme.article.license && (page.license != false)) {
|
|
54
|
+
license = page.license || theme.article.license
|
|
55
|
+
}
|
|
56
56
|
}
|
|
57
57
|
if (license.length > 0) {
|
|
58
58
|
var author = null
|
|
@@ -75,15 +75,15 @@ function layoutDiv() {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
var showSharePlugin = false
|
|
78
|
-
if (page.
|
|
79
|
-
showSharePlugin = page.share != false
|
|
80
|
-
} else if (page.layout == 'wiki' && page.wiki) {
|
|
78
|
+
if (page.wiki) {
|
|
81
79
|
let proj = theme.wiki.tree[page.wiki]
|
|
82
80
|
if (page.share != null) {
|
|
83
81
|
showSharePlugin = page.share == true
|
|
84
82
|
} else if (proj != null) {
|
|
85
83
|
showSharePlugin = proj.share == true
|
|
86
84
|
}
|
|
85
|
+
} else if (page.layout == 'post') {
|
|
86
|
+
showSharePlugin = page.share != false
|
|
87
87
|
}
|
|
88
88
|
if (theme.article.share && showSharePlugin) {
|
|
89
89
|
function socialButtons() {
|
|
@@ -101,8 +101,8 @@ function layoutDiv() {
|
|
|
101
101
|
el += '&title=' + (page.seo_title || (page.title + ' - ' + config.title));
|
|
102
102
|
if (page.layout == 'post' && page.cover) {
|
|
103
103
|
el += '&pics=' + page.cover;
|
|
104
|
-
} else if (page.layout == 'wiki' && page.
|
|
105
|
-
el += '&pics=' + page.
|
|
104
|
+
} else if (page.layout == 'wiki' && page.icon) {
|
|
105
|
+
el += '&pics=' + page.icon;
|
|
106
106
|
}
|
|
107
107
|
el += '&summary=' + truncate(page.description || strip_html(page.excerpt || page.content), {length: 120});
|
|
108
108
|
el += '"';
|
|
@@ -114,13 +114,13 @@ function layoutDiv() {
|
|
|
114
114
|
}
|
|
115
115
|
el += '>';
|
|
116
116
|
if (item == 'wechat') {
|
|
117
|
-
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
117
|
+
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/b32ef3da1162a.svg"/>';
|
|
118
118
|
} else if (item == 'weibo') {
|
|
119
|
-
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
119
|
+
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/80c07e4dbb303.svg"/>';
|
|
120
120
|
} else if (item == 'email') {
|
|
121
|
-
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
121
|
+
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/a1b00e20f425d.svg"/>';
|
|
122
122
|
} else if (item == 'link') {
|
|
123
|
-
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
123
|
+
el += '<img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/social/8411ed322ced6.svg"/>';
|
|
124
124
|
}
|
|
125
125
|
el += '</a>';
|
|
126
126
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<%
|
|
2
2
|
function layoutDiv() {
|
|
3
|
-
var prev,next
|
|
4
|
-
var title = __('meta.read_next')
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (page.layout === 'post') {
|
|
8
|
-
prev = page.prev
|
|
9
|
-
next = page.next
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
var prev,next
|
|
4
|
+
var title = __('meta.read_next')
|
|
5
|
+
title_prev = __('meta.newer')
|
|
6
|
+
title_next = __('meta.older')
|
|
7
|
+
if (page.layout === 'post' || page.layout === 'topic') {
|
|
8
|
+
prev = page.prev
|
|
9
|
+
next = page.next
|
|
10
|
+
} else if (page.layout === 'wiki' && page.wiki?.length > 0) {
|
|
11
|
+
var title_prev = __('meta.prev');
|
|
12
|
+
var title_next = __('meta.next');
|
|
13
13
|
let proj = theme.wiki.tree[page.wiki];
|
|
14
14
|
if (proj) {
|
|
15
15
|
let ps = proj.pages?.filter(p => p.path == page.path)
|
|
@@ -5,15 +5,6 @@ function layoutDiv() {
|
|
|
5
5
|
return el;
|
|
6
6
|
}
|
|
7
7
|
var home_title = __("btn.home");
|
|
8
|
-
if (theme.breadcrumb && theme.breadcrumb.home) {
|
|
9
|
-
if (theme.breadcrumb.home === 'config.title') {
|
|
10
|
-
home_title = config.title;
|
|
11
|
-
} else if (theme.breadcrumb.home === 'config.author') {
|
|
12
|
-
home_title = config.author;
|
|
13
|
-
} else if (theme.breadcrumb.home !== 'home') {
|
|
14
|
-
home_title = theme.breadcrumb.home;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
8
|
if (page.layout === "post") {
|
|
18
9
|
var firstCat = "";
|
|
19
10
|
if (page.categories && page.categories.length > 0) {
|
|
@@ -63,7 +54,38 @@ function layoutDiv() {
|
|
|
63
54
|
|
|
64
55
|
el += '</div>';
|
|
65
56
|
el += '</div>';
|
|
66
|
-
} else if (page.layout ===
|
|
57
|
+
} else if (page.layout === 'topic' && page.topic?.length > 0) {
|
|
58
|
+
el += '<div class="bread-nav fs12">';
|
|
59
|
+
el += '<div class="left">';
|
|
60
|
+
el += '<div id="breadcrumb">';
|
|
61
|
+
var nodes = [];
|
|
62
|
+
// home
|
|
63
|
+
el += '<a class="cap breadcrumb" id="home" href="' + url_for(config.root) + '">' + home_title + '</a>';
|
|
64
|
+
nodes.push('/');
|
|
65
|
+
// menu_id
|
|
66
|
+
el += '<span class="sep"></span>';
|
|
67
|
+
let url = url_for(theme.site_tree.topic.base_dir);
|
|
68
|
+
nodes.push(url);
|
|
69
|
+
el += '<a class="cap breadcrumb" id="menu" href="' + url + '">' + __("btn.topic") + '</a>';
|
|
70
|
+
// 专栏名
|
|
71
|
+
let topicObject = theme.topic.tree[page.topic];
|
|
72
|
+
if (topicObject != null) {
|
|
73
|
+
let url_proj = url_for(topicObject.homepage?.path);
|
|
74
|
+
if (nodes.includes(url_proj) === false) {
|
|
75
|
+
el += '<span class="sep"></span>';
|
|
76
|
+
el += '<a class="cap breadcrumb" id="proj" href="' + url_proj + '">' + (topicObject.name || topicObject.title) + '</a>';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
el += '</div>';
|
|
80
|
+
// 更新日期
|
|
81
|
+
el += '<div id="post-meta">';
|
|
82
|
+
el += `
|
|
83
|
+
<span>${__("meta.updated")} <time datetime="${date_xml(page.updated)}">${date(page.updated, config.date_format)}</time></span>
|
|
84
|
+
`;
|
|
85
|
+
el += '</div>';
|
|
86
|
+
el += '</div>';
|
|
87
|
+
el += '</div>';
|
|
88
|
+
} else if (page.layout === "wiki" && page.wiki?.length > 0) {
|
|
67
89
|
el += '<div class="bread-nav fs12">';
|
|
68
90
|
el += '<div class="left">';
|
|
69
91
|
el += '<div id="breadcrumb">';
|
|
@@ -73,12 +95,12 @@ function layoutDiv() {
|
|
|
73
95
|
nodes.push('/');
|
|
74
96
|
// menu_id
|
|
75
97
|
el += '<span class="sep"></span>';
|
|
76
|
-
if (page.menu_id && theme.
|
|
77
|
-
let url = url_for(md_link(theme.
|
|
98
|
+
if (page.menu_id && theme.menu[page.menu_id] && md_link(theme.menu[page.menu_id])) {
|
|
99
|
+
let url = url_for(md_link(theme.menu[page.menu_id]));
|
|
78
100
|
nodes.push(url);
|
|
79
|
-
el += '<a class="cap breadcrumb" id="menu" href="' + url + '">' + __(md_text(theme.
|
|
101
|
+
el += '<a class="cap breadcrumb" id="menu" href="' + url + '">' + __(md_text(theme.menu[page.menu_id])) + '</a>';
|
|
80
102
|
} else {
|
|
81
|
-
let url = url_for(
|
|
103
|
+
let url = url_for(theme.site_tree.wiki.base_dir);
|
|
82
104
|
nodes.push(url);
|
|
83
105
|
el += '<a class="cap breadcrumb" id="menu" href="' + url + '">' + __("btn.wiki") + '</a>';
|
|
84
106
|
}
|
|
@@ -29,6 +29,14 @@ function layoutDiv() {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
if (theme.topic?.publish_list?.length > 0) {
|
|
33
|
+
if (page.layout == 'index_topic') {
|
|
34
|
+
el += '<a class="active" href="' + url_for(theme.site_tree.topic.base_dir) + '">' + __("btn.topic") + '</a>';
|
|
35
|
+
} else {
|
|
36
|
+
el += '<a href="' + url_for(theme.site_tree.topic.base_dir) + '">' + __("btn.topic") + '</a>';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
32
40
|
if (site.posts && site.posts.length > 0) {
|
|
33
41
|
if (is_archive()) {
|
|
34
42
|
el += '<a class="active" href="' + url_for(config.archive_dir) + '">' + __("btn.archives") + '</a>';
|
|
@@ -37,15 +45,15 @@ function layoutDiv() {
|
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
47
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
for (let key of Object.keys(
|
|
48
|
+
const { nav_tabs } = theme.site_tree.blog
|
|
49
|
+
if (nav_tabs) {
|
|
50
|
+
for (let key of Object.keys(nav_tabs)) {
|
|
43
51
|
// 当 page 的末尾为 index.html 或者处于该 page 的某个子页面时也应该匹配
|
|
44
|
-
// if (full_url_for(page.path) == full_url_for(
|
|
45
|
-
if (full_url_for(page.path).startsWith(full_url_for(
|
|
46
|
-
el += '<a class="active" href="' + url_for(
|
|
52
|
+
// if (full_url_for(page.path) == full_url_for(nav_tabs[key])) {
|
|
53
|
+
if (full_url_for(page.path).startsWith(full_url_for(nav_tabs[key]))){
|
|
54
|
+
el += '<a class="active" href="' + url_for(nav_tabs[key]) + '">' + key + '</a>';
|
|
47
55
|
} else {
|
|
48
|
-
el += '<a href="' + url_for(
|
|
56
|
+
el += '<a href="' + url_for(nav_tabs[key]) + '">' + key + '</a>';
|
|
49
57
|
}
|
|
50
58
|
}
|
|
51
59
|
}
|
|
@@ -8,7 +8,7 @@ function layoutDiv() {
|
|
|
8
8
|
if (page.filter === false) {
|
|
9
9
|
el += ' class="active"';
|
|
10
10
|
}
|
|
11
|
-
el += ' href="' + url_for(
|
|
11
|
+
el += ' href="' + url_for(theme.site_tree.wiki.base_dir) + '">' + __("btn.all_wiki") + '</a>';
|
|
12
12
|
el += '</a>';
|
|
13
13
|
// 项目分类
|
|
14
14
|
const { shelf, all_tags } = theme.wiki;
|
|
@@ -24,6 +24,20 @@ function layoutDiv() {
|
|
|
24
24
|
el += '</a>';
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
const { nav_tabs } = theme.site_tree.wiki
|
|
29
|
+
if (nav_tabs) {
|
|
30
|
+
for (let key of Object.keys(nav_tabs)) {
|
|
31
|
+
// 当 page 的末尾为 index.html 或者处于该 page 的某个子页面时也应该匹配
|
|
32
|
+
// if (full_url_for(page.path) == full_url_for(nav_tabs[key])) {
|
|
33
|
+
if (full_url_for(page.path).startsWith(full_url_for(nav_tabs[key]))){
|
|
34
|
+
el += '<a class="active" href="' + url_for(nav_tabs[key]) + '">' + key + '</a>';
|
|
35
|
+
} else {
|
|
36
|
+
el += '<a href="' + url_for(nav_tabs[key]) + '">' + key + '</a>';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
27
41
|
el += '</nav>';
|
|
28
42
|
el += '</div>';
|
|
29
43
|
return el;
|
|
@@ -69,18 +69,7 @@ function div_default() {
|
|
|
69
69
|
// meta
|
|
70
70
|
el += '<div class="meta cap">';
|
|
71
71
|
el += '<span class="cap" id="post-meta">';
|
|
72
|
-
|
|
73
|
-
var author = null
|
|
74
|
-
if (theme.authors) {
|
|
75
|
-
if (page.author?.length > 0 && theme.authors[page.author] != null) {
|
|
76
|
-
author = theme.authors[page.author]
|
|
77
|
-
} else {
|
|
78
|
-
author = theme.default_author
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (author) {
|
|
82
|
-
el += author.name + ' '
|
|
83
|
-
}
|
|
72
|
+
|
|
84
73
|
// time
|
|
85
74
|
el += __("meta.created") + ' ' + '<time datetime="' + date_xml(post.date) + '">' + date(post.date, config.date_format) + '</time>';
|
|
86
75
|
el += '</span>';
|
|
@@ -102,7 +91,7 @@ function div_default() {
|
|
|
102
91
|
}
|
|
103
92
|
}
|
|
104
93
|
if (post.pin) {
|
|
105
|
-
el += '<span class="pin"><img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.
|
|
94
|
+
el += '<span class="pin"><img src="https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/badge/3279dd441df8b.svg"/></span>';
|
|
106
95
|
}
|
|
107
96
|
el += '</div>';
|
|
108
97
|
el += '</article>';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<%
|
|
2
|
+
function layoutDiv() {
|
|
3
|
+
var el = '';
|
|
4
|
+
el += '<article class="md-text">';
|
|
5
|
+
el += `<div class="preview"><img src="${topic.icon ? topic.icon : theme.default.topic}"/></div>`
|
|
6
|
+
el += '<div class="excerpt">';
|
|
7
|
+
el += '<h2 class="post-title">' + (topic.title || topic.name) + '</h2>';
|
|
8
|
+
if (topic.description) {
|
|
9
|
+
el += '<p>' + topic.description + '</p>';
|
|
10
|
+
}
|
|
11
|
+
el += '</div>';
|
|
12
|
+
el += '</article>';
|
|
13
|
+
return el;
|
|
14
|
+
}
|
|
15
|
+
%>
|
|
16
|
+
<%- layoutDiv() %>
|
|
@@ -32,19 +32,18 @@ function layoutDiv() {
|
|
|
32
32
|
el += '">';
|
|
33
33
|
|
|
34
34
|
el += '<div class="logo-wrap">';
|
|
35
|
-
if (md_text(theme.
|
|
36
|
-
el += '<a class="avatar" href="' + url_for(md_link(theme.
|
|
35
|
+
if (md_text(theme.logo.avatar)) {
|
|
36
|
+
el += '<a class="avatar" href="' + url_for(md_link(theme.logo.avatar) || "/") + '">';
|
|
37
37
|
if (theme.style.animated_avatar.animate) {
|
|
38
38
|
el += '<div class="bg" style="opacity:0;background-image:url(' + theme.style.animated_avatar.background + ');"></div>';
|
|
39
39
|
}
|
|
40
|
-
el += '<img no-lazy class="avatar" src="' + md_text(theme.
|
|
40
|
+
el += '<img no-lazy class="avatar" src="' + md_text(theme.logo.avatar) + '">';
|
|
41
41
|
el += '</a>';
|
|
42
42
|
}
|
|
43
|
-
let main = md_text(theme.
|
|
43
|
+
let main = md_text(theme.logo.title);
|
|
44
44
|
if (main) {
|
|
45
|
-
let url = md_link(theme.
|
|
46
|
-
|
|
47
|
-
el += layoutTitle(main, url, sub);
|
|
45
|
+
let url = md_link(theme.logo.title);
|
|
46
|
+
el += layoutTitle(main, url, theme.logo.subtitle);
|
|
48
47
|
}
|
|
49
48
|
el += '</div>';
|
|
50
49
|
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
<%
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (page.sidebar == undefined) {
|
|
8
|
-
if (page.layout == 'post' && page.content) {
|
|
9
|
-
page.sidebar = theme.sidebar.widgets.post;
|
|
10
|
-
} else if (page.layout == 'wiki' && page.wiki) {
|
|
11
|
-
let proj = theme.wiki.tree[page.wiki];
|
|
12
|
-
if (proj?.sidebar) {
|
|
13
|
-
page.sidebar = proj.sidebar;
|
|
14
|
-
} else {
|
|
15
|
-
page.sidebar = theme.sidebar.widgets.wiki;
|
|
16
|
-
}
|
|
17
|
-
} else if (is_home()) {
|
|
18
|
-
page.sidebar = theme.sidebar.widgets.home;
|
|
2
|
+
if (page.sidebar == null) {
|
|
3
|
+
const { site_tree } = theme
|
|
4
|
+
var sidebar
|
|
5
|
+
if (is_home()) {
|
|
6
|
+
sidebar = site_tree.home.sidebar
|
|
19
7
|
} else if (is_category() || is_tag() || is_archive() || ['categories', 'tags', 'archives'].includes(page.layout)) {
|
|
20
|
-
|
|
21
|
-
} else if (
|
|
22
|
-
|
|
23
|
-
} else if (
|
|
24
|
-
|
|
25
|
-
} else if (page.layout
|
|
26
|
-
|
|
8
|
+
sidebar = site_tree.blog.sidebar
|
|
9
|
+
} else if (page.layout === 'index_topic' || page.layout === 'topic') {
|
|
10
|
+
sidebar = site_tree.topic.sidebar
|
|
11
|
+
} else if (page.layout === 'index_wiki' || page.layout === 'wiki') {
|
|
12
|
+
sidebar = site_tree.wiki.sidebar
|
|
13
|
+
} else if (page.layout === '404') {
|
|
14
|
+
sidebar = site_tree.error_page.sidebar
|
|
15
|
+
} else if (page.layout === 'page') {
|
|
16
|
+
sidebar = site_tree.page.sidebar
|
|
17
|
+
} else if (page.layout === 'post') {
|
|
18
|
+
sidebar = site_tree.post.sidebar
|
|
19
|
+
} else if (page.layout == null) {
|
|
20
|
+
sidebar = site_tree.page.sidebar
|
|
27
21
|
} else {
|
|
28
|
-
|
|
22
|
+
sidebar = []
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (page.layout === 'topic' && page.topic && theme.topic?.tree[page.topic]?.sidebar) {
|
|
26
|
+
sidebar = theme.topic.tree[page.topic].sidebar
|
|
27
|
+
}
|
|
28
|
+
if (page.layout == 'wiki' && page.wiki && theme.wiki?.tree[page.wiki]?.sidebar) {
|
|
29
|
+
sidebar = theme.wiki.tree[page.wiki].sidebar
|
|
29
30
|
}
|
|
31
|
+
|
|
32
|
+
page.sidebar = sidebar
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
// parse array string
|
|
@@ -51,21 +54,25 @@ function layoutTitle(main, url, sub) {
|
|
|
51
54
|
}
|
|
52
55
|
function layoutWidgets() {
|
|
53
56
|
var el = '';
|
|
57
|
+
var proj;
|
|
58
|
+
if (page.layout === 'wiki' && page.wiki) {
|
|
59
|
+
proj = theme.wiki.tree[page.wiki];
|
|
60
|
+
}
|
|
54
61
|
el += '<div class="widgets">';
|
|
55
62
|
if (page.layout == 'wiki' && proj && page.menu_id == 'wiki') {
|
|
56
63
|
el += '<widget class="widget-wrapper logo-wrap wiki"><div class="widget-body">';
|
|
57
64
|
// all products
|
|
58
|
-
el += '<a style="filter: grayscale(100%)" class="wiki-home cap" href="' + url_for(
|
|
65
|
+
el += '<a style="filter: grayscale(100%)" class="wiki-home cap" href="' + url_for(theme.site_tree.wiki.base_dir) + '">';
|
|
59
66
|
el += '<svg aria-hidden="true" viewBox="0 0 16 16" width="1.2em" height="1.2em" fill="currentColor"><path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path></svg>';
|
|
60
67
|
el += __('btn.all_wiki');
|
|
61
68
|
el += '</a>';
|
|
62
69
|
// this product
|
|
63
70
|
if (proj == undefined) {
|
|
64
71
|
// 如果没有项目名,则使用menu中显示的名字
|
|
65
|
-
if (page.menu_id && theme.
|
|
72
|
+
if (page.menu_id && theme.menu[page.menu_id] && md_link(theme.menu[page.menu_id])) {
|
|
66
73
|
proj = {
|
|
67
|
-
path: md_link(theme.
|
|
68
|
-
wiki: __(md_text(theme.
|
|
74
|
+
path: md_link(theme.menu[page.menu_id]),
|
|
75
|
+
wiki: __(md_text(theme.menu[page.menu_id]))
|
|
69
76
|
};
|
|
70
77
|
}
|
|
71
78
|
}
|
|
@@ -134,6 +141,7 @@ function layoutFooterDiv() {
|
|
|
134
141
|
return '';
|
|
135
142
|
}
|
|
136
143
|
}
|
|
144
|
+
|
|
137
145
|
%>
|
|
138
146
|
<% if (page.header == undefined || page.header == 'left' || page.header == 'auto') { %>
|
|
139
147
|
<%- partial('header', {where: 'sidebar'}) %>
|