分类页改造

This commit is contained in:
liuzhihang 2022-10-12 20:09:51 +08:00
parent c9ce8e1645
commit 4ab3bbf890
1 changed files with 814 additions and 1 deletions

View File

@ -1,4 +1,817 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="width=device-width,initial-scale=1" name="viewport">
<title th:text="${site.title}"></title>
<meta content="telephone=no" name="format-detection">
<meta content="var(--heo-card-bg)" name="theme-color">
<link rel="stylesheet" th:href="@{/assets/zhheo/zhheoblog.css}">
<!-- fontawesome-pro https://github.com/duyplus/fontawesome-pro -->
<link href="https://cdn.jsdelivr.net/gh/duyplus/fontawesome-pro/css/all.min.css"
media="print"
onload='this.media="all"'
rel="stylesheet"
/>
<!-- 右下角通知 -->
<link href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.css"
media="print"
onload='this.media="all"'
rel="stylesheet"
/>
<script>var GLOBAL_CONFIG = {
root: "/",
algolia: {
appId: "29APOGIOTD",
apiKey: "49d70d2ba6e9c2a001a1c8737785d7ee",
indexName: "Heo",
hits: {per_page: 10},
languages: {
input_placeholder: "输入关键词快速查找",
hits_empty: "找不到你查询的内容:${query}",
hits_stats: "找到 ${hits} 条结果,用时 ${time} 毫秒"
}
},
localSearch: void 0,
translate: {defaultEncoding: 2, translateDelay: 0, msgToTraditionalChinese: "简", msgToSimplifiedChinese: "繁"},
noticeOutdate: void 0,
highlight: {plugin: "highlighjs", highlightCopy: !0, highlightLang: !0, highlightHeightLimit: 400},
copy: {success: "复制成功", error: "复制错误", noSupport: "浏览器不支持"},
relativeDate: {homepage: !0, post: !1},
runtime: "天",
date_suffix: {just: "刚刚", min: "分钟前", hour: "小时前", day: "天前", month: "个月前"},
copyright: void 0,
lightbox: "fancybox",
Snackbar: {
chs_to_cht: "你已切换为繁体",
cht_to_chs: "你已切换为简体",
day_to_night: "你已切换为深色模式",
night_to_day: "你已切换为浅色模式",
bgLight: "#49b1f5",
bgDark: "#121212",
position: "top-center"
},
source: {
jQuery: "https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js",
justifiedGallery: {
js: "https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js",
css: "https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/justifiedGallery/3.8.1/css/justifiedGallery.min.css"
},
fancybox: {
js: "https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.js",
css: "https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css"
}
},
isPhotoFigcaption: !0,
islazyload: !0,
isanchor: !1
}</script>
<script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: "分类: 翻译内容",
isPost: !1,
isHome: !1,
isHighlightShrink: !1,
isToc: !1,
postUpdate: "2022-09-30 12:24:38"
}</script>
<noscript>
<style>#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#post-meta time, #recent-posts time {
display: inline !important
}</style>
</noscript>
<script>(win => {
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function () {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
heo.initThemeColor()
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
heo.initThemeColor()
}
const t = saveToLocal.get('theme')
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
if (t === undefined) {
if (isLightMode) activateLightMode()
else if (isDarkMode) activateDarkMode()
else if (isNotSpecified || hasNoSupport) {
const now = new Date()
const hour = now.getHours()
const isNight = hour <= 6 || hour >= 18
isNight ? activateDarkMode() : activateLightMode()
}
window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
if (saveToLocal.get('theme') === undefined) {
e.matches ? activateDarkMode() : activateLightMode()
}
})
} else if (t === 'light') activateLightMode()
else activateDarkMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
})(window)</script>
<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js"></script>
<link href="https://at.alicdn.com/t/font_1891866_47sukspu18q.css" rel="stylesheet">
<link href="https://cdn2.tianli0.top/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">
<link href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/Swiper/8.0.6/swiper-bundle.min.css" rel="stylesheet">
<link rel="stylesheet" th:href="@{/assets/zhheo/commentBarrage.css}">
<script data-pace-options='{ "restartOnRequestAfter":false,"eventLag":false}'
src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/pace/1.2.4/pace.min.js"></script>
</head>
<body>
<div id="loading-box" onclick="heo.hideLoading()">
<div class="loading-bg"><img class="loading-img" src="https://img.zhheo.com/i/2022/08/31/630f01a3755aa.webp"></div>
</div>
<div id="web_bg"></div>
<div id="console">
<div class="close-btn" href="javascript:void(0);" onclick="heo.hideConsole()"><i class="fas fa-circle-xmark"></i>
</div>
<div class="console-card-group">
<div class="console-card-group-left">
<div class="console-card" id="card-newest-comments" onclick="heo.hideConsole()">
<div class="card-content">
<div class="author-content-item-tips">互动</div>
<span class="author-content-item-title">最近评论</span></div>
<div class="aside-list"><span>正在加载中...</span></div>
</div>
</div>
<div class="console-card-group-right">
<div class="console-card tags" onclick="heo.hideConsole()">
<div class="card-content">
<div class="author-content-item-tips">标签</div>
<span class="author-content-item-title">寻找感兴趣的领域</span></div>
<div class="card-tag-cloud"><a href="../../tags/AfterEffects/index.html"
style="font-size:1em;color:#d3d3d3">AfterEffects<sup>11</sup></a> <a
href="../../tags/Chrome/index.html" style="font-size:1em;color:#d3d3d3">Chrome<sup>10</sup></a>
<a href="../../tags/Docker/index.html" style="font-size:1em;color:#d3d3d3">Docker<sup>1</sup></a> <a
href="../../tags/Dribbble/index.html"
style="font-size:1em;color:#d3d3d3">Dribbble<sup>9</sup></a> <a
href="../../tags/FinalCutPro/index.html"
style="font-size:1em;color:#d3d3d3">FinalCutPro<sup>5</sup></a> <a
href="../../tags/Heocan/index.html" style="font-size:1em;color:#d3d3d3">Heocan<sup>21</sup></a>
<a href="../../tags/Heomagic/index.html"
style="font-size:1em;color:#d3d3d3">Heomagic<sup>5</sup></a> <a href="../../tags/Hexo/index.html"
style="font-size:1em;color:#d3d3d3">Hexo<sup>43</sup></a>
<a href="../../tags/HomePod/index.html" style="font-size:1em;color:#d3d3d3">HomePod<sup>2</sup></a>
<a href="../../tags/Mac/index.html" style="font-size:1em;color:#d3d3d3">Mac<sup>48</sup></a> <a
href="../../tags/Photoshop/index.html"
style="font-size:1em;color:#d3d3d3">Photoshop<sup>23</sup></a> <a
href="../../tags/Principle/index.html"
style="font-size:1em;color:#d3d3d3">Principle<sup>2</sup></a> <a
href="../../tags/Python/index.html"
style="font-size:1em;color:#d3d3d3">Python<sup>9</sup></a> <a
href="../../tags/Sketch/index.html" style="font-size:1em;color:#d3d3d3">Sketch<sup>75</sup></a>
<a href="../../tags/Sketch-Data/index.html"
style="font-size:1em;color:#d3d3d3">Sketch-Data<sup>3</sup></a> <a
href="../../tags/Swift/index.html"
style="font-size:1em;color:#d3d3d3">Swift<sup>98</sup></a> <a
href="../../tags/SwiftUI-100days/index.html" style="font-size:1em;color:#d3d3d3">SwiftUI-100days<sup>48</sup></a>
<a href="../../tags/VI/index.html" style="font-size:1em;color:#d3d3d3">VI<sup>10</sup></a> <a
href="../../tags/VLOG/index.html" style="font-size:1em;color:#d3d3d3">VLOG<sup>2</sup></a>
<a href="../../tags/iOS/index.html" style="font-size:1em;color:#d3d3d3">iOS<sup>30</sup></a> <a
href="../../tags/illustrator/index.html"
style="font-size:1em;color:#d3d3d3">illustrator<sup>8</sup></a> <a
href="../../tags/%E4%BA%A7%E5%93%81/index.html"
style="font-size:1em;color:#d3d3d3">产品<sup>16</sup></a> <a
href="../../tags/%E4%BC%98%E8%B4%A8%E6%8A%A5%E5%91%8A/index.html"
style="font-size:1em;color:#d3d3d3">优质报告<sup>3</sup></a> <a
href="../../tags/%E4%BD%93%E9%AA%8C%E5%AE%98/index.html"
style="font-size:1em;color:#d3d3d3">体验官<sup>3</sup></a> <a
href="../../tags/%E5%8A%9E%E5%85%AC/index.html"
style="font-size:1em;color:#d3d3d3">办公<sup>1</sup></a> <a
href="../../tags/%E5%AD%97%E4%BD%93/index.html"
style="font-size:1em;color:#d3d3d3">字体<sup>10</sup></a> <a
href="../../tags/%E5%B9%B2%E8%B4%A7/index.html"
style="font-size:1em;color:#d3d3d3">干货<sup>138</sup></a> <a
href="../../tags/%E5%BC%80%E5%8F%91/index.html"
style="font-size:1em;color:#d3d3d3">开发<sup>179</sup></a> <a
href="../../tags/%E5%BF%85%E7%9C%8B/index.html"
style="font-size:1em;color:#d3d3d3">必看<sup>45</sup></a> <a
href="../../tags/%E6%95%99%E7%A8%8B/index.html"
style="font-size:1em;color:#d3d3d3">教程<sup>254</sup></a> <a
href="../../tags/%E6%97%A5%E5%B8%B8/index.html"
style="font-size:1em;color:#d3d3d3">日常<sup>27</sup></a> <a
href="../../tags/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97/index.html"
style="font-size:1em;color:#d3d3d3">更新日志<sup>7</sup></a> <a
href="../../tags/%E6%B7%B7%E5%89%AA/index.html"
style="font-size:1em;color:#d3d3d3">混剪<sup>5</sup></a> <a
href="../../tags/%E7%83%AD%E9%97%A8/index.html"
style="font-size:1em;color:#d3d3d3">热门<sup>50</sup></a> <a
href="../../tags/%E7%94%B5%E5%AD%90%E4%B9%A6/index.html"
style="font-size:1em;color:#d3d3d3">电子书<sup>1</sup></a> <a
href="../../tags/%E7%BD%91%E9%A1%B5%E5%89%8D%E7%AB%AF/index.html"
style="font-size:1em;color:#d3d3d3">网页前端<sup>44</sup></a> <a
href="../../tags/%E8%A1%A8%E6%83%85/index.html"
style="font-size:1em;color:#d3d3d3">表情<sup>2</sup></a> <a
href="../../tags/%E8%A7%86%E9%A2%91/index.html"
style="font-size:1em;color:#d3d3d3">视频<sup>17</sup></a> <a
href="../../tags/%E8%AE%BE%E8%AE%A1/index.html"
style="font-size:1em;color:#d3d3d3">设计<sup>216</sup></a> <a
href="../../tags/%E8%AE%BE%E8%AE%A1%E6%8A%A5%E5%91%8A/index.html"
style="font-size:1em;color:#d3d3d3">设计报告<sup>12</sup></a> <a
href="../../tags/%E8%AF%84%E6%B5%8B/index.html"
style="font-size:1em;color:#d3d3d3">评测<sup>10</sup></a> <a
href="../../tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/index.html"
style="font-size:1em;color:#d3d3d3">读书笔记<sup>6</sup></a> <a
href="../../tags/%E8%BD%AF%E4%BB%B6/index.html"
style="font-size:1em;color:#d3d3d3">软件<sup>50</sup></a> <a
href="../../tags/%E8%BF%90%E7%BB%B4/index.html"
style="font-size:1em;color:#d3d3d3">运维<sup>8</sup></a> <a
href="../../tags/%E8%BF%90%E8%90%A5/index.html"
style="font-size:1em;color:#d3d3d3">运营<sup>4</sup></a> <a
href="../../tags/%E9%97%B2%E8%81%8A/index.html"
style="font-size:1em;color:#d3d3d3">闲聊<sup>18</sup></a> <a
href="../../tags/%E9%9F%B3%E4%B9%90/index.html"
style="font-size:1em;color:#d3d3d3">音乐<sup>6</sup></a></div>
</div>
<div class="console-card history" onclick="heo.hideConsole()">
<div class="item-headline"><i class="fas fa-archive"></i><span>文章</span></div>
<ul class="card-archive-list">
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2022/index.html"><span
class="card-archive-list-date">2022</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">92</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2021/index.html"><span
class="card-archive-list-date">2021</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">147</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2020/index.html"><span
class="card-archive-list-date">2020</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">319</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2019/index.html"><span
class="card-archive-list-date">2019</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">62</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2018/index.html"><span
class="card-archive-list-date">2018</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2017/index.html"><span
class="card-archive-list-date">2017</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">6</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2016/index.html"><span
class="card-archive-list-date">2016</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">3</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
<li class="card-archive-list-item"><a class="card-archive-list-link"
href="../../archives/2015/index.html"><span
class="card-archive-list-date">2015</span>
<div class="card-archive-list-count-group"><span class="card-archive-list-count">19</span><span
class="card-archive-list-count-unit">篇</span></div>
</a></li>
</ul>
</div>
</div>
</div>
<div class="button-group">
<div class="console-btn-item"><a class="darkmode_switchbutton" href="javascript:void(0);"
onclick="rm.switchDarkMode()" rel="external nofollow" title="显示模式切换"><i
class="fa-duotone fa-moon" style="font-size:1rem"></i></a></div>
<div class="console-btn-item" id="consoleKeyboard" onclick="heo.keyboardToggle()" title="快捷键开关"><a
class="keyboard-switch"><i class="fa-duotone fa-keyboard"></i></a></div>
<div class="console-btn-item" id="assist-open" onclick="heo.hideConsole()" title="无障碍工具栏"><a
class="assist-btn"><i class="fa-duotone fa-wheelchair"></i></a></div>
<div class="console-btn-item" id="consoleCommentBarrage" onclick="heo.switchCommentBarrage()" title="热评开关">
<a class="commentBarrage"><i class="fa-solid fa-message-captions"></i></a></div>
<div class="console-btn-item" id="consoleMusic" onclick="heo.musicToggle()" title="音乐开关"><a
class="music-switch"><i class="fa-duotone fa-music"></i></a></div>
</div>
<div class="console-mask" href="javascript:void(0);" onclick="heo.hideConsole()" rel="external nofollow"></div>
</div>
<div id="sidebar">
<div id="menu-mask"></div>
<div id="sidebar-menus">
<div class="author-avatar"></div>
<div class="site-data">
<div class="data-item is-center">
<div class="data-item-link"><a href="../../archives/index.html">
<div class="headline">文章</div>
<div class="length-num">649</div>
</a></div>
</div>
<div class="data-item is-center">
<div class="data-item-link"><a href="../../tags/index.html">
<div class="headline">标签</div>
<div class="length-num">47</div>
</a></div>
</div>
<div class="data-item is-center">
<div class="data-item-link"><a href="../index.html">
<div class="headline">分类</div>
<div class="length-num">11</div>
</a></div>
</div>
</div>
<hr>
<div class="menus_items">
<div class="menus_item"><a class="site-page" href="javascript:void(0);"
rel="external nofollow"><span>文库</span><i
class="fas fa-chevron-down expand"></i></a>
<ul class="menus_item_child">
<li><a class="site-page child" href="../../archives/index.html"><i
class="fa-fw fa-duotone fa-list-timeline"></i> <span>文章列表</span></a></li>
<li><a class="site-page child" href="../index.html"><i class="fa-fw fa-duotone fa-list-tree"></i>
<span>全部分类</span></a></li>
<li><a class="site-page child" href="../../tags/index.html"><i class="fa-fw fa-duotone fa-tags"></i>
<span>全部标签</span></a></li>
<li><a class="site-page child" href="../../essay/index.html"><i
class="fa-fw fa-duotone fa-rectangles-mixed"></i> <span>即刻短文</span></a></li>
</ul>
</div>
<div class="menus_item"><a class="site-page" href="javascript:void(0);"
rel="external nofollow"><span>专栏</span><i
class="fas fa-chevron-down expand"></i></a>
<ul class="menus_item_child">
<li><a class="site-page child" href="../../tags/%E8%AE%BE%E8%AE%A1%E6%8A%A5%E5%91%8A/index.html"><i
class="fa-fw fa-duotone fa-swatchbook"></i> <span>设计报告</span></a></li>
<li><a class="site-page child" href="../../tags/Heocan/index.html"><i
class="fa-fw fa-duotone fa-pen-paintbrush"></i> <span>设计分享</span></a></li>
<li><a class="site-page child" href="../../tags/Sketch/index.html"><i
class="fa-fw fa-duotone fa-palette"></i> <span>设计工具</span></a></li>
<li><a class="site-page child" href="../../tags/%E6%B7%B7%E5%89%AA/index.html"><i
class="fa-fw fa-duotone fa-scissors"></i> <span>视频混剪</span></a></li>
</ul>
</div>
<div class="menus_item"><a class="site-page" href="javascript:void(0);"
rel="external nofollow"><span>友链</span><i
class="fas fa-chevron-down expand"></i></a>
<ul class="menus_item_child">
<li><a class="site-page child" href="../../moments/index.html"><i
class="fa-fw fa-duotone fa-fish-fins"></i> <span>友链鱼塘</span></a></li>
<li><a class="site-page child" href="../../link/index.html"><i
class="fa-fw fa-duotone fa-user-group"></i> <span>友情链接</span></a></li>
<li><a class="site-page child" href="javascript:travelling()" rel="external nofollow"><i
class="fa-fw fa-duotone fa-treasure-chest"></i> <span>宝藏博主</span></a></li>
</ul>
</div>
<div class="menus_item"><a class="site-page" href="javascript:void(0);"
rel="external nofollow"><span>我的</span><i
class="fas fa-chevron-down expand"></i></a>
<ul class="menus_item_child">
<li><a class="site-page child" href="../../tlink/index.html"><i
class="fa-fw fa-duotone fa-screwdriver-wrench"></i> <span>在线工具</span></a></li>
<li><a class="site-page child" href="../../movies/index.html"><i
class="fa-fw fa-duotone fa-film-simple"></i> <span>电影推荐</span></a></li>
<li><a class="site-page child" href="../../about/index.html"><i
class="fa-fw fa-duotone fa-face-awesome"></i> <span>关于本站</span></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="page" id="body-wrap">
<header class="not-top-img" id="page-header">
<nav th:replace="modules/nav :: nav"></nav>
</header>
<main class="layout" id="content-inner">
<div id="category">
<div class="category-in-bar">
<div class="category-in-bar-tips">分类</div>
<div id="category-bar">
<div class="category-bar-items" id="category-bar-items">
<div class="category-bar-item select" id="category-bar-home">
<a href="/">首页</a>
</div>
<div class="category-bar-item"
th:each="categoryItem : ${categoryFinder.listAll()}"
th:id="${categoryItem.spec.displayName}">
<a th:href="${categoryItem.status.permalink}"
th:text="${categoryItem.spec.displayName}"></a>
</div>
</div>
<!-- 跳转到分类页 -->
<a class="category-bar-more" href="#">更多</a></div>
</div>
<div class="article-sort-title" th:text="${category.spec.displayName}"></div>
<div class="article-sort">
<!-- 按照年份分组 -->
<div class="article-sort-item year">2021</div>
<div class="article-sort-item" th:each="post : ${posts.items}">
<a class="article-sort-item-img" th:href="${post.status.permalink}"
th:title="${post.spec.title}">
<img th:alt="${post.spec.title}" th:src="${post.spec.cover}">
</a>
<div class="article-sort-item-info">
<div class="article-sort-item-time"><i class="far fa-calendar-alt"></i>
<time class="post-meta-date-created"
th:attr="datetime=${#dates.format(post.spec.publishTime,'yyyy-MM-dd HH:mm:ss')}"
th:text="${#dates.format(post.spec.publishTime,'yyyy-MM-dd')}"
th:title="'创建于' + ${#dates.format(post.spec.publishTime,'yyyy-MM-dd HH:mm:ss')}">
</time>
</div>
<a class="article-sort-item-title" onclick="window.event.cancelBubble=!0"
th:href="${post.status.permalink}" th:text="${post.spec.title}"
th:title="${post.spec.title}"></a>
<div class="article-sort-item-tags">
<a class="article-meta__tags" event.cancelbubble onclick="window.event.cancelBubble=!0"
th:each="tag : ${post.tags}" th:href="${tag.status.permalink}">
<span class="tags-punctuation">#</span>
<th:block th:title="${tag.spec.displayName}"></th:block>
</a>
<span class="article-meta__link"></span>
</div>
</div>
</div>
</div>
<!-- 分页 -->
<nav id="pagination">
<div class="pagination"><span class="page-number current">1</span></div>
</nav>
</div>
<div class="aside-content" id="aside-content">
<div th:replace="modules/widgets/profile :: profile"></div>
<div class="card-widget heo-right-widget" id="card-wechat" onclick='window.open("/wechat/")'>
<div id="flip-wrapper">
<div id="flip-content">
<div class="face"></div>
<div class="back face"></div>
</div>
</div>
</div>
<div class="sticky_layout">
<div class="card-widget card-tags card-archives card-webinfo card-allinfo">
<th:block th:replace="modules/widgets/tags :: tags"></th:block>
<hr>
<th:block th:replace="modules/widgets/statistics :: statistics"></th:block>
</div>
</div>
</div>
</main>
<!-- 底部 -->
<footer th:replace="modules/footer :: footer"></footer>
</div>
<div id="rightside">
<div id="rightside-config-hide">
<button id="translateLink" title="简繁转换" type="button"></button>
<button id="darkmode" title="浅色和深色模式转换" type="button"><i class="fas fa-adjust"></i></button>
<button id="hide-aside-btn" title="单栏和双栏切换" type="button"><i class="fas fa-arrows-alt-h"></i></button>
</div>
<div id="rightside-config-show">
<button id="rightside_config" title="设置" type="button"><i class="fas fa-cog fa-spin"></i></button>
<button id="go-up" title="回到顶部" type="button"><i class="fas fa-arrow-up"></i></button>
</div>
</div>
<div class="js-pjax">
<div id="rightMenu">
<div class="rightMenu-group rightMenu-small">
<div class="rightMenu-item" id="menu-backward"><i class="fa-solid fa-arrow-left"></i></div>
<div class="rightMenu-item" id="menu-forward"><i class="fa-solid fa-arrow-right"></i></div>
<div class="rightMenu-item" id="menu-refresh"><i class="fa-solid fa-arrow-rotate-right"></i></div>
<div class="rightMenu-item" id="menu-top"><i class="fa-solid fa-arrow-up"></i></div>
</div>
<div class="rightMenu-group rightMenu-line rightMenuPlugin">
<div class="rightMenu-item" id="menu-copytext"><i class="fa-duotone fa-copy"></i><span>复制选中文本</span>
</div>
<div class="rightMenu-item" id="menu-pastetext"><i class="fa-duotone fa-paste"></i><span>粘贴文本</span>
</div>
<a class="rightMenu-item" id="menu-commenttext"><i
class="fa-duotone fa-comment-medical"></i><span>引用到评论</span></a>
<div class="rightMenu-item" id="menu-newwindow"><i
class="fa-duotone fa-window-restore"></i><span>新窗口打开</span></div>
<div class="rightMenu-item" id="menu-copylink"><i
class="fa-duotone fa-link-horizontal"></i><span>复制链接地址</span></div>
<div class="rightMenu-item" id="menu-copyimg"><i class="fa-duotone fa-images"></i><span>复制此图片</span>
</div>
<div class="rightMenu-item" id="menu-downloadimg"><i
class="fa-duotone fa-download"></i><span>下载此图片</span></div>
<div class="rightMenu-item" id="menu-search"><i
class="fa-solid fa-magnifying-glass"></i><span>站内搜索</span></div>
<div class="rightMenu-item" id="menu-searchBaidu"><i
class="fa-solid fa-magnifying-glass"></i><span>百度搜索</span></div>
<div class="rightMenu-item" id="menu-music-toggle"><i class="fas fa-play"></i><span>播放音乐</span></div>
<div class="rightMenu-item" id="menu-music-back"><i
class="fa-duotone fa-backward"></i><span>切换到上一首</span></div>
<div class="rightMenu-item" id="menu-music-forward"><i
class="fa-duotone fa-forward"></i><span>切换到下一首</span></div>
<div class="rightMenu-item" id="menu-music-playlist"
onclick='window.open("https://music.163.com/#/playlist?app_version=8.8.36&amp;id=5197802668","_blank")'>
<i class="fa-duotone fa-list-music"></i><span>查看所有歌曲</span></div>
<div class="rightMenu-item" id="menu-music-copyMusicName"><i class="fa-duotone fa-copy"></i>
<span>复制歌名</span></div>
</div>
<div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item menu-link"
id="menu-randomPost"><i
class="fa-duotone fa-dice"></i><span>随便逛逛</span></a><a class="rightMenu-item menu-link"
href="../index.html"><i
class="fa-duotone fa-list-tree"></i><span>博客分类</span></a><a class="rightMenu-item menu-link"
href="../../tags/index.html"><i
class="fa-duotone fa-tags"></i><span>文章标签</span></a></div>
<div class="rightMenu-group rightMenu-line"><a class="rightMenu-item menu-link" href="../../cc/index.html"><i
class="fa-solid fa-hand"></i><span>隐私协议</span></a><a class="rightMenu-item menu-link"
href="../../cc/index.html"><i
class="fa-solid fa-closed-captioning"></i><span>版权协议</span></a></div>
<div class="rightMenu-group rightMenu-line rightMenuOther">
<div class="rightMenu-item" id="menu-copy"><i
class="fa-duotone fa-link-horizontal"></i><span>复制地址</span></div>
<div class="rightMenu-item" id="menu-commentBarrage"><i class="fa-solid fa-message-captions"></i><span
class="menu-commentBarrage-text">关闭热评</span></div>
<div class="rightMenu-item" id="menu-darkmode"><i class="fa-solid fa-moon"></i><span
class="menu-darkmode-text">显示模式</span></div>
<div class="rightMenu-item" id="menu-translate"><i class="fa-duotone fa-language"></i><span>轉為繁體</span>
</div>
</div>
</div>
<div id="rightmenu-mask"></div>
</div>
<div>
<script th:src="@{/assets/js/utils.js}"></script>
<script th:src="@{/assets/js/main.js}"></script>
<script charset="utf-8" data-pjax="" th:src="@{/assets/zhheo/blogex.js}"></script>
<script src="https://cdn.zhheo.com/JS-Heo/translate/tw_cn.js"></script>
<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/instant.page/5.1.0/instantpage.min.js"
type="module"></script>
<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/vanilla-lazyload/17.3.1/lazyload.iife.min.js"></script>
<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.js"></script>
<script defer src="https://cdn.zhheo.com/public/algolia/algolia.js"></script>
<script>var preloader = {
endLoading: () => {
//- document.body.style.overflow = 'auto';
document.getElementById('loading-box').classList.add("loaded")
},
initLoading: () => {
//- document.body.style.overflow = '';
document.getElementById('loading-box').classList.remove("loaded")
}
}
window.addEventListener('load', preloader.endLoading())
setTimeout(function () {
preloader.endLoading();
}, 3000)</script>
<div class="js-pjax"></div>
<script>window.addEventListener('load', () => {
const changeContent = (content) => {
if (content === '') return content
content = content.replace(/<img.*?src="(.*?)"?[^\>]+>/ig, '[图片]') // replace image link
content = content.replace(/<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[链接]') // replace url
content = content.replace(/<pre><code>.*?<\/pre>/gi, '[代码]') // replace code
content = content.replace(/<[^>]+>/g, "") // remove html tag
if (content.length > 150) {
content = content.substring(0, 150) + '...'
}
return content
}
const getComment = () => {
const runTwikoo = () => {
twikoo.getRecentComments({
envId: 'https://twikoo.zhheo.com',
region: '',
pageSize: 6,
includeReply: true
}).then(function (res) {
const twikooArray = res.map(e => {
return {
'content': changeContent(e.comment),
'avatar': e.avatar,
'nick': e.nick,
'url': e.url + '#' + e.id,
'date': new Date(e.created).toISOString()
}
})
saveToLocal.set('twikoo-newest-comments', JSON.stringify(twikooArray), 10 / (60 * 24))
generateHtml(twikooArray)
}).catch(function (err) {
const $dom = document.querySelector('#card-newest-comments .aside-list')
$dom.innerHTML = "无法获取评论,请确认相关配置是否正确"
})
}
if (typeof twikoo === 'object') {
runTwikoo()
} else {
getScript('https://cdn2.tianli0.top/npm/twikoo@1.6.5/dist/twikoo.all.min.js').then(runTwikoo)
}
}
const generateHtml = array => {
let result = ''
if (array.length) {
for (let i = 0; i < array.length; i++) {
result += '<div class=\'aside-list-item\'>'
if (true) {
const name = 'data-lazy-src'
result += `<a href='${array[i].url}' class='thumbnail'><img ${name}='${array[i].avatar}' alt='${array[i].nick}'><div class='name'><span>${array[i].nick}</span></div></a>`
}
result += `<div class='content'>
<a class='comment' href='${array[i].url}'>${array[i].content}</a>
<time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div>
</div>`
}
} else {
result += '没有评论'
}
let $dom = document.querySelector('#card-newest-comments .aside-list')
$dom.innerHTML = result
window.lazyLoadInstance && window.lazyLoadInstance.update()
window.pjax && window.pjax.refresh($dom)
}
const newestCommentInit = () => {
if (document.querySelector('#card-newest-comments .aside-list')) {
const data = saveToLocal.get('twikoo-newest-comments')
if (data) {
generateHtml(JSON.parse(data))
} else {
getComment()
}
}
}
newestCommentInit()
document.addEventListener('pjax:complete', newestCommentInit)
})</script>
<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/qrcodejs/1.0.0/qrcode.min.js"></script>
<script data-pjax=""
src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/Swiper/6.6.2/swiper-bundle.min.js"></script>
<script th:src="@{/assets/zhheo/rightmenu.js}"></script>
<script th:src="@{/assets/zhheo/random.js}"></script>
<script data-pjax th:src="@{/zhheo/commentBarrage.js}"></script>
<script src="https://cdn.zhheo.com/public/waterfall/waterfall.min.js"></script>
<script src="https://cdn.zhheo.com/public/assist/assist-entry.min.js"></script>
<link href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/aplayer/1.10.1/APlayer.min.css" media="print"
onload='this.media="all"' rel="stylesheet">
<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/aplayer/1.10.1/APlayer.min.js"></script>
<script src="https://cdn.zhheo.com/public/aplayer/Meting2.min.js"></script>
<script src="https://cdn.zhheo.com/public/pjax/pjax.min.js"></script>
<script>let pjaxSelectors = [
'title',
'#config-diff',
'#body-wrap',
'#rightside-config-hide',
'#rightside-config-show',
'.js-pjax'
]
if (false) {
pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
}
var pjax = new Pjax({
elements: 'a:not([target="_blank"])',
selectors: pjaxSelectors,
cacheBust: false,
analytics: false,
scrollRestoration: false
})
document.addEventListener('pjax:send', function () {
// removeEventListener toc scroll
window.removeEventListener('scroll', window.tocScrollFn)
typeof preloader === 'object' && preloader.initLoading()
if (window.aplayers) {
for (let i = 0; i < window.aplayers.length; i++) {
if (!window.aplayers[i].options.fixed) {
window.aplayers[i].destroy()
}
}
}
typeof typed === 'object' && typed.destroy()
//reset readmode
const $bodyClassList = document.body.classList
$bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')
})
document.addEventListener('pjax:complete', function () {
window.refreshFn()
document.querySelectorAll('script[data-pjax]').forEach(item => {
const newScript = document.createElement('script')
const content = item.text || item.textContent || item.innerHTML || ""
Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
newScript.appendChild(document.createTextNode(content))
item.parentNode.replaceChild(newScript, item)
})
GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()
typeof chatBtnFn === 'function' && chatBtnFn()
typeof panguInit === 'function' && panguInit()
// google analytics
typeof gtag === 'function' && gtag('config', '', {'page_path': window.location.pathname});
// baidu analytics
typeof _hmt === 'object' && _hmt.push(['_trackPageview', window.location.pathname]);
typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()
// Analytics
if (false) {
MtaH5.pgv()
}
// prismjs
typeof Prism === 'object' && Prism.highlightAll()
typeof preloader === 'object' && preloader.endLoading()
})
document.addEventListener('pjax:error', (e) => {
if (e.request.status === 404) {
pjax.loadUrl('/404.html')
}
})</script>
</div>
<div class="js-pjax">
<script>coverColor(), removeLoading(), addRightMenuClickEvent(), navTitle(), heo.topPostScroll(), heo.topCategoriesBarScroll(), heo.sayhi(), heo.addTag(), heo.stopImgRightDrag(), heo.addFriendLinksInFooter(), heo.qrcodeCreate(), heo.hidecookie(), heo.onlyHome(), heo.addNavBackgroundInit(), heo.initIndexEssay(), heo.changeTimeInEssay(), heo.reflashEssayWaterFall(), heo.addMediumInEssay(), heo.darkModeStatus(), heo.categoriesBarActive(), heo.initThemeColor()</script>
</div>
</body>
</html>