diff --git a/_config.yml b/_config.yml
index 4832a515..50250311 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,3 +1,4 @@
+---
#---------------------------
# Hexo Theme Solitude
# Author: wleelw(王卓Sco)、yife68(亦封)
@@ -45,91 +46,90 @@ nav:
# 导航栏显示的内容
# Content displayed in the navigation bar
menu:
- # # 显示分类名
- # # Display category name
- # 项目:
- # # 显示子类
- # # Display subcategories
- # Solitude:
- # # 显示的图标
- # # Displayed icon
- # icon: https://bu.dusays.com/2023/11/08/654af68b25bb8.jpg
- # # 点击的跳转链接
- # # Click the jump link
- # url: https://github.com/wleelw/Hexo-Theme-solitude
+ # 显示分类名
+ # Display category name
+ 项目:
+ # # 显示子类
+ # # Display subcategories
+ # Solitude:
+ # # 显示的图标
+ # # Displayed icon
+ # icon: https://bu.dusays.com/2023/11/08/654af68b25bb8.jpg
+ # # 点击的跳转链接
+ # # Click the jump link
+ # url: https://github.com/wleelw/Hexo-Theme-solitude
# 导航栏内容
# Navigation bar content
# tip:此部分内容是顶部导航栏中间菜单区域
# tip: This part of the content is the menu area in the middle of the top navigation bar
menu:
- # 显示的大分类名称
- # Displayed category name
- # 文库:
- # # 点击跳转链接
- # # Click the jump link
- # # tip:如果没有子类就填跳转链接,例如:/archives,否则填false
- # # tip: If there is no subcategory, fill in the jump link, for example: /archives, otherwise fill in false
- # url: false
- # # 子类数组
- # # Subcategory array
- # child:
- # # 子类名称
- # # Subcategory name
- # 文章列表:
- # # 点击跳转链接
- # # Click the jump link
- # url: /archives/
- # # 子类名称左侧图标
- # # Subcategory name left icon
- # icon: sco-folder-fill
- # 全部分类:
- # url: /categories/
- # icon: sco-checkbox-multiple-blank-fill
- # 全部标签:
- # url: /tags/
- # icon: sco-price-tag-fill
- # 友链:
- # url: false
- # child:
- # 友情链接:
- # url: /links/
- # icon: sco-group-fill
- # 宝藏博主:
- # url: javascript:travelling()
- # icon: sco-gift-fill
- # 我的:
- # url: false
- # child:
- # 装备:
- # url: /equipment/
- # icon: sco-laptop-line
- # 工具箱:
- # url: /tlink/
- # icon: sco-tools-fill
- # 关于:
- # url: false
- # child:
- # 关于本站:
- # url: /about/
- # icon: sco-contacts-fill
-
+ # 显示的大分类名称
+ # Displayed category name
+ # 文库:
+ # # 点击跳转链接
+ # # Click the jump link
+ # # tip:如果没有子类就填跳转链接,例如:/archives,否则填false
+ # # tip: If there is no subcategory, fill in the jump link, for example: /archives, otherwise fill in false
+ # url: false
+ # # 子类数组
+ # # Subcategory array
+ # child:
+ # # 子类名称
+ # # Subcategory name
+ # 文章列表:
+ # # 点击跳转链接
+ # # Click the jump link
+ # url: /archives/
+ # # 子类名称左侧图标
+ # # Subcategory name left icon
+ # icon: sco-folder-fill
+ # 全部分类:
+ # url: /categories/
+ # icon: sco-checkbox-multiple-blank-fill
+ # 全部标签:
+ # url: /tags/
+ # icon: sco-price-tag-fill
+ # 友链:
+ # url: false
+ # child:
+ # 友情链接:
+ # url: /links/
+ # icon: sco-group-fill
+ # 宝藏博主:
+ # url: javascript:travelling()
+ # icon: sco-gift-fill
+ # 我的:
+ # url: false
+ # child:
+ # 装备:
+ # url: /equipment/
+ # icon: sco-laptop-line
+ # 工具箱:
+ # url: /tlink/
+ # icon: sco-tools-fill
+ # 关于:
+ # url: false
+ # child:
+ # 关于本站:
+ # url: /about/
+ # icon: sco-contacts-fill
# 导航栏右侧按钮
# Button on the right side of the navigation bar
# tip:只需填写true和false即可
# tip: Just fill in true and false
right:
- random: false # 随机文章跳转 true:开启 / false:关闭 : random post jump true: on / false: off
- console: false #控制台 true:开启 / false:关闭 : console true: on / false: off
+ random: false # 随机文章跳转 true:开启 / false:关闭 : random post jump true: on / false: off
+ console: false #控制台 true:开启 / false:关闭 : console true: on / false: off
# 从左至右
# From left to right
custom:
-# - name: 开往 - 友链接力 # 显示文字 / Displayed text
-# url: https://www.travellings.cn/go.html # 跳转链接 / Jump link
-# icon: sco-train-line # 图标 / Icon
-# onclick: # 点击事件 / Click event
-# id: travellings_button # id
+ # - name: 开往 - 友链接力 # 显示文字 / Displayed text
+ # url: https://www.travellings.cn/go.html # 跳转链接 / Jump link
+ # icon: sco-train-line # 图标 / Icon
+ # onclick: # 点击事件 / Click event
+ # id: travellings_button # id
# 首页顶部样式
# Home top style
@@ -151,33 +151,33 @@ hometop:
# 轮播icon
# Carousel icon
icon:
- # 名字 / Name
- # HTML:
- # # 图片 / Image
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/HTML.png
- # # 背景色 / Background color
- # color: '#e9572b'
- # JS:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/JS.png
- # color: '#f7cb4f'
- # Kotlin:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/kotlin-logo.svg
- # color: '#ffffff'
- # Docker:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/docker.png
- # color: '#57b6e6'
- # Flutter:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/flutter.png
- # color: '#ffffff'
- # WebPack:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/webpack.png
- # color: '#2e3a41'
- # Git:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/git.png
- # color: '#df5b40'
- # VS:
- # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/vs-logo.svg
- # color: '#ffffff'
+ # # 名字 / Name
+ # HTML:
+ # # 图片 / Image
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/HTML.png
+ # # 背景色 / Background color
+ # color: "#e9572b"
+ # JS:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/JS.png
+ # color: "#f7cb4f"
+ # Kotlin:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/kotlin-logo.svg
+ # color: "#ffffff"
+ # Docker:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/docker.png
+ # color: "#57b6e6"
+ # Flutter:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/flutter.png
+ # color: "#ffffff"
+ # WebPack:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/webpack.png
+ # color: "#2e3a41"
+ # Git:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/git.png
+ # color: "#df5b40"
+ # VS:
+ # img: https://npm.elemecdn.com/wleelw-blog-abs@1.0.0/img/icon/vs-logo.svg
+ # color: "#ffffff"
# 顶部三大分类
# Top three categories
@@ -224,7 +224,7 @@ hometop:
img: /img/default.png
# 阴影颜色
# Shadow color
- color: '#ff0000'
+ color: "#ff0000"
# --------------------------------------
# Aside Settings
@@ -304,15 +304,15 @@ aside:
- 💢 壮汉人狠话不多
- 🎮 电竞游戏爱好者
information:
- # # 悬停显示文字
- # Github:
- # # 图标
- # icon: scoicon sco-github-line
- # # 跳转链接
- # url: https://github.com/wleelw/Hexo-Theme-slitude
- # Bilibili:
- # icon: scoicon sco-bilibili-line
- # url: https://space.bilibili.com/1329819902
+ # # 悬停显示文字
+ # Github:
+ # # 图标
+ # icon: scoicon sco-github-line
+ # # 跳转链接
+ # url: https://github.com/wleelw/Hexo-Theme-slitude
+ # Bilibili:
+ # icon: scoicon sco-bilibili-line
+ # url: https://space.bilibili.com/1329819902
# 二维码
# Official account QR code
@@ -358,14 +358,14 @@ aside:
# 高亮显示标签列表
# Highlighted tag list
list:
- - 'Solitude-使用'
+ - "Solitude-使用"
# 侧边栏归档
# aside archive
archive:
enable: false
# 显示类型
- type: 'month' # monthly: 按月 / yearly: 按年 : monthly: by month / yearly: by year
+ type: "month" # monthly: 按月 / yearly: 按年 : monthly: by month / yearly: by year
# 建站信息
# Website information
@@ -390,7 +390,7 @@ aside:
runtimeenable: true
# 格式:yyyy-MM-dd hh-mm-ss
# Format: yyyy-MM-dd hh-mm-ss
- runtime: '2023-04-20 00:00:00'
+ runtime: "2023-04-20 00:00:00"
# -------------------------
# 文章页、页面配置
@@ -399,7 +399,7 @@ aside:
# 页面默认设置
# page default settings
page:
- error: true # 404页面 / 404 page
+ error: true # 404页面 / 404 page
tags: true # 标签页 / Tags page
categories: true # 分类页 / Categories page
default: # 默认值 / Default value
@@ -476,13 +476,13 @@ post:
# --------------------------------------
theme_color:
dark: "#ffc848" # 暗色模式 / Dark mode
- dark_op: '#f2b94b23' # 暗色模式透明 / Dark mode transparent
- dark_op_deep: '#f2b94bdd' # 暗色模式透明深色 / Dark mode transparent dark
- dark_none: '#f2b94b00' # 暗色模式透明无色 / Dark mode transparent colorless
+ dark_op: "#f2b94b23" # 暗色模式透明 / Dark mode transparent
+ dark_op_deep: "#f2b94bdd" # 暗色模式透明深色 / Dark mode transparent dark
+ dark_none: "#f2b94b00" # 暗色模式透明无色 / Dark mode transparent colorless
light: "#425AEF" # 亮色模式 / Light mode
- light_op: '#4259ef23' # 亮色模式透明 / Light mode transparent
- light_op_deep: '#4259efdd' # 亮色模式透明深色 / Light mode transparent dark
- light_none: '#4259ef01' # 亮色模式透明无色 / Light mode transparent colorless
+ light_op: "#4259ef23" # 亮色模式透明 / Light mode transparent
+ light_op_deep: "#4259efdd" # 亮色模式透明深色 / Light mode transparent dark
+ light_none: "#4259ef01" # 亮色模式透明无色 / Light mode transparent colorless
# 主题显示模式调整
# theme display mode adjustment
@@ -515,38 +515,40 @@ footer:
# 底部上方一排图标
# Bottom row of icons
information:
- left: # 左侧显示图标 / Left display icon
- # Github:
- # icon: scoicon sco-bilibili-line
- # url: https://github.com/wleelw
- # Mail:
- # icon: scoicon sco-mail-line
- # url: mailto:wleelw@wzsco.top
- right: # 右侧显示图标 / Right display icon
- # Bilibili:
- # icon: scoicon sco-bilibili-line
- # url: https://space.bilibili.com/1329819902
- # 抖音:
- # icon: scoicon sco-douyin-fill
- # url: https://v.douyin.com/iJsLc8jt/
+ # 左侧显示图标 / Left display icon
+ left:
+ # Github:
+ # icon: scoicon sco-bilibili-line
+ # url: https://github.com/wleelw
+ # Mail:
+ # icon: scoicon sco-mail-line
+ # url: mailto:wleelw@wzsco.top
+ # 右侧显示图标 / Right display icon
+ right:
+ # Bilibili:
+ # icon: scoicon sco-bilibili-line
+ # url: https://space.bilibili.com/1329819902
+ # 抖音:
+ # icon: scoicon sco-douyin-fill
+ # url: https://v.douyin.com/iJsLc8jt/
# 底部导航栏
# Bottom navigation bar
- group: # 从左至右 / From left to right
- # 导航:
- # 归档: /archives/
- # 分类: /categories/
- # 标签: /tags/
- # 服务:
- # 阿里云: https://aliyun.com/
- # 51la统计: https://v6.51.la/
- # 百度统计: https://tongji.baidu.com/
- # 支持:
- # 打赏记录: /about/
- # 协议:
- # Cookies: /cookies/
- # 用户协议: /privacy/
- # 版权协议: /copyright/
+ group:
+ # 导航:
+ # 归档: /archives/
+ # 分类: /categories/
+ # 标签: /tags/
+ # 服务:
+ # 阿里云: https://aliyun.com/
+ # 51la统计: https://v6.51.la/
+ # 百度统计: https://tongji.baidu.com/
+ # 支持:
+ # 打赏记录: /about/
+ # 协议:
+ # Cookies: /cookies/
+ # 用户协议: /privacy/
+ # 版权协议: /copyright/
# 底部随机友链
# Random links at the bottom
@@ -605,12 +607,6 @@ says:
# 即刻短文仅展示前n条
# Jike short text only shows the first n
strip: 30
- # 模式选择。local:本地静态 / json:动态json / memos:动态Memos
- # Mode selection. Local: local static/JSON: dynamic JSON/memory: dynamic Memos
- mode: local
- # 动态模式地址。如为json或memos模式,此项为必填。链接获取以及格式可查看主题文档。
- # Dynamic mode address. If it is in JSON or Memos mode, this field is mandatory. The link acquisition and format can be viewed in the theme document.
- mode_link: # https://example.com/api/v1/memo?creatorId=1&tag=says
# -------------------------
# meeting-api,用于界面中的音乐胶囊和音乐馆页,可自定义api,不会请勿动。
@@ -672,28 +668,28 @@ keyboard:
# 键盘控制配置
# Keyboard control configuration
list:
- # name: 按键名称
- # name: Key name
- # key: 按键
- # key: Key
- # func: 方法
- # func: Function
- # sco: sco内置方法
- # sco: sco built-in method
- # url: 跳转链接
- # url: Jump link
-# - name: 关闭快捷键功能
-# key: K
-# func: keyboard
-# - name: 打开中控台
-# key: A
-# sco: showConsole
-# - name: 播放/暂停音乐
-# key: M
-# sco: musicToggle
-# - name: 打开友情链接
-# key: L
-# url: '/links/'
+ # name: 按键名称
+ # name: Key name
+ # key: 按键
+ # key: Key
+ # func: 方法
+ # func: Function
+ # sco: sco内置方法
+ # sco: sco built-in method
+ # url: 跳转链接
+ # url: Jump link
+ # - name: 关闭快捷键功能
+ # key: K
+ # func: keyboard
+ # - name: 打开中控台
+ # key: A
+ # sco: showConsole
+ # - name: 播放/暂停音乐
+ # key: M
+ # sco: musicToggle
+ # - name: 打开友情链接
+ # key: L
+ # url: "/links/"
# 懒加载
# lazyload
@@ -760,13 +756,13 @@ translate:
opengraph:
enable: false
options:
-# twitter_card:
-# twitter_image:
-# twitter_id:
-# twitter_site:
-# google_plus:
-# fb_admins:
-# fb_app_id:
+ # twitter_card:
+ # twitter_image:
+ # twitter_id:
+ # twitter_site:
+ # google_plus:
+ # fb_admins:
+ # fb_app_id:
# 字数统计
# word count
@@ -843,24 +839,24 @@ comment:
newComment: false # 最新评论开关 / Latest comment switch
# 匿名评论前部分随机信息 / Anonymous comment front random information
randomInfoStart:
- - '聪敏的'
- - '可爱的'
- - '美丽的'
+ - "聪敏的"
+ - "可爱的"
+ - "美丽的"
# 匿名评论后部分随机信息 / Anonymous comment after random information
randomInfoEnd:
- - '白菜'
- - '小可爱'
- - '小仙女'
+ - "白菜"
+ - "小可爱"
+ - "小仙女"
# twikoo 配置信息
# twikoo settings
twikoo: # https://twikoo.js.org/
envId: # url: https://twikoo.sondy.top/
- lang: 'zh-CN' # 语言
- accessToken: # accessToken
+ lang: "zh-CN" # 语言
+ accessToken: # accessToken
# waline 配置信息
# waline settings
waline: # https://waline.js.org/
- envId: # url: https://waline.wzsco.top
+ envId: # url: https://waline.wzsco.top
pageview: true # 是否开启页面访问量统计 / Whether to enable page access statistics
option: # waline配置项 / waline configuration item
@@ -896,7 +892,7 @@ extends:
pwa:
enable: false
manifest: /manifest.json # manifest.json 文件路径
- theme_color: '#ffffff' # 主题颜色
+ theme_color: "#ffffff" # 主题颜色
mask_icon: https://cdn.cbd.int/solitude-source/img/pwa/180.png # 遮罩图标
apple_touch_icon: https://cdn.cbd.int/solitude-source/img/pwa/180.png # 苹果触摸图标
bookmark_icon: https://cdn.cbd.int/solitude-source/img/pwa/180.png # 书签图标
@@ -923,27 +919,27 @@ CDN:
custom_format: https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file}
option:
- scoicon_css: https://cdn.cbd.int/solitude-source/icon/scoicon.min.css
- waterfall: https://cdn.cbd.int/solitude-source/js/waterfall.min.js
- universe_js: https://cdn.cbd.int/solitude-source/js/universe.min.js
-# algolia_search:
-# instantsearch:
-# pjax:
-# twikoo:
-# waline_js:
-# waline_css:
-# sharejs:
-# sharejs_css:
-# katex:
-# katex_copytex:
-# lazyload:
-# aplayer_css:
-# aplayer_js:
-# meting_js:
-# pace_js:
-# lunr_js:
-# swiper_css:
-# swiper_js:
-# busuanzi_js:
-# snackbar_css:
-# snackbar_js:
\ No newline at end of file
+ scoicon_css: https://cdn.cbd.int/solitude-source/icon/scoicon.min.css
+ waterfall: https://cdn.cbd.int/solitude-source/js/waterfall.min.js
+ universe_js: https://cdn.cbd.int/solitude-source/js/universe.min.js
+ # algolia_search:
+ # instantsearch:
+ # pjax:
+ # twikoo:
+ # waline_js:
+ # waline_css:
+ # sharejs:
+ # sharejs_css:
+ # katex:
+ # katex_copytex:
+ # lazyload:
+ # aplayer_css:
+ # aplayer_js:
+ # meting_js:
+ # pace_js:
+ # lunr_js:
+ # swiper_css:
+ # swiper_js:
+ # busuanzi_js:
+ # snackbar_css:
+ # snackbar_js:
diff --git a/languages/en-US.yml b/languages/en-US.yml
index c2ee4e00..ffed0ec5 100755
--- a/languages/en-US.yml
+++ b/languages/en-US.yml
@@ -75,7 +75,7 @@ search:
head:
noscript: Please enable JavaScript to view the site
- console: 'Program: Hexo | Theme: Hexo-Theme-Solitude | Author: WangZhuoSco、YiFeng | Github: https://github.com/wleelw/Hexo-theme-solitude | Version: v1.4.6 😄'
+ console: 'Program: Hexo | Theme: Hexo-Theme-Solitude | Author: WangZhuoSco、YiFeng | Github: https://github.com/wleelw/Hexo-theme-solitude | Version: v1.4.7 😄'
aside:
postcount: 'Posts :'
@@ -144,4 +144,7 @@ rightmenu:
dark: Dark
light: Light
chs_to_cht: Traditional
- cht_to_chs: Simplified
\ No newline at end of file
+ cht_to_chs: Simplified
+
+404:
+ button: Back to home
\ No newline at end of file
diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml
index 43f8ec2e..1a672ca1 100755
--- a/languages/zh-CN.yml
+++ b/languages/zh-CN.yml
@@ -75,7 +75,7 @@ search:
head:
noscript: 开启JavaScript才能访问本站哦~
- console: '程序:Hexo | 主题:Hexo-Theme-Solitude | 作者:王卓Sco、亦封 | Github: https://github.com/wleelw/Hexo-theme-solitude | 版本:v1.4.6 😄'
+ console: '程序:Hexo | 主题:Hexo-Theme-Solitude | 作者:王卓Sco、亦封 | Github: https://github.com/wleelw/Hexo-theme-solitude | 版本:v1.4.7 😄'
aside:
postcount: '文章总数 :'
@@ -144,4 +144,7 @@ rightmenu:
dark: 深色模式
light: 浅色模式
chs_to_cht: 轉為繁體
- cht_to_chs: 转为简体
\ No newline at end of file
+ cht_to_chs: 转为简体
+
+404:
+ button: 返回首页
\ No newline at end of file
diff --git a/languages/zh-TW.yml b/languages/zh-TW.yml
index 5c2f6157..9766ea0a 100755
--- a/languages/zh-TW.yml
+++ b/languages/zh-TW.yml
@@ -75,7 +75,7 @@ search:
head:
noscript: 開啟JavaScript才能訪問本站哦~
- console: '程式:Hexo |主題:Hexo-Theme-Solitude |作者:王卓Sco、亦封 |Github位址: https://github.com/wleelw/Hexo-theme-solitude |版本:v1.4.6 😄'
+ console: '程式:Hexo |主題:Hexo-Theme-Solitude |作者:王卓Sco、亦封 |Github位址: https://github.com/wleelw/Hexo-theme-solitude |版本:v1.4.7 😄'
aside:
postcount: '文章數:'
@@ -144,4 +144,7 @@ rightmenu:
dark: 深色模式
light: 淺色模式
chs_to_cht: 轉為繁體
- cht_to_chs: 转为简体
\ No newline at end of file
+ cht_to_chs: 转为简体
+
+404:
+ button: 返回首頁
\ No newline at end of file
diff --git a/layout/404.pug b/layout/404.pug
index 5b4e27ac..9baadbfd 100644
--- a/layout/404.pug
+++ b/layout/404.pug
@@ -3,13 +3,13 @@ extends includes/layout.pug
block content
#error-wrap
.error-content
- .error-img(style='background-image: url(' + url_for(theme.errorpage.img) + ')')
+ .error-img(style=`background-image: url(${url_for(theme.errorpage.img)})`)
.error-info
h1.error_title 404
.error_subtitle= theme.errorpage.text
a.button--animated(href="/")
i.scoicon.sco-external-link
- | 回到主页
+ =_p('404.button')
if theme.errorpage.recommendList
.aside-list
diff --git a/layout/includes/head/config.pug b/layout/includes/head/config.pug
index e27087df..b91071a3 100644
--- a/layout/includes/head/config.pug
+++ b/layout/includes/head/config.pug
@@ -7,7 +7,7 @@
localSearch = JSON.stringify({
preload: theme.search.local.preload,
path: theme?.search?.local?.CDN || '/search.xml'
- })
+ });
break;
case 'algolia':
algolia = JSON.stringify({
@@ -17,7 +17,7 @@
hits: {
per_page: theme?.search?.algolia?.hits?.per_page || 10
}
- })
+ });
break;
}
}
@@ -27,12 +27,12 @@
translate = JSON.stringify({
defaultEncoding: theme.translate.defaultEncoding,
translateDelay: theme.translate.translateDelay,
- })
+ });
}
- const commentInfoStart = theme.comment.randomInfoStart.map(item => `"${item}"`) || ""
- const commentInfoEnd = theme.comment.randomInfoEnd.map(item => `"${item}"`) || ""
- var sayhello2 = theme.aside.card.sayhello2.map(item => `"${item}"`) || []
+ const commentInfoStart = theme.comment.randomInfoStart.map(item => `"${item}"`) || [];
+ const commentInfoEnd = theme.comment.randomInfoEnd.map(item => `"${item}"`) || [];
+ const sayhello2 = theme.aside.card.sayhello2.map(item => `"${item}"`) || [];
script.
const GLOBAL_CONFIG = {
@@ -119,4 +119,4 @@ script.
enable: !{theme.music.enable},
},
translate: !{translate},
- }
\ No newline at end of file
+ };
\ No newline at end of file
diff --git a/layout/includes/head/opengraph.pug b/layout/includes/head/opengraph.pug
index 5d71c575..4a8f40a5 100644
--- a/layout/includes/head/opengraph.pug
+++ b/layout/includes/head/opengraph.pug
@@ -1,10 +1,11 @@
if theme.opengraph.enable
-
const coverVal = page.cover || theme.site.siteIcon
- let ogOption = Object.assign({
- type: is_post() ? 'article' : 'website',
- image: coverVal ? full_url_for(coverVal) : '',
- }, theme.opengraph.options)
+ let ogOption = {
+ type: is_post() ? 'article' : 'website',
+ image: coverVal ? full_url_for(coverVal) : '',
+ ...theme.opengraph.options
+ }
-
!= open_graph(ogOption)
else
diff --git a/layout/includes/head/pwa.pug b/layout/includes/head/pwa.pug
index 7aab17fe..58b147cc 100644
--- a/layout/includes/head/pwa.pug
+++ b/layout/includes/head/pwa.pug
@@ -1,11 +1,11 @@
if theme.pwa.enable
meta(name="theme-color", content=theme.pwa.theme_color)
link(rel="manifest" href=url_for(theme.pwa.manifest))
- if(theme.pwa.theme_color)
+ if theme.pwa.theme_color
meta(name="msapplication-TileColor" content=theme.pwa.theme_color)
if theme.pwa.mask_icon
link(rel="mask-icon", href=theme.pwa.mask_icon, color=theme.pwa.theme_color)
- if(theme.pwa.apple_touch_icon)
+ if theme.pwa.apple_touch_icon
link(rel="apple-touch-icon" sizes="180x180" href=url_for(theme.pwa.apple_touch_icon))
if theme.pwa.favicon_16_16
link(rel="icon", type="image/png", sizes="16x16", href=theme.pwa.favicon_16_16)
@@ -13,7 +13,6 @@ if theme.pwa.enable
link(rel="icon", type="image/png", sizes="32x32", href=theme.pwa.favicon_32_32)
if theme.pwa.bookmark_icon
link(rel="bookmark", href=theme.pwa.bookmark_icon)
-
else
meta(name="apple-mobile-web-app-capable", content=config.title)
link(rel="bookmark", href=theme.site.siteIcon)
diff --git a/layout/includes/inject/body.pug b/layout/includes/inject/body.pug
index 5940b3c2..cc311bd7 100644
--- a/layout/includes/inject/body.pug
+++ b/layout/includes/inject/body.pug
@@ -1,5 +1,15 @@
- page.type = is_post() ? 'post' : page.type
+mixin katex
+ if theme.katex.copytex
+ script(src=url_for(theme.cdn.katex_copytex))
+ script.
+ (() => {
+ document.querySelectorAll('#article-container span.katex-display').forEach(item => {
+ utils.wrap(item, 'div', {class: 'katex-wrap'})
+ })
+ })();
+
div
script(src=url_for(theme.cdn.main))
script(src=url_for(theme.cdn.utils))
@@ -19,24 +29,11 @@ div
if theme.translate.enable
script(src=url_for(theme.cdn.translate))
- mixin katex
- link(rel="stylesheet", href=url_for(theme.cdn.katex))
- if theme.katex.copytex
- script(src=url_for(theme.cdn.katex_copytex))
- script.
- (() => {
- document.querySelectorAll('#article-container span.katex-display').forEach(item => {
- utils.wrap(item, 'div', {class: 'katex-wrap'})
- })
- })()
-
if theme.katex && theme.katex.enable
- if theme.katex.per_page
- if is_post() || is_page()
- +katex
- else
- if page.katex
- +katex
+ if theme.katex.per_page && (is_post() || is_page())
+ +katex
+ else if page.katex
+ +katex
script(src=url_for(theme.cdn.pjax))
if theme.lazyload.enable
@@ -111,6 +108,9 @@ div#js-pjax
if page.type === 'album' && theme.album.enable
script.
initGallery()
+ if is_home() && theme.says.home_mini
+ script.
+ sco.initbbtalk();
if page.type === 'says' && theme.says.enable
script.
window.addEventListener('resize', utils.throttle(function () {
diff --git a/layout/includes/inject/head.pug b/layout/includes/inject/head.pug
index 8205335b..fad7d2a5 100644
--- a/layout/includes/inject/head.pug
+++ b/layout/includes/inject/head.pug
@@ -15,6 +15,9 @@ if theme.says.home_mini
if theme.lightbox && theme.fancybox
link(rel="stylesheet", href=url_for(theme.cdn.fancyapps_css))
+if theme.katex && theme.katex.enable
+ link(rel="stylesheet", href=url_for(theme.cdn.katex))
+
// Open Graph
include ../head/opengraph.pug
@@ -78,8 +81,6 @@ script.
"%c🔥 !{_p('head.console')}",
"color: #fff; background: linear-gradient(-25deg, #a8edea, #fed6e3); padding: 8px 15px; border-radius: 8px; text-shadow: 2px 2px 4px white; color: black;"
);
-
-// custom inject
if theme.extends.head
each item in theme.extends.head
!= item
\ No newline at end of file
diff --git a/layout/includes/mixins/pagination.pug b/layout/includes/mixins/pagination.pug
index 8057bb4a..983d239c 100644
--- a/layout/includes/mixins/pagination.pug
+++ b/layout/includes/mixins/pagination.pug
@@ -3,6 +3,6 @@ nav#pagination
- var options = {mid_size: 1,escape: false,next_text: '
',prev_text: ' '}
!=paginator(options)
div.toPageGroup
- input#toPageText(oninput="value=value.replace(/[^0-9]/g,'')", maxlength="3", title="跳转到指定页面", onkeyup="if (this.value === '0') this.value = ''")
+ input#toPageText(oninput="value=value.replace(/[^0-9]/g,'')" maxlength="3" title="跳转到指定页面" onkeyup="if (this.value === '0') this.value = ''")
a#toPageButton(onclick="sco.toPage()")
i.scoicon.sco-show-right-line
\ No newline at end of file
diff --git a/layout/includes/page/rss.pug b/layout/includes/page/rss.pug
deleted file mode 100644
index e6a397c9..00000000
--- a/layout/includes/page/rss.pug
+++ /dev/null
@@ -1,20 +0,0 @@
-.rss-plan-list
- a.rss-plan-item.rss-plan-wechat(href=page.wechatOA, title="公众号")
- .rss-plan-description 推送精选文章 推送全文
- .rss-plan-info-group
- .rss-plan-title 公众号订阅
- .rss-plan-info 推荐的订阅方式
- img.rss-plan-icon(src="https://bu.dusays.com/2023/11/01/6541d14a4de78.png", alt="wechat")
- a.rss-plan-item.rss-plan-mail(href=page.emailOA, title="email")
- .rss-plan-description 推送全部文章 推送封面与简介
- .rss-plan-info-group
- .rss-plan-title 邮件订阅
- .rss-plan-info 推荐的订阅方式
- img.rss-plan-icon(src="https://bu.dusays.com/2023/11/01/6541d16c3ea22.png", alt="email")
- a.rss-plan-item.rss-plan-rss(href=page.rssOA, title="rss")
- .rss-plan-description 推送全部文章 推送简介
- .rss-plan-info-group
- .rss-plan-title RSS
- .rss-plan-info 备用订阅方式
- img.rss-plan-icon(src="https://bu.dusays.com/2023/11/01/6541d184e2a09.png", alt="rss")
-!= page.content
\ No newline at end of file
diff --git a/layout/includes/page/says.pug b/layout/includes/page/says.pug
index de004a95..ff902210 100644
--- a/layout/includes/page/says.pug
+++ b/layout/includes/page/says.pug
@@ -3,13 +3,50 @@ if theme.says.enable
#bber
section.timeline.page-1
ul.list#waterfall
- case theme.says.mode
- when 'local'
- include ../widgets/page/says/local
- when 'json'
- include ../widgets/page/says/json
- when 'memos'
- include ../widgets/page/says/memos
+ each item in site.data.essay.essay_list.slice(0, theme.says.strip)
+ li.item
+ if theme.says.style === 2
+ .meta
+ img.avatar(src=theme.aside.card.author.img)
+ .info
+ span.bber_nick= config.author
+ time.datetime.bber_date(datetime=moment(item.date).format())
+ if item.content
+ a.bber-reply.goComment(onclick=`sco.toTalk('${item.content}')`)
+ i.scoicon.sco-chat-fill
+
+ #bber-content
+ p.datacont= item.content
+ if item.image
+ .bber-content-img
+ each img in item.image
+ img(src=img title="即刻短文配图")
+
+ if item.aplayer
+ .bber-music
+ meting-js(server=item.aplayer.server type="song" id=item.aplayer.id mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0")
+
+ if item.video
+ .bber-video
+ if item.video.player
+ video(src=item.video.player controls="controls" style="object-fit: cover;")
+ if item.video.bilibili
+ iframe(src='//player.bilibili.com/player.html?auto-play=0&bvid=' + item.video.bilibili scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true")
+
+ if theme.says.style === 1
+ hr
+ .bber-bottom
+ .bber-info
+ .bber-info-time
+ i.scoicon.sco-calendar-todo-fill
+ time.datetime(datetime=moment(item.date).format())
+ if item.link
+ a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接" target="_blank")
+ i.scoicon.sco-link-m-line
+ | 链接
+ if item.content
+ a.bber-reply(onclick=`sco.toTalk('${item.content}')`)
+ i.scoicon.sco-chat-fill
#bber-tips
if theme.says.strip === -1
| - 已展开所有短文 -
diff --git a/layout/includes/widgets/home/bb/json.pug b/layout/includes/widgets/home/bb/json.pug
deleted file mode 100644
index 3e6392b2..00000000
--- a/layout/includes/widgets/home/bb/json.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-script.
- async function getSays () {
- document.addEventListener('DOMContentLoaded', this)
- document.addEventListener('pjax:complete', this)
- const htmlTagRegex = /<[^>]+>/g;
- document.querySelector('#bber-talk').innerHTML = '
';
- await fetch('!{theme.says.mode_link}')
- .then(res => res.json())
- .then(res => {
- let list = res.filter(item => item.content).slice(0, 10);
-
- document.querySelector('#bber-talk').innerHTML = list.map(item => {
- let content = item.content ? item.content.replace(htmlTagRegex, '') : '';
- content += item.image ? ' ' : '';
- content += item.aplayer ? ' ' : '';
- content += item.video ? ' ' : '';
- content += item.bilibili ? ' ' : '';
- content += item.link ? ` ` : '';
- return `${content}
`;
- }).join('');
- sco.initbbtalk();
- }).catch(err => console.log('bbtime |', err));
- }
- document.addEventListener('DOMContentLoaded', getSays)
- document.addEventListener('pjax:complete', getSays)
\ No newline at end of file
diff --git a/layout/includes/widgets/home/bb/local.pug b/layout/includes/widgets/home/bb/local.pug
deleted file mode 100644
index 80dcec4d..00000000
--- a/layout/includes/widgets/home/bb/local.pug
+++ /dev/null
@@ -1,20 +0,0 @@
-each item, i in site.data.essay.essay_list.slice(0, 10)
- .li-style.swiper-slide
- | #{item.content}
- if item.image
- i.scoicon.sco-image-fill
- if item.aplayer
- i.scoicon.sco-disc-fill
- if item.video
- i.scoicon.sco-video-fill
- if item.bilibili
- i.scoicon.sco-bilibili-line
- if item.link
- i.scoicon.sco-links
-script.
- document.addEventListener('DOMContentLoaded',()=>{
- sco.initbbtalk();
- })
- document.addEventListener('pjax:complete',()=>{
- sco.initbbtalk();
- })
\ No newline at end of file
diff --git a/layout/includes/widgets/home/bb/memos.pug b/layout/includes/widgets/home/bb/memos.pug
deleted file mode 100644
index d28a6237..00000000
--- a/layout/includes/widgets/home/bb/memos.pug
+++ /dev/null
@@ -1,28 +0,0 @@
-script.
- async function getSays() {
- document.querySelector('#bber-talk').innerHTML = '
'
- await fetch('!{theme.says.mode_link}')
- .then(response => response.json())
- .then(data => {
- let aplayerRegex = /{aplayer,(.*?),(.*?)}/g;
- let bilibiliRegex = /{bilibili,(.*?)}/g;
- let playerRegex = /{player,(.*?)}/g;
- let linkRegex = /(? {
- let content = item.content.match(contentRegex, '$1').map(item => item.replace(contentRegex, '$1'));
- let imageBox = item.content.match(imageRegex) ? ' ' : '';
- let aplayer = item.content.match(aplayerRegex) ? ' ' : '';
- let video = item.content.match(playerRegex) ? ' ' : item.content.match(bilibiliRegex) ? ' ' : '';
- let link = item.content.match(linkRegex) ? ` ` : '';
-
- return `${content + aplayer + video + imageBox + link}
`
- }).join(' ')
- sco.initbbtalk();
- })
- .catch(error => console.error('bbtime | ', error));
- }
- document.addEventListener('DOMContentLoaded', getSays)
- document.addEventListener('pjax:complete', getSays)
\ No newline at end of file
diff --git a/layout/includes/widgets/home/bbTimeList.pug b/layout/includes/widgets/home/bbTimeList.pug
index 0779a5ea..5461b608 100644
--- a/layout/includes/widgets/home/bbTimeList.pug
+++ b/layout/includes/widgets/home/bbTimeList.pug
@@ -2,11 +2,17 @@
i.bber-logo.scoicon.sco-bblogo(onclick=`pjax.loadUrl('/essay/')`)
.swiper-container.swiper-no-swiping.swiper-container-initialized.swiper-container-vertical.swiper-container-pointer-events#bbtalk(tabindex="-1" onclick=`pjax.loadUrl('/essay/')`)
.swiper-wrapper#bber-talk
- case theme.says.mode
- when 'local'
- include bb/local
- when 'json'
- include bb/json
- when 'memos'
- include bb/memos
+ each item, i in site.data.essay.essay_list.slice(0, 10)
+ .li-style.swiper-slide
+ | #{item.content}
+ if item.image
+ i.scoicon.sco-image-fill
+ else if item.aplayer
+ i.scoicon.sco-disc-fill
+ else if item.video
+ i.scoicon.sco-video-fill
+ else if item.bilibili
+ i.scoicon.sco-bilibili-line
+ else if item.link
+ i.scoicon.sco-links
i.bber-gotobb.scoicon.sco-right-btn-fill(title=_p('home.bbtime.text') onclick=`pjax.loadUrl('/essay/')`)
\ No newline at end of file
diff --git a/layout/includes/widgets/page/banner.pug b/layout/includes/widgets/page/banner.pug
index 6ab0f445..7f7e5075 100644
--- a/layout/includes/widgets/page/banner.pug
+++ b/layout/includes/widgets/page/banner.pug
@@ -3,18 +3,13 @@
.author-content-item-tips= page.title
span.author-content-item-title= page.desc
.content-bottom
- if (page.leftend)
- .tips!= page.leftend
- if(page.rightend)
- .tips!= page.rightend
+ if page.leftend
+ .tips= page.leftend
+ if page.rightend
+ .tips= page.rightend
if page.rightbtn
.banner-button-group
- case page.rightbtnlink.startsWith('/')
- when true
- a.banner-button(onclick="pjax.loadUrl(\"" + page.rightbtnlink + "\")")
- i.scoicon.sco-right-btn-fill
- span.banner-button-text= page.rightbtn
- when false
- a.banner-button(href=page.rightbtnlink, target="_blank")
- i.scoicon.sco-right-btn-fill
- span.banner-button-text= page.rightbtn
\ No newline at end of file
+ - const isInternalLink = page.rightbtnlink.startsWith('/')
+ a.banner-button(onclick=isInternalLink ? `pjax.loadUrl("${page.rightbtnlink}")` : null, href=isInternalLink ? null : page.rightbtnlink, target=isInternalLink ? null : "_blank")
+ i.scoicon.sco-right-btn-fill
+ span.banner-button-text= page.rightbtn
diff --git a/layout/includes/widgets/page/says/json.pug b/layout/includes/widgets/page/says/json.pug
deleted file mode 100644
index c30b3f64..00000000
--- a/layout/includes/widgets/page/says/json.pug
+++ /dev/null
@@ -1,82 +0,0 @@
-case theme.says.style
- when 1
- script.
- !async function () {
- document.querySelector('#waterfall').innerHTML = ' '
- await fetch('!{url_for(theme.says.mode_link)}')
- .then(res => res.json())
- .then(res => {
- let list = res.slice(0, !{theme.says.strip})
- let aplayer = null
- let video = null
- let imageBox = null
-
- document.querySelector('#waterfall').innerHTML = list.map(item => {
- aplayer = item.aplayer ? `
` : null
- video = item.player ? `
` : item.bilibili ? `
` : null
- imageBox = item.images ? `${item.images.map(img => `
`).join('')}
` : null
- return `
-
-
${item.content || ''}
- ${imageBox || ''}
-
- ${video || ''}
- ${aplayer || ''}
-
-
-
-
-
-
-
- ${item.link ? `
链接` : ''}
-
- ${item.content ? `` : ''}
-
- `
- }).join('')
- sco.reflashEssayWaterFall();
- GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
- GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
- changeTimeFormat();
- })
- }()
- when 2
- script.
- !async function () {
- document.querySelector('#waterfall').innerHTML = ' '
- await fetch('!{url_for(theme.says.mode_link)}')
- .then(res => res.json())
- .then(res => {
- let list = res.slice(0, !{theme.says.strip})
- let aplayer = null
- let video = null
- let imageBox = null
-
- document.querySelector('#waterfall').innerHTML = list.map(item => {
- aplayer = item.aplayer ? `
` : null
- video = item.player ? `
` : item.bilibili ? `
` : null
- imageBox = item.images ? `${item.images.map(img => `
`).join('')}
` : null
- return `
-
-
-
${item.content || ''}
- ${imageBox || ''}
-
- ${video || ''}
- ${aplayer || ''}
- `
- }).join('')
- sco.reflashEssayWaterFall();
- GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
- GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
- changeTimeFormat();
- })
- }()
\ No newline at end of file
diff --git a/layout/includes/widgets/page/says/local.pug b/layout/includes/widgets/page/says/local.pug
deleted file mode 100644
index 0fee3374..00000000
--- a/layout/includes/widgets/page/says/local.pug
+++ /dev/null
@@ -1,44 +0,0 @@
-each item in site.data.essay.essay_list.slice(0, theme.says.strip)
- li.item
- if theme.says.style === 2
- .meta
- img.avatar(src=theme.aside.card.author.img)
- .info
- span.bber_nick= config.author
- time.datetime.bber_date(datetime=moment(item.date).format())
- if item.content
- a.bber-reply.goComment(onclick=`sco.toTalk('${item.content}')`)
- i.scoicon.sco-chat-fill
-
- #bber-content
- p.datacont= item.content
- if item.image
- .bber-content-img
- each img in item.image
- img(src=img title="即刻短文配图")
-
- if item.aplayer
- .bber-music
- meting-js(server=item.aplayer.server type="song" id=item.aplayer.id mutex="true" preload="none" theme="var(--sco-main)" data-lrctype="0")
-
- if item.video
- .bber-video
- if item.video.player
- video(src=item.video.player controls="controls" style="object-fit: cover;")
- if item.video.bilibili
- iframe(src='//player.bilibili.com/player.html?auto-play=0&bvid=' + item.video.bilibili scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true")
-
- if theme.says.style === 1
- hr
- .bber-bottom
- .bber-info
- .bber-info-time
- i.scoicon.sco-calendar-todo-fill
- time.datetime(datetime=moment(item.date).format())
- if item.link
- a.bber-content-link(href=url_for(item.link) title="跳转到短文指引的链接" target="_blank")
- i.scoicon.sco-link-m-line
- | 链接
- if item.content
- a.bber-reply(onclick=`sco.toTalk('${item.content}')`)
- i.scoicon.sco-chat-fill
\ No newline at end of file
diff --git a/layout/includes/widgets/page/says/memos.pug b/layout/includes/widgets/page/says/memos.pug
deleted file mode 100644
index 3f8afd6e..00000000
--- a/layout/includes/widgets/page/says/memos.pug
+++ /dev/null
@@ -1,111 +0,0 @@
-case theme.says.style
- when 1
- script.
- !async function () {
- let aplayerRegex = /{aplayer,(.*?),(.*?)}/g;
- let linkRegex = /(?'
-
- await fetch("!{url_for(theme.says.mode_link)}")
- .then(res => res.json())
- .then(data => {
- let list = data.slice(0, !{theme.says.strip});
- let aplayer = null;
- let video = null;
- let imageBox = null;
-
- document.querySelector('#waterfall').innerHTML = list.map(item => {
- aplayer = item.content.match(aplayerRegex);
- aplayer = aplayer ? `
` : null;
- video = item.content.match(playerRegex);
- video = video ? `
` : item.content.match(bilibiliRegex);
- video = item.content.match(bilibiliRegex) ? `
` : video;
- imageBox = item.content.match(imageRegex);
- imageBox = imageBox ? `${imageBox.map(img => `
`).join('')}
` : '';
- let time = new Date(item.createdTs * 1000).toISOString().replace('Z', '+08:00');
- let content = item.content.match(contentRegex).map(item => item.replace(contentRegex, '$1'));
- let link = item.content.match(linkRegex);
- link = link ? ` 链接 ` : '';
- return `
-
-
${content}
- ${imageBox || ''}
-
- ${video || ''}
- ${aplayer || ''}
-
-
-
- ${content ? `` : ''}
-
- `;
- }).join('');
- sco.reflashEssayWaterFall();
- GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
- GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
- changeTimeFormat();
- }).catch(error => console.log(error));
- }();
- when 2
- script.
- !async function () {
- let aplayerRegex = /{aplayer,(.*?),(.*?)}/g;
- let bilibiliRegex = /{bilibili,(.*?)}/g;
- let playerRegex = /{player,(.*?)}/g;
- let imageRegex = /!\[\]\((.*?)\)/g;
- let contentRegex = /#.*?\s([^{\n]*)/g
-
- document.querySelector('#waterfall').innerHTML = ' '
-
- await fetch("!{url_for(theme.says.mode_link)}")
- .then(res => res.json())
- .then(data => {
- let list = data.slice(0, !{theme.says.strip})
- let aplayer = null;
- let video = null;
- let imageBox = null;
-
- document.querySelector('#waterfall').innerHTML = list.map(item => {
- aplayer = item.content.match(aplayerRegex);
- aplayer = aplayer ? `
` : null;
- video = item.content.match(playerRegex);
- video = video ? `
` : item.content.match(bilibiliRegex);
- video = item.content.match(bilibiliRegex) ? `
` : video;
- imageBox = item.content.match(imageRegex);
- imageBox = imageBox ? `${imageBox.map(img => `
`).join('')}
` : '';
- let time = new Date(item.createdTs * 1000).toISOString().replace('Z', '+08:00');
- let content = item.content.match(contentRegex).map(item => item.replace(contentRegex, '$1'));
- return `
-
-
-
${content}
- ${imageBox || ''}
-
- ${video || ''}
- ${aplayer || ''}
- `;
- }).join('');
- sco.reflashEssayWaterFall();
- GLOBAL_CONFIG.lazyload.enable && utils.lazyloadImg();
- GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
- changeTimeFormat();
- }).catch(error => console.log(error));
- }();
diff --git a/layout/page.pug b/layout/page.pug
index b35299e1..3a354b81 100644
--- a/layout/page.pug
+++ b/layout/page.pug
@@ -18,8 +18,6 @@ block content
include includes/page/says
when 'equipment'
include includes/page/equipment
- when 'rss'
- include includes/page/rss
when 'moment'
include includes/page/moment
when 'douban'
diff --git a/package.json b/package.json
index a27afb02..7e1389ed 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "hexo-theme-solitude",
- "version": "1.4.6",
+ "version": "1.4.7",
"description": "A beautiful, powerful, and efficient Hexo theme developed by the wleelw",
"main": "package.json",
"scripts": {
diff --git a/scripts/event/init.js b/scripts/event/init.js
index 4894ad98..53b7f201 100644
--- a/scripts/event/init.js
+++ b/scripts/event/init.js
@@ -1,21 +1,22 @@
hexo.extend.filter.register('before_generate', () => {
- const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1')
- const nodeVer = process.version.replace(/^v/, '');
- const [majorVer] = nodeVer.split('.');
- const logger = hexo.log, config = hexo.config
+ const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1');
+ const nodeVer = process.version.replace(/^v/, '');
+ const [majorVer] = nodeVer.split('.');
+ const logger = hexo.log;
+ const config = hexo.config;
- if (hexoVer < 6.3) {
- logger.error('请把 Hexo 升级到 V6.3.0 或更高的版本!')
- process.exit(-1)
- }
+ if (hexoVer < 6.3) {
+ logger.error('请把 Hexo 升级到 V6.3.0 或更高的版本!');
+ process.exit(-1);
+ }
+
+ if (config.prismjs.enable) {
+ logger.error('主题尚未支持 prismjs 请使用 highlightjs !');
+ process.exit(-1);
+ }
- if (config.prismjs.enable) {
- logger.error('主题尚未支持 prismjs 请使用 highlightjs !')
- process.exit(-1)
- }
- if (Number(majorVer) < 14) {
- logger.error('请将 Node.js 升级到 v14.0.0 或更高的版本!');
- process.exit(-1);
- }
+ if (Number(majorVer) < 14) {
+ logger.error('请将 Node.js 升级到 v14.0.0 或更高的版本!');
+ process.exit(-1);
}
-)
\ No newline at end of file
+});
diff --git a/scripts/event/welcome.js b/scripts/event/welcome.js
index 8c113d3f..1f03b66b 100644
--- a/scripts/event/welcome.js
+++ b/scripts/event/welcome.js
@@ -9,6 +9,6 @@ hexo.on('ready', () => {
###### #### ##### ##### # ### ###### ######
${version}
===================================================================
- 主题链接:https://github.com/wleelw/Hexo-theme-solitude
+ GitHub: https://github.com/wleelw/hexo-theme-solitude
`)
})
\ No newline at end of file
diff --git a/scripts/generator/gallery.js b/scripts/generator/gallery.js
index ac141a80..f6fc5568 100644
--- a/scripts/generator/gallery.js
+++ b/scripts/generator/gallery.js
@@ -6,20 +6,23 @@ hexo.extend.generator.register('gallery', function (locals) {
if (!hexo.theme.config.album.enable) return;
const album = locals.data.gallery.gallery;
if (!album) return;
+ const { url, cover, comment, title, album_list, descr, rightbtn, rightbtnlink } = album;
return {
- path: album.url + '/index.html', layout: ['page'], data: {
- url: album.url,
- cover: album.cover,
+ path: `${url}/index.html`,
+ layout: ['page'],
+ data: {
+ url,
+ cover,
type: 'gallery',
- comment: album.comment,
- desc: album.title,
- title: album.title,
- album: album.album_list,
- leftend: album.descr,
- rightbtn: album.rightbtn,
- rightbtnlink: album.rightbtnlink
+ comment,
+ desc: title,
+ title,
+ album: album_list,
+ leftend: descr,
+ rightbtn,
+ rightbtnlink
}
- }
+ };
});
hexo.extend.generator.register('album', function (locals) {
@@ -27,21 +30,20 @@ hexo.extend.generator.register('album', function (locals) {
const album = locals.data.gallery.gallery;
let back = hexo.config.language === 'zh-CN' ? '返回相册' : hexo.config.language === 'zh-TW' ? '返回相冊' : 'Back to Album';
if (!album) return;
- const albumPages = [];
- album.album_list.forEach(function (item) {
- albumPages.push({
- path: album.url + '/' + item.album + '/index.html', layout: ['page'], data: {
- album: item,
- type: 'album',
- cover: item.cover,
- title: item.class_name,
- desc: item.class_name,
- leftend: item.descr,
- rightbtn: back,
- rightbtnlink: `/${album.url}/`,
- comment: item.comment
- }
- });
- });
+ const albumPages = album.album_list.map(item => ({
+ path: `${album.url}/${item.album}/index.html`,
+ layout: ['page'],
+ data: {
+ album: item,
+ type: 'album',
+ cover: item.cover,
+ title: item.class_name,
+ desc: item.class_name,
+ leftend: item.descr,
+ rightbtn: back,
+ rightbtnlink: `/${album.url}/`,
+ comment: item.comment
+ }
+ }));
return albumPages;
});
\ No newline at end of file
diff --git a/scripts/helper/getArchiveLength.js b/scripts/helper/getArchiveLength.js
index 8be8aafe..0391ab1b 100644
--- a/scripts/helper/getArchiveLength.js
+++ b/scripts/helper/getArchiveLength.js
@@ -6,13 +6,9 @@ hexo.extend.helper.register('getArchiveLength', function (type) {
}
const posts = this.site.posts.sort('-date').data
let archive = {}
- posts.forEach(post => {
+ for (const post of posts) {
const postdate = type === 'year' ? moment(post.date).format('YYYY') : moment(post.date).format('YYYY/MM');
- if(!archive[postdate]){
- archive[postdate] = 1
- } else {
- archive[postdate] ++
- }
- });
- return archive
-});
+ archive[postdate] = (archive[postdate] || 0) + 1;
+ }
+ return archive;
+});
\ No newline at end of file
diff --git a/scripts/helper/related_post.js b/scripts/helper/related_post.js
index 4c94e0e0..50cd9c0a 100644
--- a/scripts/helper/related_post.js
+++ b/scripts/helper/related_post.js
@@ -1,10 +1,15 @@
'use strict'
hexo.extend.helper.register('related_posts', function (currentPost, allPosts) {
- let relatedPosts = []
+ const relatedPosts = []
+ const config = hexo.theme.config
+ const limitNum = config.related_post.limit || 6
+ const dateType = config.related_post.date_type || 'created'
+ const headlineLang = this._p('喜欢这篇的人也看了')
+
currentPost.tags.forEach(function (tag) {
allPosts.forEach(function (post) {
- if (isTagRelated(tag.name, post.tags)) {
+ if (isTagRelated(tag.name, post.tags) && currentPost.path !== post.path) {
const relatedPost = {
title: post.title,
path: post.path,
@@ -18,61 +23,45 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) {
if (index !== -1) {
relatedPosts[index].weight += 1
} else {
- if (currentPost.path !== post.path) {
- relatedPosts.push(relatedPost)
- }
+ relatedPosts.push(relatedPost)
}
}
})
})
+
if (relatedPosts.length === 0) {
return ''
}
- let result = ''
- const config = hexo.theme.config
-
- const limitNum = config.related_post.limit || 6
- const dateType = config.related_post.date_type || 'created'
- const headlineLang = this._p('喜欢这篇的人也看了')
-
- relatedPosts = relatedPosts.sort(compare('weight', dateType))
- if (relatedPosts.length > 0) {
- result += ''
- result += `
`
- result += '
'
+ relatedPosts.sort(compare('weight', dateType))
- for (let i = 0; i < Math.min(relatedPosts.length, limitNum); i++) {
- const cover = relatedPosts[i].cover || 'var(--default-bg-color)'
- const title = this.escape_html(relatedPosts[i].title)
- result += `
'
- }
+ let result = '
'
+ result += `
`
+ result += '
'
- result += '
'
- return result
+ for (let i = 0; i < Math.min(relatedPosts.length, limitNum); i++) {
+ const cover = relatedPosts[i].cover || 'var(--default-bg-color)'
+ const title = this.escape_html(relatedPosts[i].title)
+ result += `
'
}
+
+ result += '
'
+ return result
})
function isTagRelated(tagName, TBDtags) {
- let result = false
- TBDtags.forEach(function (tag) {
- if (tagName === tag.name) {
- result = true
- }
+ return TBDtags.some(function (tag) {
+ return tagName === tag.name
})
- return result
}
function findItem(arrayToSearch, attr, val) {
- for (let i = 0; i < arrayToSearch.length; i++) {
- if (arrayToSearch[i][attr] === val) {
- return i
- }
- }
- return -1
+ return arrayToSearch.findIndex(function (item) {
+ return item[attr] === val
+ })
}
function compare(attr, dateType) {
diff --git a/scripts/helper/stylus.js b/scripts/helper/stylus.js
index f2ca56cb..53f7e41a 100644
--- a/scripts/helper/stylus.js
+++ b/scripts/helper/stylus.js
@@ -1,13 +1,13 @@
hexo.extend.filter.register('stylus:renderer', function (style) {
- const {config, theme} = this
+ const {config, theme} = this;
const data = hexo.locals.get('data');
if (theme.config.aside.tags.highlight) {
- let array = theme.config.aside.tags.list.map(item => encodeURIComponent(item));
+ const array = theme.config.aside.tags.list.map(item => encodeURIComponent(item));
style.define('highlightTags', array);
}
- let aside = [
+ const aside = [
theme.config.aside.home.noSticky,
theme.config.aside.home.Sticky,
theme.config.aside.post.noSticky,
@@ -15,14 +15,10 @@ hexo.extend.filter.register('stylus:renderer', function (style) {
theme.config.aside.page.Sticky,
theme.config.aside.page.noSticky
].join(',').split(',');
- let uniqueArr = [...new Set(aside)]; // 去重
+ const uniqueArr = [...new Set(aside)];
if (uniqueArr.length > 0) {
style.define('aside', uniqueArr);
}
- if (data && data.about) {
- style.define('about', Object.keys(data.about));
- } else {
- style.define('about', []);
- }
+ style.define('about', data && data.about ? Object.keys(data.about) : []);
});
\ No newline at end of file
diff --git a/source/css/_global/animation.css b/source/css/_global/animation.css
deleted file mode 100644
index d35258ea..00000000
--- a/source/css/_global/animation.css
+++ /dev/null
@@ -1,813 +0,0 @@
-@keyframes barrageIn {
- 0% {
- transform: translateY(20px);
- opacity: 0
- }
-
- 100% {
- transform: translateY(0);
- opacity: 1
- }
-}
-
-@keyframes barrageOut {
- 0% {
- transform: translateY(0);
- opacity: 1
- }
-
- 100% {
- transform: translateY(20px);
- opacity: 0
- }
-}
-
-@-webkit-keyframes scroll-down-effect {
- 0% {
- top: 0;
- opacity: .4
- }
-
- 50% {
- top: -16px;
- opacity: 1;
- filter: none
- }
-
- 100% {
- top: 0;
- opacity: .4
- }
-}
-
-@keyframes scroll-down-effect {
- 0% {
- top: 0;
- opacity: .4
- }
-
- 50% {
- top: -16px;
- opacity: 1;
- filter: none
- }
-
- 100% {
- top: 0;
- opacity: .4
- }
-}
-
-@-webkit-keyframes header-effect {
- 0% {
- opacity: 0;
- transform: translateY(-50px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@keyframes header-effect {
- 0% {
- opacity: 0;
- transform: translateY(-50px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@-webkit-keyframes headerNoOpacity {
- 0% {
- transform: translateY(-50px)
- }
-
- 100% {
- transform: translateY(0)
- }
-}
-
-@keyframes headerNoOpacity {
- 0% {
- transform: translateY(-50px)
- }
-
- 100% {
- transform: translateY(0)
- }
-}
-
-@-webkit-keyframes bottom-top {
- 0% {
- opacity: 0;
- margin-top: 50px
- }
-
- 100% {
- opacity: 1;
- filter: none;
- margin-top: 0
- }
-}
-
-@keyframes bottom-top {
- 0% {
- opacity: 0;
- margin-top: 50px
- }
-
- 100% {
- opacity: 1;
- filter: none;
- margin-top: 0
- }
-}
-
-@-webkit-keyframes titlescale {
- 0% {
- opacity: 0;
- transform: scale(.7)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: scale(1)
- }
-}
-
-@keyframes titlescale {
- 0% {
- opacity: 0;
- transform: scale(.7)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: scale(1)
- }
-}
-
-@-webkit-keyframes search_close {
- 0% {
- transform: translateY(0);
- opacity: 1
- }
-
- 100% {
- transform: translateY(20px);
- opacity: 0
- }
-}
-
-@keyframes search_close {
- 0% {
- transform: translateY(0);
- opacity: 1
- }
-
- 100% {
- transform: translateY(20px);
- opacity: 0
- }
-}
-
-@-webkit-keyframes to_show {
- 0% {
- opacity: 0
- }
-
- 100% {
- opacity: 1;
- filter: none
- }
-}
-
-@keyframes to_show {
- 0% {
- opacity: 0
- }
-
- 100% {
- opacity: 1;
- filter: none
- }
-}
-
-@-webkit-keyframes to_hide {
- 0% {
- opacity: 1;
- filter: none
- }
-
- 100% {
- opacity: 0
- }
-}
-
-@keyframes to_hide {
- 0% {
- opacity: 1;
- filter: none
- }
-
- 100% {
- opacity: 0
- }
-}
-
-@-webkit-keyframes ribbon_to_show {
- 0% {
- opacity: 0
- }
-
- 100% {
- opacity: .6
- }
-}
-
-@keyframes ribbon_to_show {
- 0% {
- opacity: 0
- }
-
- 100% {
- opacity: .6
- }
-}
-
-@-webkit-keyframes avatar_turn_around {
- 0% {
- transform: rotate(0)
- }
-
- 100% {
- transform: rotate(360deg)
- }
-}
-
-@keyframes avatar_turn_around {
- 0% {
- transform: rotate(0)
- }
-
- 100% {
- transform: rotate(360deg)
- }
-}
-
-@-webkit-keyframes sub_menus {
- 0% {
- opacity: 0;
- transform: translateY(10px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@keyframes sub_menus {
- 0% {
- opacity: 0;
- transform: translateY(10px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@-webkit-keyframes donate_effcet {
- 0% {
- opacity: 0;
- transform: translateY(-20px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@keyframes donate_effcet {
- 0% {
- opacity: 0;
- transform: translateY(-20px)
- }
-
- 100% {
- opacity: 1;
- filter: none;
- transform: translateY(0)
- }
-}
-
-@-webkit-keyframes announ_animation {
- 0%, 100% {
- transform: scale(1);
- filter: blur(0)
- }
-
- 50% {
- transform: scale(1.2);
- filter: blur(20px)
- }
-}
-
-@keyframes announ_animation {
- 0%, 100% {
- transform: scale(1);
- filter: blur(0)
- }
-
- 50% {
- transform: scale(1.2);
- filter: blur(20px)
- }
-}
-
-@-webkit-keyframes sidebarItem {
- 0% {
- transform: translateX(200px)
- }
-
- 100% {
- transform: translateX(0)
- }
-}
-
-@keyframes sidebarItem {
- 0% {
- transform: translateX(200px)
- }
-
- 100% {
- transform: translateX(0)
- }
-}
-
-@keyframes sco-spin {
- 0% {
- transform: rotate(0)
- }
-
- 100% {
- transform: rotate(360deg)
- }
-}
-
-@-webkit-keyframes code-expand-key {
- 0% {
- opacity: .6
- }
-
- 50% {
- opacity: .1
- }
-
- 100% {
- opacity: .6
- }
-}
-
-@keyframes code-expand-key {
- 0% {
- opacity: .6
- }
-
- 50% {
- opacity: .1
- }
-
- 100% {
- opacity: .6
- }
-}
-
-@keyframes slide-in {
- from {
- transform: translateY(20px);
- opacity: 0
- }
-
- to {
- transform: translateY(0);
- opacity: 1
- }
-}
-
-@keyframes slide-in-op {
- from {
- opacity: 0
- }
-
- to {
- opacity: 1
- }
-}
-
-@-webkit-keyframes more-btn-move {
- 0%, 100% {
- transform: translateX(0)
- }
-
- 50% {
- transform: translateX(3px)
- }
-}
-
-@keyframes more-btn-move {
- 0%, 100% {
- transform: translateX(0)
- }
-
- 50% {
- transform: translateX(3px)
- }
-}
-
-@-webkit-keyframes toc-open {
- 0% {
- transform: scale(.7)
- }
-
- 100% {
- transform: scale(1)
- }
-}
-
-@keyframes toc-open {
- 0% {
- transform: scale(.7)
- }
-
- 100% {
- transform: scale(1)
- }
-}
-
-@-webkit-keyframes toc-close {
- 0% {
- transform: scale(1)
- }
-
- 100% {
- transform: scale(.7)
- }
-}
-
-@keyframes toc-close {
- 0% {
- transform: scale(1)
- }
-
- 100% {
- transform: scale(.7)
- }
-}
-
-@-webkit-keyframes configure-clockwise {
- 0% {
- transform: rotate(0)
- }
-
- 25% {
- transform: rotate(90deg)
- }
-
- 50% {
- transform: rotate(180deg)
- }
-
- 75% {
- transform: rotate(270deg)
- }
-
- 100% {
- transform: rotate(360deg)
- }
-}
-
-@keyframes configure-clockwise {
- 0% {
- transform: rotate(0)
- }
-
- 25% {
- transform: rotate(90deg)
- }
-
- 50% {
- transform: rotate(180deg)
- }
-
- 75% {
- transform: rotate(270deg)
- }
-
- 100% {
- transform: rotate(360deg)
- }
-}
-
-@-webkit-keyframes configure-xclockwise {
- 0% {
- transform: rotate(45deg)
- }
-
- 25% {
- transform: rotate(-45deg)
- }
-
- 50% {
- transform: rotate(-135deg)
- }
-
- 75% {
- transform: rotate(-225deg)
- }
-
- 100% {
- transform: rotate(-315deg)
- }
-}
-
-@keyframes configure-xclockwise {
- 0% {
- transform: rotate(45deg)
- }
-
- 25% {
- transform: rotate(-45deg)
- }
-
- 50% {
- transform: rotate(-135deg)
- }
-
- 75% {
- transform: rotate(-225deg)
- }
-
- 100% {
- transform: rotate(-315deg)
- }
-}
-
-@-webkit-keyframes tabshow {
- 0% {
- transform: translateY(15px)
- }
-
- 100% {
- transform: translateY(0)
- }
-}
-
-@keyframes tabshow {
- 0% {
- transform: translateY(15px)
- }
-
- 100% {
- transform: translateY(0)
- }
-}
-
-@-webkit-keyframes playingShadow {
- 0% {
- box-shadow: 0 0 12px -6px var(--sco-none)
- }
-
- 50% {
- box-shadow: 0 0 12px 0 var(--sco-main)
- }
-
- 100% {
- box-shadow: 0 0 12px -6px var(--sco-none)
- }
-}
-
-@-webkit-keyframes changeright {
- 0% {
- -webkit-transform: rotate(0) scale(1.1);
- box-shadow: 0 0 2px #ffffff00
- }
-
- 25% {
- -webkit-transform: rotate(90deg) scale(1.1);
- box-shadow: 0 0 10px #fff
- }
-
- 50% {
- -webkit-transform: rotate(180deg) scale(1.1);
- box-shadow: 0 0 2px #ffffff00
- }
-
- 75% {
- -webkit-transform: rotate(270deg) scale(1.1);
- box-shadow: 0 0 10px #fff
- }
-
- 100% {
- -webkit-transform: rotate(360deg) scale(1.1);
- box-shadow: 0 0 2px #ffffff00
- }
-}
-
-@-webkit-keyframes lightBar {
- 0% {
- opacity: .1
- }
-
- 60% {
- opacity: .3
- }
-
- 100% {
- opacity: .1
- }
-}
-
-@keyframes snackbar-progress {
- from {
- width: 0
- }
-
- to {
- width: 100%
- }
-}
-
-@keyframes move-forever {
- 0% {
- transform: translate3d(-90px, 0, 0)
- }
-
- 100% {
- transform: translate3d(85px, 0, 0)
- }
-}
-
-@keyframes rowup {
- from {
- transform: translateX(0)
- }
-
- to {
- transform: translateX(-50%)
- }
-}
-
-@keyframes gradient {
- 0% {
- background-position: 0 50%
- }
-
- 50% {
- background-position: 100% 50%
- }
-
- 100% {
- background-position: 0 50%
- }
-}
-
-@keyframes commonTipsIn {
- 0% {
- top: -50px;
- opacity: 0
- }
-
- 100% {
- top: -60px;
- opacity: 1
- }
-}
-
-@keyframes commonTriangleIn {
- 0% {
- transform: translate(-50%, -36px);
- opacity: 0
- }
-
- 100% {
- transform: translate(-50%, -46px);
- opacity: 1
- }
-}
-
-@keyframes owoIn {
- 0% {
- transform: translate(0, -95%);
- opacity: 0
- }
-
- 100% {
- transform: translate(0, -105%);
- opacity: 1
- }
-}
-
-@keyframes light_tag {
- 0% {
- transform: skewx(0);
- -o-transform: skewx(0);
- -moz-transform: skewx(0);
- -webkit-transform: skewx(0);
- left: -150px
- }
-
- 99% {
- transform: skewx(-25deg);
- -o-transform: skewx(-25deg);
- -moz-transform: skewx(-25deg);
- -webkit-transform: skewx(-25deg);
- left: 50px
- }
-}
-
-@keyframes floating {
- 0% {
- transform: translate(0, -4px)
- }
-
- 50% {
- transform: translate(0, 4px)
- }
-
- 100% {
- transform: translate(0, -4px)
- }
-}
-
-@media screen and (min-width: 768px) {
- @keyframes showCover {
- from {
- opacity: 0;
- transform: rotate(10deg) translateY(-8%) scale(1.8);
- }
- to {
- opacity: 0.5;
- transform: rotate(10deg) translateY(-10%) scale(2);
- }
- }
-}
-
-@keyframes blinking-cursor {
- 0% {
- transform: scale(.6)
- }
-
- 25% {
- transform: scale(1)
- }
-
- 50% {
- transform: scale(.6)
- }
-
- 75% {
- transform: scale(1)
- }
-
- 100% {
- transform: scale(.6)
- }
-}
-
-@keyframes AILoading {
- 0% {
- opacity: 1
- }
-
- 25% {
- opacity: .3
- }
-
- 50% {
- opacity: 1
- }
-
- 75% {
- opacity: .3
- }
-
- 100% {
- opacity: 1
- }
-}
\ No newline at end of file
diff --git a/source/css/_global/animation.styl b/source/css/_global/animation.styl
new file mode 100644
index 00000000..5196d54a
--- /dev/null
+++ b/source/css/_global/animation.styl
@@ -0,0 +1,307 @@
+@keyframes barrageIn
+ 0%
+ transform translateY(20px)
+ opacity 0
+ 100%
+ transform translateY(0)
+ opacity 1
+
+@keyframes barrageOut
+ 0%
+ transform translateY(0)
+ opacity 1
+ 100%
+ transform translateY(20px)
+ opacity 0
+
+@keyframes scroll-down-effect
+ 0%
+ top 0
+ opacity .4
+ 50%
+ top -16px
+ opacity 1
+ filter none
+ 100%
+ top 0
+ opacity .4
+
+@keyframes header-effect
+ 0%
+ opacity 0
+ transform translateY(-50px)
+ 100%
+ opacity 1
+ filter none
+ transform translateY(0)
+
+@keyframes headerNoOpacity
+ 0%
+ transform translateY(-50px)
+ 100%
+ transform translateY(0)
+
+@keyframes bottom-top
+ 0%
+ opacity 0
+ margin-top 50px
+ 100%
+ opacity 1
+ filter none
+ margin-top 0
+
+@keyframes titlescale
+ 0%
+ opacity 0
+ transform scale(.7)
+ 100%
+ opacity 1
+ filter none
+ transform scale(1)
+
+@keyframes search_close
+ 0%
+ transform translateY(0)
+ opacity 1
+ 100%
+ transform translateY(20px)
+ opacity 0
+
+@keyframes to_show
+ 0%
+ opacity 0
+ 100%
+ opacity 1
+ filter none
+
+@keyframes to_hide
+ 0%
+ opacity 1
+ filter none
+ 100%
+ opacity 0
+
+@keyframes ribbon_to_show
+ 0%
+ opacity 0
+ 100%
+ opacity .6
+
+@keyframes avatar_turn_around
+ 0%
+ transform rotate(0)
+ 100%
+ transform rotate(360deg)
+
+@keyframes sub_menus
+ 0%
+ opacity 0
+ transform translateY(10px)
+ 100%
+ opacity 1
+ filter none
+ transform translateY(0)
+
+@keyframes donate_effcet
+ 0%
+ opacity 0
+ transform translateY(-20px)
+ 100%
+ opacity 1
+ filter none
+ transform translateY(0)
+
+@keyframes announ_animation
+ 0%, 100%
+ transform scale(1)
+ filter blur(0)
+ 50%
+ transform scale(1.2)
+ filter blur(20px)
+
+@keyframes sidebarItem
+ 0%
+ transform translateX(200px)
+ 100%
+ transform translateX(0)
+
+@keyframes sco-spin
+ 0%
+ transform rotate(0)
+ 100%
+ transform rotate(360deg)
+
+@keyframes code-expand-key
+ 0%
+ opacity .6
+ 50%
+ opacity .1
+ 100%
+ opacity .6
+
+@keyframes slide-in
+ from
+ transform translateY(20px)
+ opacity 0
+ to
+ transform translateY(0)
+ opacity 1
+
+@keyframes slide-in-op
+ from
+ opacity 0
+ to
+ opacity 1
+
+@keyframes more-btn-move
+ 0%, 100%
+ transform translateX(0)
+ 50%
+ transform translateX(3px)
+
+@keyframes toc-open
+ 0%
+ transform scale(.7)
+ 100%
+ transform scale(1)
+
+@keyframes toc-close
+ 0%
+ transform scale(1)
+ 100%
+ transform scale(.7)
+
+@keyframes configure-clockwise
+ 0%
+ transform rotate(0)
+ 25%
+ transform rotate(90deg)
+ 50%
+ transform rotate(180deg)
+ 75%
+ transform rotate(270deg)
+ 100%
+ transform rotate(360deg)
+
+@keyframes configure-xclockwise
+ 0%
+ transform rotate(45deg)
+ 25%
+ transform rotate(-45deg)
+ 50%
+ transform rotate(-135deg)
+ 75%
+ transform rotate(-225deg)
+ 100%
+ transform rotate(-315deg)
+
+@keyframes tabshow
+ 0%
+ transform translateY(15px)
+ 100%
+ transform translateY(0)
+
+@keyframes snackbar-progress
+ from
+ width 0
+ to
+ width 100%
+
+@keyframes move-forever
+ 0%
+ transform translate3d(-90px, 0, 0)
+ 100%
+ transform translate3d(85px, 0, 0)
+
+@keyframes rowup
+ from
+ transform translateX(0)
+ to
+ transform translateX(-50%)
+
+@keyframes gradient
+ 0%
+ background-position 0 50%
+ 50%
+ background-position 100% 50%
+ 100%
+ background-position 0 50%
+
+@keyframes commonTipsIn
+ 0%
+ top -50px
+ opacity 0
+ 100%
+ top -60px
+ opacity 1
+
+@keyframes commonTriangleIn
+ 0%
+ transform translate(-50%, -36px)
+ opacity 0
+ 100%
+ transform translate(-50%, -46px)
+ opacity 1
+
+@keyframes owoIn
+ 0%
+ transform translate(0, -95%)
+ opacity 0
+ 100%
+ transform translate(0, -105%)
+ opacity 1
+
+@keyframes light_tag
+ 0%
+ transform skewx(0)
+ -o-transform skewx(0)
+ -moz-transform skewx(0)
+ -webkit-transform skewx(0)
+ left -150px
+ 99%
+ transform skewx(-25deg)
+ -o-transform skewx(-25deg)
+ -moz-transform skewx(-25deg)
+ -webkit-transform skewx(-25deg)
+ left 50px
+
+@keyframes floating
+ 0%
+ transform translate(0, -4px)
+ 50%
+ transform translate(0, 4px)
+ 100%
+ transform translate(0, -4px)
+
+@media screen and (min-width: 768px)
+ @keyframes showCover
+ from
+ opacity 0
+ transform rotate(10deg) translateY(-8%) scale(1.8)
+ to
+ opacity 0.5
+ transform rotate(10deg) translateY(-10%) scale(2)
+
+@keyframes blinking-cursor
+ 0%
+ transform scale(.6)
+ 25%
+ transform scale(1)
+ 50%
+ transform scale(.6)
+ 75%
+ transform scale(1)
+ 100%
+ transform scale(.6)
+
+@keyframes AILoading
+ 0%
+ opacity 1
+ 25%
+ opacity .3
+ 50%
+ opacity 1
+ 75%
+ opacity .3
+ 100%
+ opacity 1
\ No newline at end of file
diff --git a/source/css/_page/index.styl b/source/css/_page/index.styl
index de251335..f71049a6 100644
--- a/source/css/_page/index.styl
+++ b/source/css/_page/index.styl
@@ -8,8 +8,6 @@
@import "error.styl"
-@import "rss.styl"
-
if hexo-config('moments.enable')
@import "moment.styl"
diff --git a/source/css/_page/rss.styl b/source/css/_page/rss.styl
deleted file mode 100644
index 3313d1e2..00000000
--- a/source/css/_page/rss.styl
+++ /dev/null
@@ -1,82 +0,0 @@
-.rss-plan-list
- display flex
- width 100%
- flex-direction row
- flex-wrap wrap
- margin-left -4px
- position relative
-
- .rss-plan-item
- border-radius 12px
- display flex
- flex-direction column
- justify-content space-between
- min-width 240px
- height 240px
- margin 4px auto
- overflow hidden
- text-decoration none
- width calc(100% / 3 - 8px)
- filter brightness(1)
- transition .3s
-
- +maxWidth1024()
- width calc(100% / 2 - 8px)
-
- &first-child
- width 100%
-
- +maxWidth768()
- width 100%
-
- &.rss-plan-wechat
- background #27c125
- overflow hidden
-
- &.rss-plan-mail
- background var(--sco-blue)
-
- &.rss-plan-rss
- background var(--sco-orange)
-
- &:hover
- filter brightness(1.1)
-
- img.rss-plan-icon
- bottom -40px
- right -10px
- filter blur(0)
- opacity 1
-
- .rss-plan-description
- font-size 16px
- color var(--sco-white)
- margin 26px 0 0 30px
- line-height 20px
-
- img.rss-plan-icon
- position absolute
- bottom -50px
- right -20px
- height 140px
- user-select none
- -webkit-user-drag none
- transition all 1.2s cubic-bezier(.39, .575, .565, 1)
- transform-origin bottom right
- filter blur(8px)
- opacity .6
-
- .rss-plan-info-group
- position relative
- margin 0 0 26px 30px
- color var(--sco-white)
-
- .rss-plan-title
- font-size 36px
- font-weight 700
- width fit-content
- line-height 1
-
- .rss-plan-info
- width fit-content
- opacity .6
\ No newline at end of file
diff --git a/source/css/index.styl b/source/css/index.styl
index 5ed30e03..72079197 100644
--- a/source/css/index.styl
+++ b/source/css/index.styl
@@ -4,7 +4,6 @@ if hexo-config('css_prefix')
@import 'nib'
// project
-@import '_global/animation.css'
@import '_global/*'
@import '_layout/*'
@import '_page/index.styl'
diff --git a/source/js/comment/twikoo_commentBarrage.js b/source/js/comment/twikoo_commentBarrage.js
index 9ab106d1..19ff1e09 100644
--- a/source/js/comment/twikoo_commentBarrage.js
+++ b/source/js/comment/twikoo_commentBarrage.js
@@ -1,117 +1,116 @@
function initializeCommentBarrage() {
window.commentBarrageInitialized = !0;
- let e = {
+ const e = {
maxBarrage: 1,
barrageTime: 8e3,
twikooUrl: GLOBAL_CONFIG.comment.twikoo.url,
pageUrl: window.location.pathname,
accessToken: GLOBAL_CONFIG.comment.twikoo.accessToken,
};
- new class {
- commentInterval = null
- constructor(e) {
+ class CommentBarrage {
+ constructor(config) {
this.config = {
- ...e,
+ ...config,
barrageTimer: [],
barrageList: [],
barrageIndex: 0,
dom: document.querySelector(".comment-barrage")
- },
- this.commentInterval = null,
- this.hoverOnCommentBarrage = !1,
- this.init()
+ };
+ this.commentInterval = null;
+ this.hoverOnCommentBarrage = false;
+ this.init();
}
async fetchComments() {
- return fetch(this.config.twikooUrl, {
- method: "POST",
- headers: {
- "Content-Type": "application/json"
- },
- body: JSON.stringify({
- event: "COMMENT_GET",
- accessToken: this.config.accessToken,
- url: this.config.pageUrl
- })
- }).then((e => {
- if (!e.ok)
- throw Error("HTTP error! status: " + e.status);
- return e.json()
+ try {
+ const response = await fetch(this.config.twikooUrl, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify({
+ event: "COMMENT_GET",
+ accessToken: this.config.accessToken,
+ url: this.config.pageUrl
+ })
+ });
+ if (!response.ok) {
+ throw new Error("HTTP error! status: " + response.status);
}
- )).then((e => e.data)).catch((e => console.error("An error occurred while fetching comments: ", e)))
+ const data = await response.json();
+ return data.data;
+ } catch (error) {
+ console.error("An error occurred while fetching comments: ", error);
+ }
}
- commentLinkFilter(e) {
- e.sort(((e, t) => e.created - t.created));
- let t = [];
- return e.forEach((e => {
- t.push(...this.getCommentReplies(e))
- }
- )),
- t
+ commentLinkFilter(comments) {
+ comments.sort((a, b) => a.created - b.created);
+ let filteredComments = [];
+ comments.forEach(comment => {
+ filteredComments.push(...this.getCommentReplies(comment));
+ });
+ return filteredComments;
}
- getCommentReplies(e) {
- if (e.replies) {
- let comments = [e];
- e.replies.forEach((reply) => {
+ getCommentReplies(comment) {
+ let comments = [comment];
+ if (comment.replies) {
+ comment.replies.forEach(reply => {
comments.push(...this.getCommentReplies(reply));
});
- return comments;
}
- return [];
+ return comments;
}
-
- processCommentContent(e) {
- const t = e.replace(/]*>[\s\S]*?<\/blockquote>/gi, "")
- , r = t.replace(/<[^>]*>/g, "").replace(/\n/g, " ");
- return "" === t.trim() ? "" : `${r}
`
+ processCommentContent(comment) {
+ const strippedContent = comment.replace(/]*>[\s\S]*?<\/blockquote>/gi, "");
+ const plainText = strippedContent.replace(/<[^>]*>/g, "").replace(/\n/g, " ");
+ return plainText.trim() !== "" ? `${plainText}
` : "";
}
- popCommentBarrage(e) {
- var commentContent = this.processCommentContent(e.comment);
-
+ popCommentBarrage(comment) {
+ const commentContent = this.processCommentContent(comment.comment);
if (!commentContent.trim()) {
return false;
}
-
- let commentBarrageItem = document.createElement("div");
+ const commentBarrageItem = document.createElement("div");
commentBarrageItem.className = "comment-barrage-item";
-
commentBarrageItem.innerHTML = `
-
-
热评
-
${e.nick}
-
-
-
- ${commentContent}
- `;
-
+
+
热评
+
${comment.nick}
+
+
+
+ ${commentContent}
+ `;
this.config.barrageTimer.push(commentBarrageItem);
-
this.config.dom.appendChild(commentBarrageItem);
return true;
}
- removeCommentBarrage(e) {
- e.className = "comment-barrage-item out",
- setTimeout((() => {
- this.config.dom.removeChild(e)
- }
- ), 1e3)
+ removeCommentBarrage(commentBarrageItem) {
+ commentBarrageItem.className = "comment-barrage-item out";
+ setTimeout(() => {
+ this.config.dom.removeChild(commentBarrageItem);
+ }, 1000);
}
async initCommentBarrage() {
- if (localStorage.getItem("commentBarrageSwitch") != null) {
+ const commentBarrageSwitch = localStorage.getItem("commentBarrageSwitch");
+ if (commentBarrageSwitch != null) {
document.querySelector(".comment-barrage").style.display = "flex";
- GLOBAL_CONFIG.rightside.enable && (document.querySelector(".menu-commentBarrage-text").textContent = "关闭热评");
+ if (GLOBAL_CONFIG.rightside.enable) {
+ document.querySelector(".menu-commentBarrage-text").textContent = "关闭热评";
+ }
document.querySelector("#consoleCommentBarrage").classList.add("on");
} else {
document.querySelector(".comment-barrage").style.display = "none";
- GLOBAL_CONFIG.rightside.enable && (document.querySelector(".menu-commentBarrage-text").textContent = "显示热评");
+ if (GLOBAL_CONFIG.rightside.enable) {
+ document.querySelector(".menu-commentBarrage-text").textContent = "显示热评";
+ }
document.querySelector("#consoleCommentBarrage").classList.remove("on");
}
const comments = await this.fetchComments();
@@ -121,12 +120,13 @@ function initializeCommentBarrage() {
this.commentInterval = null;
const t = () => {
if (this.config.barrageList.length && !this.hoverOnCommentBarrage) {
- if (!this.popCommentBarrage(this.config.barrageList[this.config.barrageIndex]))
- return this.config.barrageIndex += 1,
- this.config.barrageIndex %= this.config.barrageList.length,
- void t();
- this.config.barrageIndex += 1,
- this.config.barrageIndex %= this.config.barrageList.length
+ if (!this.popCommentBarrage(this.config.barrageList[this.config.barrageIndex])) {
+ this.config.barrageIndex += 1;
+ this.config.barrageIndex %= this.config.barrageList.length;
+ return t();
+ }
+ this.config.barrageIndex += 1;
+ this.config.barrageIndex %= this.config.barrageList.length;
}
if (this.config.barrageTimer.length > (this.config.barrageList.length > this.config.maxBarrage ? this.config.maxBarrage : this.config.barrageList.length) && !this.hoverOnCommentBarrage) {
this.removeCommentBarrage(this.config.barrageTimer.shift());
@@ -152,5 +152,6 @@ function initializeCommentBarrage() {
});
}
}
- (e)
+
+ new CommentBarrage(e);
}
\ No newline at end of file
diff --git a/source/js/covercolor/local.js b/source/js/covercolor/local.js
index 6810f8b2..adb59d36 100644
--- a/source/js/covercolor/local.js
+++ b/source/js/covercolor/local.js
@@ -107,9 +107,6 @@ function colorRgb(str) {
}
function setThemeColors(value, r = null, g = null, b = null) {
- const cardContents = document.getElementsByClassName('card-content');
- const authorInfo = document.getElementsByClassName('author-info__sayhi');
-
if (value) {
document.documentElement.style.setProperty('--sco-main', value);
document.documentElement.style.setProperty('--sco-main-op', value + '23');
@@ -118,13 +115,17 @@ function setThemeColors(value, r = null, g = null, b = null) {
if (r && g && b) {
let brightness = Math.round(((parseInt(r) * 299) + (parseInt(g) * 587) + (parseInt(b) * 114)) / 1000);
- for (let i = 0; i < cardContents.length; i++) {
- cardContents[i].style.setProperty('--sco-card-bg', 'var(--sco-white)');
- }
-
- for (let i = 0; i < authorInfo.length; i++) {
- authorInfo[i].style.setProperty('background', 'var(--sco-white-op)');
- authorInfo[i].style.setProperty('color', 'var(--sco-white)');
+ if (brightness < 125) {
+ let cardContents = document.getElementsByClassName('card-content');
+ for (let i = 0; i < cardContents.length; i++) {
+ cardContents[i].style.setProperty('--sco-card-bg', 'var(--sco-white)');
+ }
+
+ let authorInfo = document.getElementsByClassName('author-info__sayhi');
+ for (let i = 0; i < authorInfo.length; i++) {
+ authorInfo[i].style.setProperty('background', 'var(--sco-white-op)');
+ authorInfo[i].style.setProperty('color', 'var(--sco-white)');
+ }
}
}
diff --git a/source/js/music.js b/source/js/music.js
index e9f085b0..7525a6ef 100644
--- a/source/js/music.js
+++ b/source/js/music.js
@@ -1,93 +1,135 @@
-var vh = window.innerHeight * 1;
-var scoMusic = {
- // 获取地址栏参数
- // 创建URLSearchParams对象并传入URL中的查询字符串
+const scoMusic = {
params: new URLSearchParams(window.location.search),
- extractValue: function (input) {
- var valueRegex = /\("([^\s]+)"\)/g;
- var match = valueRegex.exec(input);
+ extractValue: (input) => {
+ const valueRegex = /\("([^\s]+)"\)/g;
+ const match = valueRegex.exec(input);
return match[1];
},
- changeMusicBg: function (isChangeBg = true) {
- const MusicBg = document.getElementById("Music-bg")
- const MusicLoading = document.getElementsByClassName("Music-loading")
+ changeMusicBg: (isChangeBg = true) => {
+ const MusicBg = document.getElementById("Music-bg");
+ const MusicLoading = document.getElementsByClassName("Music-loading");
if (isChangeBg) {
const musiccover = document.querySelector("#Music-page .aplayer-pic");
- var img = new Image();
+ const img = new Image();
img.src = scoMusic.extractValue(musiccover.style.backgroundImage);
- img.onload = function () {
+ img.onload = () => {
MusicBg.style.backgroundImage = musiccover.style.backgroundImage;
};
} else {
- let timer = setInterval(() => {
+ const timer = setInterval(() => {
const musiccover = document.querySelector("#Music-page .aplayer-pic");
- // 确保player加载完成
if (musiccover) {
MusicLoading[0].style.display = "none";
- clearInterval(timer)
- document.querySelector('meting-js')
- .aplayer.volume(0.8, true);
+ clearInterval(timer);
+ document.querySelector('meting-js').aplayer.volume(0.8, true);
scoMusic.addEventListenerChangeMusicBg();
MusicBg.style.display = "block";
}
- }, 100)
+ }, 100);
}
},
- lrcupdate: function () {
- var aplayerLrcContents = document.querySelector('.aplayer-lrc-contents');
- var currentLrc = aplayerLrcContents.querySelector('p.aplayer-lrc-current');
+ lrcupdate: () => {
+ const aplayerLrcContents = document.querySelector('.aplayer-lrc-contents');
+ const currentLrc = aplayerLrcContents.querySelector('p.aplayer-lrc-current');
if (currentLrc) {
- var currentIndex = Array.from(aplayerLrcContents.children)
- .indexOf(currentLrc);
- var translateYValue = -currentIndex * 80;
+ const currentIndex = Array.from(aplayerLrcContents.children).indexOf(currentLrc);
+ const translateYValue = -currentIndex * 80;
- aplayerLrcContents.style.transform = 'translateY(' + translateYValue + 'px)';
+ aplayerLrcContents.style.transform = `translateY(${translateYValue}px)`;
}
},
- buttonlist: function () {
- document.querySelector(".aplayer-lrc")
- .addEventListener("click", function () {
- const aplayerList = document.querySelector(".aplayer-list");
+ buttonlist: () => {
+ const aplayerList = document.querySelector(".aplayer-list");
+ if (aplayerList) {
+ document.querySelector(".aplayer-lrc").addEventListener("click", () => {
+ if (aplayerList.classList.contains("aplayer-list-hide")) {
+ aplayerList.classList.remove("aplayer-list-hide");
+ } else {
+ aplayerList.classList.add("aplayer-list-hide");
+ }
+ });
+ }
+ },
+ extractValue: (input) => {
+ const valueRegex = /\("([^\s]+)"\)/g;
+ const match = valueRegex.exec(input);
+ return match[1];
+ },
+ changeMusicBg: (isChangeBg = true) => {
+ const MusicBg = document.getElementById("Music-bg");
+ const MusicLoading = document.getElementsByClassName("Music-loading");
+
+ if (isChangeBg) {
+ const musiccover = document.querySelector("#Music-page .aplayer-pic");
+ const img = new Image();
+ img.src = scoMusic.extractValue(musiccover.style.backgroundImage);
+ img.onload = () => {
+ MusicBg.style.backgroundImage = musiccover.style.backgroundImage;
+ };
+ } else {
+ const timer = setInterval(() => {
+ const musiccover = document.querySelector("#Music-page .aplayer-pic");
+ if (musiccover) {
+ MusicLoading[0].style.display = "none";
+ clearInterval(timer);
+ document.querySelector('meting-js').aplayer.volume(0.8, true);
+
+ scoMusic.addEventListenerChangeMusicBg();
+ MusicBg.style.display = "block";
+ }
+ }, 100);
+ }
+ },
+ lrcupdate: () => {
+ const aplayerLrcContents = document.querySelector('.aplayer-lrc-contents');
+ const currentLrc = aplayerLrcContents.querySelector('p.aplayer-lrc-current');
+
+ if (currentLrc) {
+ const currentIndex = Array.from(aplayerLrcContents.children).indexOf(currentLrc);
+ const translateYValue = -currentIndex * 80;
+ aplayerLrcContents.style.transform = `translateY(${translateYValue}px)`;
+ }
+ },
+ buttonlist: () => {
+ const aplayerList = document.querySelector(".aplayer-list");
+ if (aplayerList) {
+ document.querySelector(".aplayer-lrc").addEventListener("click", () => {
if (aplayerList.classList.contains("aplayer-list-hide")) {
aplayerList.classList.remove("aplayer-list-hide");
} else {
aplayerList.classList.add("aplayer-list-hide");
}
});
+ }
},
- addEventListenerChangeMusicBg: function () {
- const aplayer = document.getElementById("Music-page").querySelector("meting-js").aplayer
- aplayer.on('loadeddata', function () {
+ addEventListenerChangeMusicBg: () => {
+ const aplayer = document.getElementById("Music-page").querySelector("meting-js").aplayer;
+ aplayer.on('loadeddata', () => {
scoMusic.changeMusicBg();
});
- aplayer.on('timeupdate', function () {
+ aplayer.on('timeupdate', () => {
scoMusic.lrcupdate();
});
- scoMusic.buttonlist();
},
- getCustomPlayList: function () {
+ getCustomPlayList: () => {
const MusicPage = document.getElementById("Music-page");
const playlistType = scoMusic.params.get("type") || "playlist";
if (scoMusic.params.get("id") && params.get("server")) {
- var id = scoMusic.params.get("id")
- var server = scoMusic.params.get("server")
+ const id = scoMusic.params.get("id");
+ const server = scoMusic.params.get("server");
MusicPage.innerHTML = ` `;
} else {
MusicPage.innerHTML = ` `;
}
scoMusic.changeMusicBg(false);
},
- /**
- * 绑定键盘事件
- * @param event
- */
- setKeydown: function (event) {
- const aplayer = document.querySelector('meting-js').aplayer
+ setKeydown: (event) => {
+ const aplayer = document.querySelector('meting-js').aplayer;
if (event.code === "Space") {
event.preventDefault();
aplayer.toggle();
@@ -113,15 +155,13 @@ var scoMusic = {
}
}
},
- init: function () {
+ init: () => {
+ let vh = window.innerHeight * 1;
document.documentElement.style.setProperty('--vh', `${vh}px`);
- // 初始化
- this.getCustomPlayList();
-
- //热键控制音乐
+ scoMusic.getCustomPlayList();
document.addEventListener("keydown", scoMusic.setKeydown);
}
-}
+};
window.addEventListener('resize', () => {
let vh = window.innerHeight * 1;