Merge remote-tracking branch 'roozen/main'
This commit is contained in:
commit
1f14be09dc
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "halo-theme-hao",
|
"name": "halo-theme-hao",
|
||||||
"version": "1.1.6",
|
"version": "1.2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,6 +107,7 @@ spec:
|
||||||
bikan:
|
bikan:
|
||||||
remen:
|
remen:
|
||||||
shiyong:
|
shiyong:
|
||||||
|
techStack:
|
||||||
children:
|
children:
|
||||||
- $formkit: select
|
- $formkit: select
|
||||||
name: bannersBackground
|
name: bannersBackground
|
||||||
|
@ -117,7 +118,22 @@ spec:
|
||||||
value: default
|
value: default
|
||||||
- label: 个人技术栈
|
- label: 个人技术栈
|
||||||
value: techStack
|
value: techStack
|
||||||
help: 自定义技术栈需要在【个人】中配置
|
- $formkit: repeater
|
||||||
|
name: techStack
|
||||||
|
label: 个人技术栈
|
||||||
|
value: [ ]
|
||||||
|
children:
|
||||||
|
- $formkit: text
|
||||||
|
name: name
|
||||||
|
label: 名称
|
||||||
|
placeholder: 请输入名称
|
||||||
|
- $formkit: attachment
|
||||||
|
name: url
|
||||||
|
label: 路径
|
||||||
|
placeholder: 请输入图标路径
|
||||||
|
- $formkit: color
|
||||||
|
name: background
|
||||||
|
label: 背景色
|
||||||
- $formkit: textarea
|
- $formkit: textarea
|
||||||
name: bannersTitleBig
|
name: bannersTitleBig
|
||||||
label: 大标题
|
label: 大标题
|
||||||
|
@ -839,26 +855,29 @@ spec:
|
||||||
- $formkit: repeater
|
- $formkit: repeater
|
||||||
name: bdageitem
|
name: bdageitem
|
||||||
label: 徽标配置项
|
label: 徽标配置项
|
||||||
value: []
|
value:
|
||||||
|
- link: "https://halo.run/"
|
||||||
|
shields: "https://npm.elemecdn.com/hao-theme-static@1.2.0/templates/images/Frame-Halo-blue.svg"
|
||||||
|
message: "博客框架为halo2.x"
|
||||||
children:
|
children:
|
||||||
- $formkit: url
|
- $formkit: url
|
||||||
name: link
|
name: link
|
||||||
label: 链接
|
label: 链接
|
||||||
placeholder: 请输入内容
|
placeholder: 请输入内容
|
||||||
value: "https://hexo.io/"
|
value: "https://halo.run/"
|
||||||
validation: required
|
validation: required
|
||||||
- $formkit: attachment
|
- $formkit: attachment
|
||||||
name: shields
|
name: shields
|
||||||
label: 徽标
|
label: 徽标
|
||||||
placeholder: 请输入内容
|
placeholder: 请输入内容
|
||||||
validation: required
|
validation: required
|
||||||
value: "https://npm.elemecdn.com/anzhiyu-blog@2.1.5/img/badge/Frame-Hexo.svg"
|
value: "https://npm.elemecdn.com/hao-theme-static@1.2.0/templates/images/Frame-Halo-blue.svg"
|
||||||
- $formkit: text
|
- $formkit: text
|
||||||
name: message
|
name: message
|
||||||
label: 徽标 title
|
label: 徽标 title
|
||||||
placeholder: 请输入内容
|
placeholder: 请输入内容
|
||||||
validation: required
|
validation: required
|
||||||
value: "博客框架为Hexo_v5.4.0"
|
value: "博客框架为halo2.x"
|
||||||
|
|
||||||
|
|
||||||
- group: post
|
- group: post
|
||||||
|
@ -1080,6 +1099,15 @@ spec:
|
||||||
value: "https://moments.0206.ink/randomfriend"
|
value: "https://moments.0206.ink/randomfriend"
|
||||||
label: 随机访问地址
|
label: 随机访问地址
|
||||||
help: 注意格式 (你的鱼塘token地址 + randomfriend)
|
help: 注意格式 (你的鱼塘token地址 + randomfriend)
|
||||||
|
- $formkit: url
|
||||||
|
name: fcircleUrl
|
||||||
|
value: "/fcircle"
|
||||||
|
label: 鱼塘链接
|
||||||
|
- $formkit: url
|
||||||
|
name: linksUrl
|
||||||
|
value: "/links"
|
||||||
|
label: 友链链接
|
||||||
|
|
||||||
|
|
||||||
- group: fcircle
|
- group: fcircle
|
||||||
label: 友链鱼塘
|
label: 友链鱼塘
|
||||||
|
@ -1088,7 +1116,7 @@ spec:
|
||||||
name: backgroundImg
|
name: backgroundImg
|
||||||
validation: url
|
validation: url
|
||||||
label: 图片
|
label: 图片
|
||||||
value: https://img.cdn.yzczi.com/img/64624940e3623.jpeg
|
value: https://npm.elemecdn.com/hao-theme-static@1.2.0/templates/images/64624940e3623.jpeg
|
||||||
placeholder: 请输入图片地址
|
placeholder: 请输入图片地址
|
||||||
- $formkit: text
|
- $formkit: text
|
||||||
name: smallTitle
|
name: smallTitle
|
||||||
|
@ -1179,23 +1207,6 @@ spec:
|
||||||
name: helloAbout
|
name: helloAbout
|
||||||
label: 我的问候
|
label: 我的问候
|
||||||
value: Hello there!
|
value: Hello there!
|
||||||
- $formkit: repeater
|
|
||||||
name: techStack
|
|
||||||
label: 个人技术栈
|
|
||||||
value: [ ]
|
|
||||||
children:
|
|
||||||
- $formkit: text
|
|
||||||
name: name
|
|
||||||
label: 名称
|
|
||||||
placeholder: 请输入名称
|
|
||||||
- $formkit: url
|
|
||||||
name: url
|
|
||||||
label: 路径
|
|
||||||
placeholder: 请输入图标路径
|
|
||||||
validation: url
|
|
||||||
- $formkit: color
|
|
||||||
name: background
|
|
||||||
label: 背景色
|
|
||||||
- $formkit: group
|
- $formkit: group
|
||||||
name: authorCareers
|
name: authorCareers
|
||||||
label: 职业生涯
|
label: 职业生涯
|
||||||
|
@ -1294,6 +1305,7 @@ spec:
|
||||||
game_title:
|
game_title:
|
||||||
game_uid:
|
game_uid:
|
||||||
game_bg:
|
game_bg:
|
||||||
|
loading_bar:
|
||||||
children:
|
children:
|
||||||
- $formkit: text
|
- $formkit: text
|
||||||
name: game_tips
|
name: game_tips
|
||||||
|
@ -1315,6 +1327,11 @@ spec:
|
||||||
label: 爱好游戏背景
|
label: 爱好游戏背景
|
||||||
placeholder: 请输入内容
|
placeholder: 请输入内容
|
||||||
value: https://img.zhheo.com/i/2022/08/31/630efa7ae39fe.webp
|
value: https://img.zhheo.com/i/2022/08/31/630efa7ae39fe.webp
|
||||||
|
- $formkit: attachment
|
||||||
|
name: loading_bar
|
||||||
|
label: 爱好游戏logo
|
||||||
|
placeholder: 请输入内容
|
||||||
|
value: https://npm.elemecdn.com/hao-theme-static@1.2.0/templates/images/64795eaece0fc.png
|
||||||
- $formkit: group
|
- $formkit: group
|
||||||
name: game2
|
name: game2
|
||||||
label: 爱好游戏 2
|
label: 爱好游戏 2
|
||||||
|
@ -1544,11 +1561,12 @@ spec:
|
||||||
- group: envelope_comment
|
- group: envelope_comment
|
||||||
label: 留言板
|
label: 留言板
|
||||||
formSchema:
|
formSchema:
|
||||||
- $formkit: text
|
- $formkit: textarea
|
||||||
name: title
|
name: title
|
||||||
label: 标题
|
label: 标题
|
||||||
placeholder: 请输入内容
|
placeholder: 请输入内容
|
||||||
value: 留言板
|
value: <div align="center">留言板</div>
|
||||||
|
help: 支持 HTML 语法
|
||||||
- $formkit: group
|
- $formkit: group
|
||||||
name: custom_pic
|
name: custom_pic
|
||||||
label: 信笺图片
|
label: 信笺图片
|
||||||
|
@ -1744,25 +1762,21 @@ spec:
|
||||||
value: false
|
value: false
|
||||||
- $formkit: text
|
- $formkit: text
|
||||||
name: id
|
name: id
|
||||||
if: $get(nav_musicEnable).value
|
|
||||||
label: 音乐的id
|
label: 音乐的id
|
||||||
help: 歌单的id,可以从音乐歌单分享的链接中获取
|
help: 歌单的id,可以从音乐歌单分享的链接中获取
|
||||||
value: "8668419170"
|
value: "8668419170"
|
||||||
- $formkit: text
|
- $formkit: text
|
||||||
name: server
|
name: server
|
||||||
if: $get(nav_musicEnable).value
|
|
||||||
label: 服务
|
label: 服务
|
||||||
help: 歌单的服务商,例如netease(网易云音乐),tencent(腾讯),kugou(酷狗),xiami(小米音乐),baidu(百度音乐)
|
help: 歌单的服务商,例如netease(网易云音乐),tencent(腾讯),kugou(酷狗),xiami(小米音乐),baidu(百度音乐)
|
||||||
value: "tencent"
|
value: "tencent"
|
||||||
- $formkit: url
|
- $formkit: url
|
||||||
name: all_playlist
|
name: all_playlist
|
||||||
if: $get(nav_musicEnable).value
|
|
||||||
label: 播放列表地址
|
label: 播放列表地址
|
||||||
help: 用于右键查看所有歌曲
|
help: 用于右键查看所有歌曲
|
||||||
value: https://y.qq.com/n/ryqq/playlist/8668419170
|
value: https://y.qq.com/n/ryqq/playlist/8668419170
|
||||||
- $formkit: url
|
- $formkit: url
|
||||||
name: meting_api
|
name: meting_api
|
||||||
if: $get(nav_musicEnable).value
|
|
||||||
label: 音乐图片api
|
label: 音乐图片api
|
||||||
value: https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r
|
value: https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r
|
||||||
- $formkit: group
|
- $formkit: group
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -17030,19 +17030,6 @@ span.hexo-douban-pagenum {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading-bar::after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 500px;
|
|
||||||
left: 0;
|
|
||||||
filter: drop-shadow(0 -500px 0 #ece5d8);
|
|
||||||
width: 500px;
|
|
||||||
height: 62.5px;
|
|
||||||
background: url("https://img.cdn.yzczi.com/img/64795eaece0fc.png") no-repeat left 100%;
|
|
||||||
background-size: 500px 62.5px;
|
|
||||||
background-position-x: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.author-content-item.game-lol:hover .loading-bar::after {
|
.author-content-item.game-lol:hover .loading-bar::after {
|
||||||
animation: loading-bar 3.5s cubic-bezier(0.28, 0.11, 0.32, 1) infinite forwards;
|
animation: loading-bar 3.5s cubic-bezier(0.28, 0.11, 0.32, 1) infinite forwards;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,9 @@
|
||||||
</header>
|
</header>
|
||||||
<main class="layout hide-aside" id="content-inner">
|
<main class="layout hide-aside" id="content-inner">
|
||||||
<div id="page">
|
<div id="page">
|
||||||
<h1 >[[${theme.config.envelope_comment.title}]]</h1>
|
<th:block th:if="${not #strings.isEmpty(theme.config.envelope_comment.title)}"
|
||||||
|
th:utext="${theme.config.envelope_comment.title}">
|
||||||
|
</th:block>
|
||||||
<div id="article-container">
|
<div id="article-container">
|
||||||
<style>
|
<style>
|
||||||
@media screen and (max-width:600px) {
|
@media screen and (max-width:600px) {
|
||||||
|
@ -136,23 +138,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<!-- 评论模块 -->
|
<!--/* 评论组件 */-->
|
||||||
<th:block
|
<th:block
|
||||||
th:if="${theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
kind = 'SinglePage',
|
||||||
</th:block>
|
name = ${singlePage.metadata.name})}"/>
|
||||||
<div id="post-comment"
|
|
||||||
th:if="${pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
|
||||||
<div class="comment-head">
|
|
||||||
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
|
||||||
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
|
||||||
<div class="comment-tips" id="comment-tips">
|
|
||||||
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<halo:comment group="content.halo.run" kind="SinglePage"
|
|
||||||
th:attr="name=${singlePage.metadata.name}" colorScheme="document.documentElement.getAttribute('data-theme')" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,9 @@
|
||||||
href="javascript:fetchRandomPost();"><i
|
href="javascript:fetchRandomPost();"><i
|
||||||
class="haofont hao-icon-arrow-rotate-right"></i></a>
|
class="haofont hao-icon-arrow-rotate-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="title-h2-a-right"><a class="random-post-all" href="/links">全部友链</a></div>
|
<div th:if="${not #strings.isEmpty(theme.config.link.linksUrl)}" class="title-h2-a-right">
|
||||||
|
<a class="random-post-all" th:href="${theme.config.link.linksUrl}">全部友链</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="random-post"></div>
|
<div id="random-post"></div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
|
@ -11,165 +11,14 @@
|
||||||
</header>
|
</header>
|
||||||
<main class="layout hide-aside" id="content-inner">
|
<main class="layout hide-aside" id="content-inner">
|
||||||
<div id="page">
|
<div id="page">
|
||||||
<div class="flink" id="banners">
|
<th:block th:replace="~{macro/content-links :: content-links(${htmlType})}" />
|
||||||
<div class="banners-title">
|
|
||||||
<div class="banners-title-small">[[${theme.config.link.smallTitle}]]</div>
|
|
||||||
<div class="banners-title-big">[[${theme.config.link.bigTitle}]]</div>
|
|
||||||
</div>
|
|
||||||
<div class="banner-button-group">
|
|
||||||
<a class="banner-button secondary" data-pjax-state="" onclick="travelling()">
|
|
||||||
<i class="haofont hao-icon-paper-plane1"></i>
|
|
||||||
<span class="banner-button-text">随机访问</span>
|
|
||||||
</a>
|
|
||||||
<a class="banner-button" href="#post-comment" rel="external nofollow">
|
|
||||||
<i class="iconfont icon-link"></i>
|
|
||||||
<span class="banner-button-text">申请友链</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="tags-group-all nowrapMove">
|
|
||||||
<div class="tags-group-wrapper">
|
|
||||||
<th:block th:each="group : ${groups}">
|
|
||||||
<th:block th:each="link,iterStat : ${group.links}" th:if="${group.links.size > 2}">
|
|
||||||
<div class="tags-group-icon-pair" th:if="${iterStat.even}">
|
|
||||||
<a class="tags-group-icon" target="_blank"
|
|
||||||
th:href="${linkOdd.spec.url}"
|
|
||||||
th:title="${linkOdd.spec.displayName}"
|
|
||||||
th:with="linkOdd = ${group.links.get(iterStat.index - 1)}">
|
|
||||||
<img th:src="@{${linkOdd.spec.logo}}"
|
|
||||||
th:title="${linkOdd.spec.displayName}">
|
|
||||||
</a>
|
|
||||||
<a class="tags-group-icon" target="_blank"
|
|
||||||
th:href="${linkEven.spec.url}"
|
|
||||||
th:title="${linkEven.spec.displayName}"
|
|
||||||
th:with="linkEven = ${link}">
|
|
||||||
<img th:src="@{${linkEven.spec.logo}}"
|
|
||||||
th:title="${linkEven.spec.displayName}">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--钓鱼-->
|
|
||||||
<th:block th:if="${not #lists.isEmpty(groups) && theme.config.fcircle.linksRandomFriendsEnable}" >
|
|
||||||
<div class="title-h2-a">
|
|
||||||
<div class="title-h2-a-left">
|
|
||||||
<h2 style="padding-top:0;margin:.6rem 0 .6rem">🎣 钓鱼</h2><a class="random-post-start"
|
|
||||||
href="javascript:fetchRandomPost();"><i class="haofont hao-icon-arrow-rotate-right"></i></a>
|
|
||||||
</div>
|
|
||||||
<div class="title-h2-a-right"><a class="random-post-all" href="/fcircle" data-pjax-state="">查看鱼塘</a></div>
|
|
||||||
</div>
|
|
||||||
<div id="random-post"></div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
var fdataUser = {
|
|
||||||
apiurl: [[${theme.config.fcircle.apiurl}]],
|
|
||||||
defaultFish: 500,
|
|
||||||
hungryFish: 500,
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<script th:src="${assets_link + '/libs/moments/random-friends-post.js'}"></script>
|
|
||||||
</th:block>
|
|
||||||
|
|
||||||
<div class="flink" id="article-container">
|
|
||||||
|
|
||||||
<th:block th:each="group,iterStat : ${groups}">
|
|
||||||
|
|
||||||
<h2 th:if="${not #lists.isEmpty(group.spec.displayName)}">
|
|
||||||
<a class="headerlink" th:href="'#'+${group.spec.displayName}+'-'+${group.links.size}" th:title="${group.spec.displayName}+ '('+${group.links.size}+')'"></a>
|
|
||||||
[[${group.spec.displayName}]] ([[${group.links.size}]])
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="flink-desc">[[${group.spec.description}]]</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 第一个,使用卡片展示 -->
|
|
||||||
<div th:if="${#strings.equals(group.spec.displayStyle,'beautify') && not #lists.isEmpty(group.spec.displayStyle)}" class="site-card-group" >
|
|
||||||
<div class="site-card" th:each="link : ${group.links}">
|
|
||||||
<span th:if="${not #lists.isEmpty(link.spec.label)}" th:style="'background-color:' + ${link.spec.labelColor}" class="site-card-tag">[[${link.spec.label}]]</span>
|
|
||||||
<a class="img" target="_blank" th:href="${link.spec.url}"
|
|
||||||
th:title="${link.spec.displayName}">
|
|
||||||
<img class="flink-avatar" style="pointer-events: none;"
|
|
||||||
th:alt="${link.spec.displayName}" th:src="@{${#strings.isEmpty(link.spec.siteshot) ? link.spec.logo : link.spec.siteshot}}">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="info cf-friends-link" target="_blank" th:href="${link.spec.url}"
|
|
||||||
th:title="${link.spec.displayName}">
|
|
||||||
<div class="site-card-avatar">
|
|
||||||
<img class="flink-avatar cf-friends-avatar"
|
|
||||||
th:alt="${link.spec.displayName}" th:src="${link.spec.logo}">
|
|
||||||
</div>
|
|
||||||
<div class="site-card-text">
|
|
||||||
<span class="title cf-friends-name" th:text="${link.spec.displayName}"></span>
|
|
||||||
<span class="desc" th:text="${link.spec.description}"
|
|
||||||
th:title="${link.spec.description}"></span>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flink-list" th:if="${#strings.equals(group.spec.displayStyle,'default') && not #lists.isEmpty(group.spec.displayStyle)}">
|
|
||||||
<div class="flink-list-item" th:each="link : ${group.links}">
|
|
||||||
<span th:if="${not #lists.isEmpty(link.spec.label)}" th:style="'background-color:' + ${link.spec.labelColor}" class="site-card-tag">[[${link.spec.label}]]</span>
|
|
||||||
<a class="cf-friends-link" rel="external nofollow"
|
|
||||||
target="_blank"
|
|
||||||
th:href="${link.spec.url}"
|
|
||||||
th:title="${link.spec.displayName}">
|
|
||||||
<img class="flink-avatar cf-friends-avatar"
|
|
||||||
th:alt="${link.spec.displayName}"
|
|
||||||
th:src="${link.spec.logo}">
|
|
||||||
<div class="flink-item-info">
|
|
||||||
<span class="flink-item-name cf-friends-name"
|
|
||||||
th:text="${link.spec.displayName}"></span>
|
|
||||||
<span class="flink-item-desc" th:text="${link.spec.description}"
|
|
||||||
th:title="${link.spec.description}"></span>
|
|
||||||
<img th:src="${link.spec.logo}"
|
|
||||||
class="entered loaded">
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flink-list mini" th:if="${#strings.equals(group.spec.displayStyle,'deprecated') && not #lists.isEmpty(group.spec.displayStyle)}">
|
|
||||||
<div class="flink-list-item" th:each="link : ${group.links}">
|
|
||||||
<a class="cf-friends-link" rel="external nofollow"
|
|
||||||
target="_blank"
|
|
||||||
th:href="${link.spec.url}"
|
|
||||||
th:title="${link.spec.displayName}">
|
|
||||||
<img class="flink-avatar cf-friends-avatar entered loaded"
|
|
||||||
th:src="${link.spec.logo}"
|
|
||||||
th:alt="${link.spec.displayName}">
|
|
||||||
<div class="img-alt is-center">[[${link.spec.displayName}]]</div>
|
|
||||||
<div class="flink-item-info">
|
|
||||||
<span class="flink-item-name cf-friends-name">[[${link.spec.displayName}]]</span>
|
|
||||||
<span class="flink-item-desc" th:title="${link.spec.description}">[[${link.spec.description}]]</span>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</th:block>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<!-- 评论模块 -->
|
<!--/* 评论组件 */-->
|
||||||
<th:block th:if="${theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
<th:block
|
||||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
</th:block>
|
kind = 'SinglePage',
|
||||||
<div id="post-comment" th:if="${pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
name = 'links')}"/>
|
||||||
<div class="comment-head">
|
|
||||||
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
|
||||||
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
|
||||||
<div class="comment-tips" id="comment-tips">
|
|
||||||
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<halo:comment group="content.halo.run" kind="SinglePage" th:attr="name='links'" colorScheme="document.documentElement.getAttribute('data-theme')" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
<th:block th:fragment="content-links(htmlType)">
|
||||||
|
|
||||||
|
<th:block th:with="groups = ${linkFinder.groupBy()}">
|
||||||
|
<div class="flink" id="banners">
|
||||||
|
<div class="banners-title">
|
||||||
|
<div class="banners-title-small">[[${theme.config.link.smallTitle}]]</div>
|
||||||
|
<div class="banners-title-big">[[${theme.config.link.bigTitle}]]</div>
|
||||||
|
</div>
|
||||||
|
<div class="banner-button-group">
|
||||||
|
<a class="banner-button secondary" data-pjax-state="" onclick="travelling()">
|
||||||
|
<i class="haofont hao-icon-paper-plane1"></i>
|
||||||
|
<span class="banner-button-text">随机访问</span>
|
||||||
|
</a>
|
||||||
|
<a class="banner-button" href="#post-comment" rel="external nofollow">
|
||||||
|
<i class="iconfont icon-link"></i>
|
||||||
|
<span class="banner-button-text">申请友链</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="tags-group-all nowrapMove">
|
||||||
|
<div class="tags-group-wrapper">
|
||||||
|
<th:block th:each="group : ${groups}">
|
||||||
|
<th:block th:each="link,iterStat : ${group.links}" th:if="${group.links.size > 2}">
|
||||||
|
<div class="tags-group-icon-pair" th:if="${iterStat.even}">
|
||||||
|
<a class="tags-group-icon" target="_blank" th:href="${linkOdd.spec.url}"
|
||||||
|
th:title="${linkOdd.spec.displayName}"
|
||||||
|
th:with="linkOdd = ${group.links.get(iterStat.index - 1)}">
|
||||||
|
<img th:src="@{${linkOdd.spec.logo}}" th:title="${linkOdd.spec.displayName}">
|
||||||
|
</a>
|
||||||
|
<a class="tags-group-icon" target="_blank" th:href="${linkEven.spec.url}"
|
||||||
|
th:title="${linkEven.spec.displayName}" th:with="linkEven = ${link}">
|
||||||
|
<img th:src="@{${linkEven.spec.logo}}" th:title="${linkEven.spec.displayName}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--钓鱼-->
|
||||||
|
<th:block th:if="${not #lists.isEmpty(groups) && theme.config.fcircle.linksRandomFriendsEnable}">
|
||||||
|
<div class="title-h2-a">
|
||||||
|
<div class="title-h2-a-left">
|
||||||
|
<h2 style="padding-top:0;margin:.6rem 0 .6rem">🎣 钓鱼</h2>
|
||||||
|
<a class="random-post-start" href="javascript:fetchRandomPost();">
|
||||||
|
<i class="haofont hao-icon-arrow-rotate-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div th:if="${not #strings.isEmpty(theme.config.link.fcircleUrl)}" class="title-h2-a-right">
|
||||||
|
<a class="random-post-all" th:href="${theme.config.link.fcircleUrl}" data-pjax-state="">查看鱼塘</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="random-post"></div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var fdataUser = {
|
||||||
|
apiurl: [[${ theme.config.fcircle.apiurl }]],
|
||||||
|
defaultFish: 500,
|
||||||
|
hungryFish: 500,
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script th:src="${assets_link + '/libs/moments/random-friends-post.js'}"></script>
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
<div class="flink" id="article-container">
|
||||||
|
|
||||||
|
<th:block th:each="group,iterStat : ${groups}">
|
||||||
|
|
||||||
|
<h2 th:if="${not #lists.isEmpty(group.spec.displayName)}">
|
||||||
|
<a class="headerlink" th:href="'#'+${group.spec.displayName}+'-'+${group.links.size}"
|
||||||
|
th:title="${group.spec.displayName}+ '('+${group.links.size}+')'"></a>
|
||||||
|
[[${group.spec.displayName}]] ([[${group.links.size}]])
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="flink-desc">[[${group.spec.description}]]</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 第一个,使用卡片展示 -->
|
||||||
|
<div th:if="${#strings.equals(group.spec.displayStyle,'beautify') && not #lists.isEmpty(group.spec.displayStyle)}"
|
||||||
|
class="site-card-group">
|
||||||
|
<div class="site-card" th:each="link : ${group.links}">
|
||||||
|
<span th:if="${not #lists.isEmpty(link.spec.label)}"
|
||||||
|
th:style="'background-color:' + ${link.spec.labelColor}"
|
||||||
|
class="site-card-tag">[[${link.spec.label}]]</span>
|
||||||
|
<a class="img" target="_blank" th:href="${link.spec.url}" th:title="${link.spec.displayName}">
|
||||||
|
<img class="flink-avatar" style="pointer-events: none;" th:alt="${link.spec.displayName}"
|
||||||
|
th:src="@{${#strings.isEmpty(link.spec.siteshot) ? link.spec.logo : link.spec.siteshot}}">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="info cf-friends-link" target="_blank" th:href="${link.spec.url}"
|
||||||
|
th:title="${link.spec.displayName}">
|
||||||
|
<div class="site-card-avatar">
|
||||||
|
<img class="flink-avatar cf-friends-avatar" th:alt="${link.spec.displayName}"
|
||||||
|
th:src="${link.spec.logo}">
|
||||||
|
</div>
|
||||||
|
<div class="site-card-text">
|
||||||
|
<span class="title cf-friends-name" th:text="${link.spec.displayName}"></span>
|
||||||
|
<span class="desc" th:text="${link.spec.description}"
|
||||||
|
th:title="${link.spec.description}"></span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flink-list"
|
||||||
|
th:if="${#strings.equals(group.spec.displayStyle,'default') && not #lists.isEmpty(group.spec.displayStyle)}">
|
||||||
|
<div class="flink-list-item" th:each="link : ${group.links}">
|
||||||
|
<span th:if="${not #lists.isEmpty(link.spec.label)}"
|
||||||
|
th:style="'background-color:' + ${link.spec.labelColor}"
|
||||||
|
class="site-card-tag">[[${link.spec.label}]]</span>
|
||||||
|
<a class="cf-friends-link" rel="external nofollow" target="_blank" th:href="${link.spec.url}"
|
||||||
|
th:title="${link.spec.displayName}">
|
||||||
|
<img class="flink-avatar cf-friends-avatar" th:alt="${link.spec.displayName}"
|
||||||
|
th:src="${link.spec.logo}">
|
||||||
|
<div class="flink-item-info">
|
||||||
|
<span class="flink-item-name cf-friends-name" th:text="${link.spec.displayName}"></span>
|
||||||
|
<span class="flink-item-desc" th:text="${link.spec.description}"
|
||||||
|
th:title="${link.spec.description}"></span>
|
||||||
|
<img th:src="${link.spec.logo}" class="entered loaded">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flink-list mini"
|
||||||
|
th:if="${#strings.equals(group.spec.displayStyle,'deprecated') && not #lists.isEmpty(group.spec.displayStyle)}">
|
||||||
|
<div class="flink-list-item" th:each="link : ${group.links}">
|
||||||
|
<a class="cf-friends-link" rel="external nofollow" target="_blank" th:href="${link.spec.url}"
|
||||||
|
th:title="${link.spec.displayName}">
|
||||||
|
<img class="flink-avatar cf-friends-avatar entered loaded" th:src="${link.spec.logo}"
|
||||||
|
th:alt="${link.spec.displayName}">
|
||||||
|
<div class="img-alt is-center">[[${link.spec.displayName}]]</div>
|
||||||
|
<div class="flink-item-info">
|
||||||
|
<span class="flink-item-name cf-friends-name">[[${link.spec.displayName}]]</span>
|
||||||
|
<span class="flink-item-desc"
|
||||||
|
th:title="${link.spec.description}">[[${link.spec.description}]]</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
<th:block th:if="${htmlType == 'page'}" th:utext="${singlePage.content.content}">
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<th:block th:fragment="comment(group, kind, name)">
|
||||||
|
<th:block
|
||||||
|
th:if="${theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
||||||
|
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
||||||
|
</th:block>
|
||||||
|
<!-- 已知问题 PJAX 下,comment 首次请求会出错。当前的临时解决办法是使用 js 重试 -->
|
||||||
|
<div id="post-comment"
|
||||||
|
th:if="${pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
||||||
|
<div class="comment-head">
|
||||||
|
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
||||||
|
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
||||||
|
<div class="comment-tips" id="comment-tips">
|
||||||
|
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<halo:comment th:attr="name=${name},kind=${kind},group=${group}" colorScheme="document.documentElement.getAttribute('data-theme')"/>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
</html>
|
|
@ -30,7 +30,9 @@
|
||||||
<h3 class="footer-title" th:text="${menuItem.status.displayName}"></h3>
|
<h3 class="footer-title" th:text="${menuItem.status.displayName}"></h3>
|
||||||
<div class="footer-links">
|
<div class="footer-links">
|
||||||
<a class="footer-item" th:each="childMenu : ${menuItem.children}"
|
<a class="footer-item" th:each="childMenu : ${menuItem.children}"
|
||||||
th:href="@{${childMenu.status.href}}" th:text="${childMenu.status.displayName}">
|
th:href="@{${childMenu.status.href}}"
|
||||||
|
th:target="${childMenu.spec.target?.value}"
|
||||||
|
th:text="${childMenu.status.displayName}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -49,6 +51,8 @@
|
||||||
</th:block>
|
</th:block>
|
||||||
<!-- 底部 banner -->
|
<!-- 底部 banner -->
|
||||||
|
|
||||||
|
<halo:footer />
|
||||||
|
|
||||||
<div th:if="${theme.config.footer.footerContent.footerStyle == 'default'}" id="footer-banner">
|
<div th:if="${theme.config.footer.footerContent.footerStyle == 'default'}" id="footer-banner">
|
||||||
<div class="footer-banner-links">
|
<div class="footer-banner-links">
|
||||||
<div class="footer-banner-left">
|
<div class="footer-banner-left">
|
||||||
|
|
|
@ -232,7 +232,7 @@
|
||||||
var GLOBAL_CONFIG = {
|
var GLOBAL_CONFIG = {
|
||||||
// 页面类型 index,page,post,tag,category
|
// 页面类型 index,page,post,tag,category
|
||||||
htmlType: [[${ htmlType }]],
|
htmlType: [[${ htmlType }]],
|
||||||
postTitle: [[${ htmlType == 'post' ? post.spec.title : ''}]],
|
postTitle: [[${ htmlType == 'post' ? post.spec.title : htmlType == 'page' ? singlePage.spec.title : ''}]],
|
||||||
isanchor: true,
|
isanchor: true,
|
||||||
isPost: [[${htmlType == 'post'}]],
|
isPost: [[${htmlType == 'post'}]],
|
||||||
isHome: [[${ htmlType == 'index'}]],
|
isHome: [[${ htmlType == 'index'}]],
|
||||||
|
@ -264,7 +264,7 @@
|
||||||
css: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css'
|
css: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css'
|
||||||
},
|
},
|
||||||
twikoo:{
|
twikoo:{
|
||||||
js: 'https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js'
|
js: '/themes/theme-hao/assets/libs/twikoo/twikoo.all.min.js'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
date_suffix: {
|
date_suffix: {
|
||||||
|
@ -295,6 +295,10 @@
|
||||||
if (GLOBAL_CONFIG.postTitle != '')
|
if (GLOBAL_CONFIG.postTitle != '')
|
||||||
title = GLOBAL_CONFIG.postTitle
|
title = GLOBAL_CONFIG.postTitle
|
||||||
break;
|
break;
|
||||||
|
case 'page':
|
||||||
|
if (GLOBAL_CONFIG.postTitle != '')
|
||||||
|
title = GLOBAL_CONFIG.postTitle
|
||||||
|
break;
|
||||||
case 'archive':
|
case 'archive':
|
||||||
title = '归档'
|
title = '归档'
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -211,6 +211,7 @@
|
||||||
// 页脚友链
|
// 页脚友链
|
||||||
addFriendLinksInFooter: function () {
|
addFriendLinksInFooter: function () {
|
||||||
|
|
||||||
|
var linksUrl = '[[${theme.config.link.linksUrl}]]'
|
||||||
var fetchUrl = [[${theme.config.footer.footer_group.fetchUrl}]]
|
var fetchUrl = [[${theme.config.footer.footer_group.fetchUrl}]]
|
||||||
fetch(fetchUrl)
|
fetch(fetchUrl)
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
|
@ -222,7 +223,7 @@
|
||||||
var item = randomFriendLinks[i]
|
var item = randomFriendLinks[i]
|
||||||
htmlText += `<a class='footer-item' href='${item.link}' target="_blank" rel="noopener nofollow">${item.name}</a>`;
|
htmlText += `<a class='footer-item' href='${item.link}' target="_blank" rel="noopener nofollow">${item.name}</a>`;
|
||||||
}
|
}
|
||||||
htmlText += `<a class='footer-item' href='/links'>更多</a>`
|
htmlText += `<a class='footer-item' href='${linksUrl}'>更多</a>`
|
||||||
document.getElementById("friend-links-in-footer").innerHTML = htmlText;
|
document.getElementById("friend-links-in-footer").innerHTML = htmlText;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<div class="tags-group-all">
|
<div class="tags-group-all">
|
||||||
<!-- banners 使用默认值-->
|
<!-- banners 使用默认值-->
|
||||||
<div class="tags-group-wrapper"
|
<div class="tags-group-wrapper"
|
||||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'default')}">
|
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'default')}">
|
||||||
<div class="tags-group-icon-pair">
|
<div class="tags-group-icon-pair">
|
||||||
<div class="tags-group-icon" style="background:#989bf8">
|
<div class="tags-group-icon" style="background:#989bf8">
|
||||||
<img th:src="${assets_link + '/images/icons/AfterEffect.png'}"
|
<img th:src="${assets_link + '/images/icons/AfterEffect.png'}"
|
||||||
|
@ -150,8 +150,8 @@
|
||||||
|
|
||||||
<!-- banners 使用默认值-->
|
<!-- banners 使用默认值-->
|
||||||
<div class="tags-group-wrapper"
|
<div class="tags-group-wrapper"
|
||||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'techStack')}"
|
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
||||||
th:with="techs = ${theme.config.about.techStack}">
|
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||||
<th:block th:each="tech,iterStat : ${techs}">
|
<th:block th:each="tech,iterStat : ${techs}">
|
||||||
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
||||||
<div class="tags-group-icon"
|
<div class="tags-group-icon"
|
||||||
|
@ -176,8 +176,8 @@
|
||||||
|
|
||||||
<!-- banners 使用默认值-->
|
<!-- banners 使用默认值-->
|
||||||
<div class="skills-list"
|
<div class="skills-list"
|
||||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'default')}"
|
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'default')}"
|
||||||
th:with="techs = ${theme.config.about.techStack}">
|
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||||
|
|
||||||
<div class="skill-info">
|
<div class="skill-info">
|
||||||
<div class="skill-icon" style="background:#989bf8">
|
<div class="skill-icon" style="background:#989bf8">
|
||||||
|
@ -283,14 +283,16 @@
|
||||||
<div class="etc">...</div>
|
<div class="etc">...</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="skills-list"
|
<div class="skills-list"
|
||||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'techStack')}"
|
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
||||||
th:with="techs = ${theme.config.about.techStack}">
|
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||||
<th:block th:each="tech : ${techs}">
|
<th:block th:each="tech : ${techs}">
|
||||||
<div class="skill-info">
|
<div class="skill-info">
|
||||||
<div class="skill-icon" th:style="'background:' + ${tech.background}">
|
<div class="skill-icon" th:style="'background:' + ${tech.background}">
|
||||||
<img th:src="@{${tech.url}}" th:title="${tech.name}">
|
<img th:src="@{${tech.url}}" th:title="${tech.name}">
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-name"><span th:title="${tech.name}"></span></div>
|
<div class="skill-name">
|
||||||
|
<span>[[${tech.name}]]</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -29,6 +29,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<style>
|
||||||
|
.loading-bar::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 500px;
|
||||||
|
left: 0;
|
||||||
|
filter: drop-shadow(0 -500px 0 #ece5d8);
|
||||||
|
width: 500px;
|
||||||
|
height: 62.5px;
|
||||||
|
background: url([[${theme.config.about.game.loading_bar}]]) no-repeat left 100%;
|
||||||
|
background-size: 500px 62.5px;
|
||||||
|
background-position-x: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -134,7 +134,7 @@
|
||||||
<!-- banners 使用默认值-->
|
<!-- banners 使用默认值-->
|
||||||
<div class="tags-group-wrapper"
|
<div class="tags-group-wrapper"
|
||||||
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
||||||
th:with="techs = ${theme.config.about.techStack}">
|
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||||
<th:block th:each="tech,iterStat : ${techs}">
|
<th:block th:each="tech,iterStat : ${techs}">
|
||||||
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
||||||
<div class="tags-group-icon"
|
<div class="tags-group-icon"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="back-menu-list">
|
<div class="back-menu-list">
|
||||||
<th:block th:each="childMenu : ${menuItem.children}">
|
<th:block th:each="childMenu : ${menuItem.children}">
|
||||||
<a class="back-menu-item" rel="external nofollow"
|
<a class="back-menu-item" rel="external nofollow"
|
||||||
target="_blank" th:href="@{${childMenu.status.href}}">
|
th:target="${childMenu.spec.target?.value}" th:href="@{${childMenu.status.href}}">
|
||||||
<!-- icon 预留 -->
|
<!-- icon 预留 -->
|
||||||
<img th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
<img th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
||||||
class="back-menu-item-icon"
|
class="back-menu-item-icon"
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
<div class="menus_item" th:each="menuItem : ${menuFinder.getPrimary().menuItems}">
|
<div class="menus_item" th:each="menuItem : ${menuFinder.getPrimary().menuItems}">
|
||||||
|
|
||||||
<!-- javascript:void(0);" -->
|
<!-- javascript:void(0);" -->
|
||||||
<a th:if="${#lists.isEmpty(menuItem.children)}" class="site-page" rel="external nofollow"
|
<a class="site-page" rel="external nofollow"
|
||||||
|
th:if="${#lists.isEmpty(menuItem.children)}"
|
||||||
|
th:target="${menuItem.spec.target?.value}"
|
||||||
th:href="@{${menuItem.status.href}}">
|
th:href="@{${menuItem.status.href}}">
|
||||||
<span th:text="${menuItem.status.displayName}"></span>
|
<span th:text="${menuItem.status.displayName}"></span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -23,9 +25,7 @@
|
||||||
<!-- 子菜单 -->
|
<!-- 子菜单 -->
|
||||||
<ul class="menus_item_child">
|
<ul class="menus_item_child">
|
||||||
<li th:each="childMenu : ${menuItem.children}">
|
<li th:each="childMenu : ${menuItem.children}">
|
||||||
<a class="site-page child" th:href="@{${childMenu.status.href}}">
|
<a class="site-page child" th:target="${childMenu.spec.target?.value}" th:href="@{${childMenu.status.href}}">
|
||||||
<!-- 这里应该有一个 icon 暂时还不支持 -->
|
|
||||||
<!--<i class="fa-fw fa-duotone fa-list-timeline"></i>-->
|
|
||||||
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
||||||
th:class="${#annotations.getOrDefault(childMenu, 'icon', '')}"
|
th:class="${#annotations.getOrDefault(childMenu, 'icon', '')}"
|
||||||
style="font-size:.9em"></i>
|
style="font-size:.9em"></i>
|
||||||
|
|
|
@ -70,23 +70,11 @@
|
||||||
</div>
|
</div>
|
||||||
<script>heo.reflashEssayWaterFall();</script>
|
<script>heo.reflashEssayWaterFall();</script>
|
||||||
<hr/>
|
<hr/>
|
||||||
<!-- 评论模块 -->
|
<!--/* 评论组件 */-->
|
||||||
<th:block
|
<th:block
|
||||||
th:if="${theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
kind = 'SinglePage',
|
||||||
</th:block>
|
name = 'moments')}"/>
|
||||||
<div id="post-comment"
|
|
||||||
th:if="${pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
|
||||||
<div class="comment-head">
|
|
||||||
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
|
||||||
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
|
||||||
<div class="comment-tips" id="comment-tips">
|
|
||||||
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<halo:comment group="content.halo.run" kind="SinglePage" th:attr="name='moments'"
|
|
||||||
colorScheme="document.documentElement.getAttribute('data-theme')"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -13,23 +13,12 @@
|
||||||
<div id="page">
|
<div id="page">
|
||||||
<div id="article-container" th:utext="${singlePage.content.content}"></div>
|
<div id="article-container" th:utext="${singlePage.content.content}"></div>
|
||||||
<hr>
|
<hr>
|
||||||
<!-- 评论模块 -->
|
<!--/* 评论组件 */-->
|
||||||
<th:block
|
<th:block
|
||||||
th:if="${singlePage.spec.allowComment && theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
kind = 'SinglePage',
|
||||||
</th:block>
|
name = ${singlePage.metadata.name})}"/>
|
||||||
<div id="post-comment"
|
|
||||||
th:if="${singlePage.spec.allowComment && pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
|
||||||
<div class="comment-head">
|
|
||||||
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
|
||||||
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
|
||||||
<div class="comment-tips" id="comment-tips">
|
|
||||||
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<halo:comment group="content.halo.run" kind="SinglePage"
|
|
||||||
th:attr="name=${singlePage.metadata.name}" colorScheme="document.documentElement.getAttribute('data-theme')" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 侧栏 -->
|
<!-- 侧栏 -->
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" th:replace="~{modules/layouts/layout :: layout(content = ~{::content}, htmlType = 'page')}"
|
||||||
|
xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<th:block th:fragment="content">
|
||||||
|
|
||||||
|
<div class="page" id="body-wrap">
|
||||||
|
<header class="not-top-img" id="page-header">
|
||||||
|
<nav th:replace="~{modules/nav :: nav(title = null)}"></nav>
|
||||||
|
<link rel="stylesheet" type="text/css" th:href="${assets_link + '/zhheo/heo-fcircle3.css'}">
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<main class="layout hide-aside" id="content-inner">
|
||||||
|
<div id="page">
|
||||||
|
|
||||||
|
<th:block th:replace="~{macro/content-links :: content-links(${htmlType})}" />
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
<!--/* 评论组件 */-->
|
||||||
|
<th:block
|
||||||
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
|
kind = 'SinglePage',
|
||||||
|
name = ${singlePage.metadata.name})}"/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<!-- 底部 -->
|
||||||
|
<footer th:replace="~{modules/footer :: footer}"></footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
</html>
|
|
@ -272,22 +272,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<!-- 评论模块 -->
|
<!--/* 评论组件 */-->
|
||||||
<th:block
|
<th:block
|
||||||
th:if="${post.spec.allowComment && theme.config.comments.twikooEnable && #strings.equals(theme.config.comments.use, 'Twikoo') && not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
kind = 'Post',
|
||||||
</th:block>
|
name = ${post.metadata.name})}"/>
|
||||||
<div id="post-comment"
|
|
||||||
th:if="${post.spec.allowComment && pluginFinder.available('PluginCommentWidget') && #strings.equals(theme.config.comments.use, 'commentWidget')}">
|
|
||||||
<div class="comment-head">
|
|
||||||
<div class="comment-headline"><i class="iconfont icon-comment-alt"></i> <span>评论</span></div>
|
|
||||||
<div class="comment-privacy"><a href="/privacy">隐私政策</a></div>
|
|
||||||
<div class="comment-tips" id="comment-tips">
|
|
||||||
<span>你无需删除空行,直接评论以获取最佳展示效果</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<halo:comment group="content.halo.run" kind="Post" th:attr="name=${post.metadata.name}" colorScheme="document.documentElement.getAttribute('data-theme')" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,10 @@ spec:
|
||||||
website: https://liuzhihang.com
|
website: https://liuzhihang.com
|
||||||
customTemplates:
|
customTemplates:
|
||||||
page:
|
page:
|
||||||
|
- name: 友情链接页面模版
|
||||||
|
description: 支持可预设文本的友链
|
||||||
|
screenshot:
|
||||||
|
file: page_links.html
|
||||||
- name: 关于页面模版
|
- name: 关于页面模版
|
||||||
description: 关于页面
|
description: 关于页面
|
||||||
screenshot:
|
screenshot:
|
||||||
|
@ -35,5 +39,5 @@ spec:
|
||||||
repo: https://github.com/liuzhihang/halo-theme-hao
|
repo: https://github.com/liuzhihang/halo-theme-hao
|
||||||
settingName: "theme-hao-setting"
|
settingName: "theme-hao-setting"
|
||||||
configMapName: "theme-hao-configMap"
|
configMapName: "theme-hao-configMap"
|
||||||
version: "1.1.5"
|
version: "1.2.0"
|
||||||
require: ">=2.0.0"
|
require: ">=2.6.0"
|
||||||
|
|
Loading…
Reference in New Issue