Merge remote-tracking branch 'roozen/main'
This commit is contained in:
commit
1f14be09dc
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "halo-theme-hao",
|
||||
"version": "1.1.6",
|
||||
"version": "1.2.0",
|
||||
"dependencies": {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -107,6 +107,7 @@ spec:
|
|||
bikan:
|
||||
remen:
|
||||
shiyong:
|
||||
techStack:
|
||||
children:
|
||||
- $formkit: select
|
||||
name: bannersBackground
|
||||
|
@ -117,7 +118,22 @@ spec:
|
|||
value: default
|
||||
- label: 个人技术栈
|
||||
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
|
||||
name: bannersTitleBig
|
||||
label: 大标题
|
||||
|
@ -839,26 +855,29 @@ spec:
|
|||
- $formkit: repeater
|
||||
name: bdageitem
|
||||
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:
|
||||
- $formkit: url
|
||||
name: link
|
||||
label: 链接
|
||||
placeholder: 请输入内容
|
||||
value: "https://hexo.io/"
|
||||
value: "https://halo.run/"
|
||||
validation: required
|
||||
- $formkit: attachment
|
||||
name: shields
|
||||
label: 徽标
|
||||
placeholder: 请输入内容
|
||||
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
|
||||
name: message
|
||||
label: 徽标 title
|
||||
placeholder: 请输入内容
|
||||
validation: required
|
||||
value: "博客框架为Hexo_v5.4.0"
|
||||
value: "博客框架为halo2.x"
|
||||
|
||||
|
||||
- group: post
|
||||
|
@ -1080,6 +1099,15 @@ spec:
|
|||
value: "https://moments.0206.ink/randomfriend"
|
||||
label: 随机访问地址
|
||||
help: 注意格式 (你的鱼塘token地址 + randomfriend)
|
||||
- $formkit: url
|
||||
name: fcircleUrl
|
||||
value: "/fcircle"
|
||||
label: 鱼塘链接
|
||||
- $formkit: url
|
||||
name: linksUrl
|
||||
value: "/links"
|
||||
label: 友链链接
|
||||
|
||||
|
||||
- group: fcircle
|
||||
label: 友链鱼塘
|
||||
|
@ -1088,7 +1116,7 @@ spec:
|
|||
name: backgroundImg
|
||||
validation: url
|
||||
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: 请输入图片地址
|
||||
- $formkit: text
|
||||
name: smallTitle
|
||||
|
@ -1179,23 +1207,6 @@ spec:
|
|||
name: helloAbout
|
||||
label: 我的问候
|
||||
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
|
||||
name: authorCareers
|
||||
label: 职业生涯
|
||||
|
@ -1294,6 +1305,7 @@ spec:
|
|||
game_title:
|
||||
game_uid:
|
||||
game_bg:
|
||||
loading_bar:
|
||||
children:
|
||||
- $formkit: text
|
||||
name: game_tips
|
||||
|
@ -1315,6 +1327,11 @@ spec:
|
|||
label: 爱好游戏背景
|
||||
placeholder: 请输入内容
|
||||
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
|
||||
name: game2
|
||||
label: 爱好游戏 2
|
||||
|
@ -1544,11 +1561,12 @@ spec:
|
|||
- group: envelope_comment
|
||||
label: 留言板
|
||||
formSchema:
|
||||
- $formkit: text
|
||||
- $formkit: textarea
|
||||
name: title
|
||||
label: 标题
|
||||
placeholder: 请输入内容
|
||||
value: 留言板
|
||||
value: <div align="center">留言板</div>
|
||||
help: 支持 HTML 语法
|
||||
- $formkit: group
|
||||
name: custom_pic
|
||||
label: 信笺图片
|
||||
|
@ -1744,25 +1762,21 @@ spec:
|
|||
value: false
|
||||
- $formkit: text
|
||||
name: id
|
||||
if: $get(nav_musicEnable).value
|
||||
label: 音乐的id
|
||||
help: 歌单的id,可以从音乐歌单分享的链接中获取
|
||||
value: "8668419170"
|
||||
- $formkit: text
|
||||
name: server
|
||||
if: $get(nav_musicEnable).value
|
||||
label: 服务
|
||||
help: 歌单的服务商,例如netease(网易云音乐),tencent(腾讯),kugou(酷狗),xiami(小米音乐),baidu(百度音乐)
|
||||
value: "tencent"
|
||||
- $formkit: url
|
||||
name: all_playlist
|
||||
if: $get(nav_musicEnable).value
|
||||
label: 播放列表地址
|
||||
help: 用于右键查看所有歌曲
|
||||
value: https://y.qq.com/n/ryqq/playlist/8668419170
|
||||
- $formkit: url
|
||||
name: meting_api
|
||||
if: $get(nav_musicEnable).value
|
||||
label: 音乐图片api
|
||||
value: https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r
|
||||
- $formkit: group
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -17030,19 +17030,6 @@ span.hexo-douban-pagenum {
|
|||
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 {
|
||||
animation: loading-bar 3.5s cubic-bezier(0.28, 0.11, 0.32, 1) infinite forwards;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
</header>
|
||||
<main class="layout hide-aside" id="content-inner">
|
||||
<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">
|
||||
<style>
|
||||
@media screen and (max-width:600px) {
|
||||
|
@ -136,23 +138,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<!-- 评论模块 -->
|
||||
<!--/* 评论组件 */-->
|
||||
<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>
|
||||
<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>
|
||||
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||
kind = 'SinglePage',
|
||||
name = ${singlePage.metadata.name})}"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
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="/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 id="random-post"></div>
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -11,165 +11,14 @@
|
|||
</header>
|
||||
<main class="layout hide-aside" id="content-inner">
|
||||
<div id="page">
|
||||
<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 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>
|
||||
<th:block th:replace="~{macro/content-links :: content-links(${htmlType})}" />
|
||||
|
||||
<hr/>
|
||||
<!-- 评论模块 -->
|
||||
<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>
|
||||
<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='links'" colorScheme="document.documentElement.getAttribute('data-theme')" />
|
||||
</div>
|
||||
<!--/* 评论组件 */-->
|
||||
<th:block
|
||||
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||
kind = 'SinglePage',
|
||||
name = 'links')}"/>
|
||||
|
||||
</div>
|
||||
</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>
|
||||
<div class="footer-links">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -49,6 +51,8 @@
|
|||
</th:block>
|
||||
<!-- 底部 banner -->
|
||||
|
||||
<halo:footer />
|
||||
|
||||
<div th:if="${theme.config.footer.footerContent.footerStyle == 'default'}" id="footer-banner">
|
||||
<div class="footer-banner-links">
|
||||
<div class="footer-banner-left">
|
||||
|
|
|
@ -232,7 +232,7 @@
|
|||
var GLOBAL_CONFIG = {
|
||||
// 页面类型 index,page,post,tag,category
|
||||
htmlType: [[${ htmlType }]],
|
||||
postTitle: [[${ htmlType == 'post' ? post.spec.title : ''}]],
|
||||
postTitle: [[${ htmlType == 'post' ? post.spec.title : htmlType == 'page' ? singlePage.spec.title : ''}]],
|
||||
isanchor: true,
|
||||
isPost: [[${htmlType == 'post'}]],
|
||||
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'
|
||||
},
|
||||
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: {
|
||||
|
@ -295,6 +295,10 @@
|
|||
if (GLOBAL_CONFIG.postTitle != '')
|
||||
title = GLOBAL_CONFIG.postTitle
|
||||
break;
|
||||
case 'page':
|
||||
if (GLOBAL_CONFIG.postTitle != '')
|
||||
title = GLOBAL_CONFIG.postTitle
|
||||
break;
|
||||
case 'archive':
|
||||
title = '归档'
|
||||
break;
|
||||
|
|
|
@ -211,6 +211,7 @@
|
|||
// 页脚友链
|
||||
addFriendLinksInFooter: function () {
|
||||
|
||||
var linksUrl = '[[${theme.config.link.linksUrl}]]'
|
||||
var fetchUrl = [[${theme.config.footer.footer_group.fetchUrl}]]
|
||||
fetch(fetchUrl)
|
||||
.then(res => res.json())
|
||||
|
@ -222,7 +223,7 @@
|
|||
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='/links'>更多</a>`
|
||||
htmlText += `<a class='footer-item' href='${linksUrl}'>更多</a>`
|
||||
document.getElementById("friend-links-in-footer").innerHTML = htmlText;
|
||||
})
|
||||
}
|
||||
|
|
|
@ -13,51 +13,51 @@
|
|||
<div class="tags-group-all">
|
||||
<!-- banners 使用默认值-->
|
||||
<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" style="background:#989bf8">
|
||||
<img th:src="${assets_link + '/images/icons/AfterEffect.png'}"
|
||||
title="AfterEffect">
|
||||
title="AfterEffect">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/Sketch.png'}"
|
||||
title="Sketch">
|
||||
title="Sketch">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#57b6e6">
|
||||
<img th:src="${assets_link + '/images/icons/Docker.png'}"
|
||||
title="Docker">
|
||||
title="Docker">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#4082c3">
|
||||
<img th:src="${assets_link + '/images/icons/Photoshop.png'}"
|
||||
title="Photoshop">
|
||||
title="Photoshop">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/FinalCutPro.png'}"
|
||||
title="FinalCutPro">
|
||||
title="FinalCutPro">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/Python.png'}"
|
||||
title="Python">
|
||||
title="Python">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#eb6840">
|
||||
<img th:src="${assets_link + '/images/icons/Swift.png'}"
|
||||
title="Swift">
|
||||
title="Swift">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#8f55ba">
|
||||
<img th:src="${assets_link + '/images/icons/Principle.png'}"
|
||||
title="Principle">
|
||||
title="Principle">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#f29e39">
|
||||
<img th:src="${assets_link + '/images/icons/illustrator.png'}"
|
||||
title="illustrator">
|
||||
title="illustrator">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#2c51db">
|
||||
<img th:src="${assets_link + '/images/icons/CSS3.png'}" title="CSS3">
|
||||
|
@ -77,53 +77,53 @@
|
|||
</div>
|
||||
<div class="tags-group-icon" style="background:#e65164">
|
||||
<img th:src="${assets_link + '/images/icons/Apifox.webp'}"
|
||||
title="Apifox">
|
||||
title="Apifox">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#989bf8">
|
||||
<img th:src="${assets_link + '/images/icons/AfterEffect.png'}"
|
||||
title="AfterEffect">
|
||||
title="AfterEffect">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/Sketch.png'}"
|
||||
title="Sketch">
|
||||
title="Sketch">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#57b6e6">
|
||||
<img th:src="${assets_link + '/images/icons/Docker.png'}"
|
||||
title="Docker">
|
||||
title="Docker">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#4082c3">
|
||||
<img th:src="${assets_link + '/images/icons/Photoshop.png'}"
|
||||
title="Photoshop">
|
||||
title="Photoshop">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/FinalCutPro.png'}"
|
||||
title="FinalCutPro">
|
||||
title="FinalCutPro">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#fff">
|
||||
<img th:src="${assets_link + '/images/icons/Python.png'}"
|
||||
title="Python">
|
||||
title="Python">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#eb6840">
|
||||
<img th:src="${assets_link + '/images/icons/Swift.png'}"
|
||||
title="Swift">
|
||||
title="Swift">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#8f55ba">
|
||||
<img th:src="${assets_link + '/images/icons/Principle.png'}"
|
||||
title="Principle">
|
||||
title="Principle">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-group-icon-pair">
|
||||
<div class="tags-group-icon" style="background:#f29e39">
|
||||
<img th:src="${assets_link + '/images/icons/illustrator.png'}"
|
||||
title="illustrator">
|
||||
title="illustrator">
|
||||
</div>
|
||||
<div class="tags-group-icon" style="background:#2c51db">
|
||||
<img th:src="${assets_link + '/images/icons/CSS3.png'}" title="CSS3">
|
||||
|
@ -143,29 +143,29 @@
|
|||
</div>
|
||||
<div class="tags-group-icon" style="background:#e65164">
|
||||
<img th:src="${assets_link + '/images/icons/Apifox.webp'}"
|
||||
title="Apifox">
|
||||
title="Apifox">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- banners 使用默认值-->
|
||||
<div class="tags-group-wrapper"
|
||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'techStack')}"
|
||||
th:with="techs = ${theme.config.about.techStack}">
|
||||
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
||||
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||
<th:block th:each="tech,iterStat : ${techs}">
|
||||
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
||||
<div class="tags-group-icon"
|
||||
th:style="'background:' + ${techOdd.background}"
|
||||
th:with="techOdd = ${techs.get(iterStat.index - 1)}">
|
||||
th:style="'background:' + ${techOdd.background}"
|
||||
th:with="techOdd = ${techs.get(iterStat.index - 1)}">
|
||||
<img th:src="@{${techOdd.url}}"
|
||||
th:title="${techOdd.name}">
|
||||
th:title="${techOdd.name}">
|
||||
</div>
|
||||
|
||||
<div class="tags-group-icon"
|
||||
th:style="'background:' + ${techEven.background}"
|
||||
th:with="techEven = ${tech}">
|
||||
th:style="'background:' + ${techEven.background}"
|
||||
th:with="techEven = ${tech}">
|
||||
<img th:src="@{${techEven.url}}"
|
||||
th:title="${techEven.name}">
|
||||
th:title="${techEven.name}">
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
|
@ -176,13 +176,13 @@
|
|||
|
||||
<!-- banners 使用默认值-->
|
||||
<div class="skills-list"
|
||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'default')}"
|
||||
th:with="techs = ${theme.config.about.techStack}">
|
||||
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'default')}"
|
||||
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||
|
||||
<div class="skill-info">
|
||||
<div class="skill-icon" style="background:#989bf8">
|
||||
<img th:src="${assets_link + '/images/icons/AfterEffect.png'}"
|
||||
title="AfterEffect">
|
||||
title="AfterEffect">
|
||||
</div>
|
||||
<div class="skill-name"><span>AfterEffect</span></div>
|
||||
</div>
|
||||
|
@ -211,7 +211,7 @@
|
|||
<div class="skill-info">
|
||||
<div class="skill-icon" style="background:#ffffff">
|
||||
<img th:src="${assets_link + '/images/icons/FinalCutPro.png'}"
|
||||
title="FinalCutPro">
|
||||
title="FinalCutPro">
|
||||
</div>
|
||||
<div class="skill-name"><span>FinalCutPro</span></div>
|
||||
</div>
|
||||
|
@ -240,7 +240,7 @@
|
|||
<div class="skill-info">
|
||||
<div class="skill-icon" style="background:#f29e39">
|
||||
<img th:src="${assets_link + '/images/icons/illustrator.png'}"
|
||||
title="illustrator">
|
||||
title="illustrator">
|
||||
</div>
|
||||
<div class="skill-name"><span>illustrator</span></div>
|
||||
</div>
|
||||
|
@ -283,14 +283,16 @@
|
|||
<div class="etc">...</div>
|
||||
</div>
|
||||
<div class="skills-list"
|
||||
th:if="${#strings.equals(theme.config.top.bannersBackground, 'techStack')}"
|
||||
th:with="techs = ${theme.config.about.techStack}">
|
||||
th:if="${#strings.equals(theme.config.top.BannerLeft.bannersBackground, 'techStack')}"
|
||||
th:with="techs = ${theme.config.top.BannerLeft.techStack}">
|
||||
<th:block th:each="tech : ${techs}">
|
||||
<div class="skill-info">
|
||||
<div class="skill-icon" th:style="'background:' + ${tech.background}">
|
||||
<img th:src="@{${tech.url}}" th:title="${tech.name}">
|
||||
</div>
|
||||
<div class="skill-name"><span th:title="${tech.name}"></span></div>
|
||||
<div class="skill-name">
|
||||
<span>[[${tech.name}]]</span>
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
</div>
|
||||
|
@ -302,17 +304,17 @@
|
|||
<div class="card-content">
|
||||
<div class="author-content-item-tips">生涯</div>
|
||||
<span class="author-content-item-title"
|
||||
th:text="${theme.config.about.authorCareers.authorCareersTitle}">无限进步</span>
|
||||
th:text="${theme.config.about.authorCareers.authorCareersTitle}">无限进步</span>
|
||||
<div class="careers-group"
|
||||
th:if="${not #lists.isEmpty(theme.config.about.authorCareers.authorCareersTags)}"
|
||||
th:with="careersTags = ${theme.config.about.authorCareers.authorCareersTags}">
|
||||
th:if="${not #lists.isEmpty(theme.config.about.authorCareers.authorCareersTags)}"
|
||||
th:with="careersTags = ${theme.config.about.authorCareers.authorCareersTags}">
|
||||
<div class="careers-item" th:each="tag : ${careersTags}">
|
||||
<div class="circle" th:style="'background:' + ${tag.background}"></div>
|
||||
<div class="name" th:text="${tag.desc}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<img alt="生涯" class="author-content-img"
|
||||
th:src="@{${#strings.isEmpty(theme.config.about.authorCareers.authorCareersBackground) ? assets_link + '/images/hao-logo.jpg' : theme.config.about.authorCareers.authorCareersBackground}}">
|
||||
th:src="@{${#strings.isEmpty(theme.config.about.authorCareers.authorCareersBackground) ? assets_link + '/images/hao-logo.jpg' : theme.config.about.authorCareers.authorCareersBackground}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -29,6 +29,20 @@
|
|||
</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>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
<!-- banners 使用默认值-->
|
||||
<div class="tags-group-wrapper"
|
||||
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}">
|
||||
<div class="tags-group-icon-pair" th:if="${iterStat.odd}">
|
||||
<div class="tags-group-icon"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<div class="back-menu-list">
|
||||
<th:block th:each="childMenu : ${menuItem.children}">
|
||||
<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 预留 -->
|
||||
<img th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
||||
class="back-menu-item-icon"
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
<div class="menus_item" th:each="menuItem : ${menuFinder.getPrimary().menuItems}">
|
||||
|
||||
<!-- 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}}">
|
||||
<span th:text="${menuItem.status.displayName}"></span>
|
||||
</a>
|
||||
|
@ -23,9 +25,7 @@
|
|||
<!-- 子菜单 -->
|
||||
<ul class="menus_item_child">
|
||||
<li th:each="childMenu : ${menuItem.children}">
|
||||
<a class="site-page child" th:href="@{${childMenu.status.href}}">
|
||||
<!-- 这里应该有一个 icon 暂时还不支持 -->
|
||||
<!--<i class="fa-fw fa-duotone fa-list-timeline"></i>-->
|
||||
<a class="site-page child" th:target="${childMenu.spec.target?.value}" th:href="@{${childMenu.status.href}}">
|
||||
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(childMenu, 'icon', ''))}"
|
||||
th:class="${#annotations.getOrDefault(childMenu, 'icon', '')}"
|
||||
style="font-size:.9em"></i>
|
||||
|
|
|
@ -70,23 +70,11 @@
|
|||
</div>
|
||||
<script>heo.reflashEssayWaterFall();</script>
|
||||
<hr/>
|
||||
<!-- 评论模块 -->
|
||||
<!--/* 评论组件 */-->
|
||||
<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>
|
||||
<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>
|
||||
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||
kind = 'SinglePage',
|
||||
name = 'moments')}"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -13,23 +13,12 @@
|
|||
<div id="page">
|
||||
<div id="article-container" th:utext="${singlePage.content.content}"></div>
|
||||
<hr>
|
||||
<!-- 评论模块 -->
|
||||
<!--/* 评论组件 */-->
|
||||
<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)}">
|
||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
||||
</th:block>
|
||||
<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>
|
||||
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||
kind = 'SinglePage',
|
||||
name = ${singlePage.metadata.name})}"/>
|
||||
|
||||
</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>
|
||||
<hr>
|
||||
<!-- 评论模块 -->
|
||||
<!--/* 评论组件 */-->
|
||||
<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)}">
|
||||
<div th:replace="~{modules/twikoo :: twikoo}"></div>
|
||||
</th:block>
|
||||
<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>
|
||||
th:replace="~{modules/comment :: comment(group = 'content.halo.run',
|
||||
kind = 'Post',
|
||||
name = ${post.metadata.name})}"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -9,6 +9,10 @@ spec:
|
|||
website: https://liuzhihang.com
|
||||
customTemplates:
|
||||
page:
|
||||
- name: 友情链接页面模版
|
||||
description: 支持可预设文本的友链
|
||||
screenshot:
|
||||
file: page_links.html
|
||||
- name: 关于页面模版
|
||||
description: 关于页面
|
||||
screenshot:
|
||||
|
@ -35,5 +39,5 @@ spec:
|
|||
repo: https://github.com/liuzhihang/halo-theme-hao
|
||||
settingName: "theme-hao-setting"
|
||||
configMapName: "theme-hao-configMap"
|
||||
version: "1.1.5"
|
||||
require: ">=2.0.0"
|
||||
version: "1.2.0"
|
||||
require: ">=2.6.0"
|
||||
|
|
Loading…
Reference in New Issue