mirror of
https://github.com/KivotosRailway/website.git
synced 2026-11-03 19:07:56 +09:00
Add solitude
This commit is contained in:
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [everfu] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: everfu # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: ['https://afdian.net/a/everfu', 'https://s3.qjqq.cn/47/66374315ebd08.webp!color', 'https://s3.qjqq.cn/47/663742bac8e52.webp!color'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
@@ -0,0 +1,108 @@
|
||||
name: Bug 报告 🐛
|
||||
description: 本项目仅对最新版本进行维护,使用老版本出现问题的,请先升级到最新版本或使用dev版本,升级完后如果发现bug依然存在,请继续填写此issue。
|
||||
labels: ['status: needs check']
|
||||
title: "[Bug]: "
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### ⚠️ 前置确认
|
||||
1. 请确保阅读过本主题GitHub项目说明
|
||||
2. 查询主题使用文档的相关内容和正确配置
|
||||
3. 使用的是Solitude主题最新版本
|
||||
4. 执行`npm ls -dept 0`检查是否已安装对应插件
|
||||
5. [FAQS](https://solitude-docs.efu.me/faq) 中无类似问题
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 前置确认
|
||||
options:
|
||||
- label: 我确认我运行的是最新版本的主题,并且安装了所需的依赖,在[FAQS](https://solitude-docs.efu.me/faq)中也未找到类似问题。
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: ⚠️ 搜索issues中是否已存在类似问题
|
||||
description: >
|
||||
请在 [历史issue](https://github.com/valor-x/hexo-theme-solitude/issues) 中清空输入框,搜索你的问题
|
||||
或相关日志的关键词来查找是否存在类似问题。
|
||||
options:
|
||||
- label: 我已经搜索过issues和disscussions,没有跟我遇到的问题相关的issue
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
请在上方的`title`中填写你对你所遇到问题的简略总结,这将帮助其他人更好的找到相似问题,谢谢❤️。
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: 操作系统类型?
|
||||
description: >
|
||||
请选择你运行程序的操作系统类型。
|
||||
options:
|
||||
- Windows
|
||||
- Mac/Linux
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: 运行的Hexo版本是?
|
||||
description: |
|
||||
请选择你运行的`Hexo`版本。
|
||||
注意:在`Hexo 7.0+`版本中,Node的最低支持的版本为:14.0.0。
|
||||
你可以前往 [Node.js 版本限制](https://hexo.io/zh-cn/docs/#Node-js-%E7%89%88%E6%9C%AC%E9%99%90%E5%88%B6)进行查看详情。
|
||||
options:
|
||||
- Hexo 7.0.0
|
||||
- Hexo 6.3.0及以下
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: 你所使用的主题版本是稳定/最新?
|
||||
description: |
|
||||
**注意:新手小白推荐使用稳定版本(main分支)。**
|
||||
具有一定的排错能力且具备开发知识的同学可以尝试使用开发版(dev分支)进行体验。
|
||||
options:
|
||||
- 稳定版(main)
|
||||
- 开发板 (dev)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 问题描述 😯
|
||||
description: 详细描述出现的问题,或提供有关截图。
|
||||
placeholder: "e.g., 我在...出现..."
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 终端日志 📒
|
||||
description: |
|
||||
在此处粘贴终端运行日志,这会帮助我们更好的分析问题。
|
||||
建议使用`hexo s -debug`进行调试输出,打印出的日志会更有帮助。
|
||||
|
||||
<details>
|
||||
<summary><i>示例</i></summary>
|
||||
ERROR Process failed: layout/index.pug
|
||||
Error: ENOENT: no such file or directory, open 'E:\OC\Desktop\iCat\Solitude\themes\solitude\layout\includes\widgets\home\bbTimeList.pug'
|
||||
at E:\OC\Desktop\iCat\Solitude\themes\solitude\layout\index.pug line 6
|
||||
at Object.openSync (node:fs:590:3)
|
||||
at Object.readFileSync (node:fs:458:35)
|
||||
at Function.read (E:\OC\Desktop\iCat\Solitude\node_modules\pug-load\index.js:85:13)
|
||||
at Object.read (E:\OC\Desktop\iCat\Solitude\node_modules\pug\lib\index.js:164:25)
|
||||
at E:\OC\Desktop\iCat\Solitude\node_modules\pug-load\index.js:28:25
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:26:18)
|
||||
at E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:112:20
|
||||
at Array.reduce (<anonymous>)
|
||||
at walkAndMergeNodes (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:111:18)
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:40:19)
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:69:26)
|
||||
at E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:112:20
|
||||
at Array.reduce (<anonymous>)
|
||||
at walkAndMergeNodes (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:111:18)
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:40:19)
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:51:21)
|
||||
at E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:112:20
|
||||
at Array.reduce (<anonymous>)
|
||||
at walkAndMergeNodes (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:111:18)
|
||||
at walkAST (E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:40:19)
|
||||
at E:\OC\Desktop\iCat\Solitude\node_modules\pug-walk\index.js:112:20
|
||||
at Array.reduce (<anonymous>)
|
||||
INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.
|
||||
</details>
|
||||
placeholder: "e.g., <此处粘贴终端日志>"
|
||||
@@ -0,0 +1,21 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 关于主题使用问题
|
||||
url: https://github.com/valor-x/hexo-theme-solitude/discussions
|
||||
about: 一些使用上碰到的问题 Discussion 询问。 Please ask questions in Discussion.
|
||||
|
||||
- name: Solitude Q&A
|
||||
url: https://docs.efu.me/faq
|
||||
about: Solitude Q&A
|
||||
|
||||
- name: QQ群
|
||||
url: https://qm.qq.com/q/mxfomMvJPG
|
||||
about: 新建立的QQ群
|
||||
|
||||
- name: Discord
|
||||
url: https://discord.gg/Y8VEvVgW
|
||||
about: 'Official Discord Group'
|
||||
|
||||
- name: Telegram
|
||||
url: https://t.me/solitudePro
|
||||
about: 'Official Telegram Group'
|
||||
@@ -0,0 +1,48 @@
|
||||
name: 功能新增✨
|
||||
description: 为这个项目提出一个想法
|
||||
title: "[Feature]: "
|
||||
labels: ["增强"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "感谢你抽出宝贵时间提出新功能建议!"
|
||||
- type: input
|
||||
id: feature_summary
|
||||
attributes:
|
||||
label: 功能简介
|
||||
description: 对功能的清晰简明的描述。
|
||||
placeholder: "e.g., 我想要..."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature_motivation
|
||||
attributes:
|
||||
label: 问题描述
|
||||
description: 对问题是什么进行清晰简洁的描述。
|
||||
placeholder: "e.g., 我在...需要..."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature_description
|
||||
attributes:
|
||||
label: 实现效果
|
||||
description: 清晰简洁地描述您想要发生的事情。
|
||||
placeholder: "e.g., 这个功能实现...的效果"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature_alternatives
|
||||
attributes:
|
||||
label: 你想到的可行的替代方案
|
||||
description: 对你考虑过的任何替代解决方案或功能进行清晰简洁的描述。
|
||||
placeholder: "e.g., 解决这个问题的一种方法是..."
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: additional_context
|
||||
attributes:
|
||||
label: 其他内容
|
||||
description: 在此处添加有关功能请求的任何其他上下文或屏幕截图。
|
||||
placeholder: "在这里添加屏幕截图或着文字内容..."
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,35 @@
|
||||
<!---
|
||||
☝️ PR title should follow conventional commits (https://conventionalcommits.org)
|
||||
|
||||
Please carefully read the contribution docs before creating a pull request
|
||||
👉 https://github.com/valor-x/hexo-theme-solitude/blob/main/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
### 🔗 链接 issue
|
||||
|
||||
<!-- 请确保存在未解决的问题,将编号提及为 #123(示例) -->
|
||||
|
||||
### ❓ 修改类型
|
||||
|
||||
<!--代码引入了哪些类型的更改?在所有适用的框中放置一个“x”。 -->
|
||||
|
||||
- [ ] 🐞 Bug fix (修复问题的连续性改)
|
||||
- [ ] 👌 增强功能(改进现有功能,如性能)
|
||||
- [ ] ✨ Feature(添加功能的连续性修改)
|
||||
- [ ] ⚠️ 中断修改(重大的修改,如配置文件调整、模块移除)
|
||||
|
||||
### 📚 描述
|
||||
|
||||
<!-- 详细说明你的更改 -->
|
||||
<!-- 为什么需要此更改?它解决了什么问题?-->
|
||||
<!-- 如果它解决了未解决的问题,请在此处链接到该问题。例如,“Resolves #1337” -->
|
||||
|
||||
### 📝 清单
|
||||
|
||||
<!-- 在所有适用的框中放置一个“x”。 -->
|
||||
<!-- 如果更改需要文档 PR,请适当地链接它 -->
|
||||
<!-- 如果不确定其中任何一个,请随时询问。我们是来帮忙的! -->
|
||||
|
||||
- [ ] 我已链接问题或讨论。
|
||||
- [ ] 我已经添加了测试(如果可能的话)。
|
||||
- [ ] 我已相应地更新了[文档](https://github.com/efuo/theme-solitude-docs)。
|
||||
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
<svg width="500px" height="500px" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<radialGradient cx="50.2980052%" cy="50%" fx="50.2980052%" fy="50%" r="49.7019948%" id="radialGradient-1">
|
||||
<stop stop-color="#59A2EF" offset="0%"></stop>
|
||||
<stop stop-color="#1588FF" stop-opacity="0.265264551" offset="74.3273328%"></stop>
|
||||
<stop stop-color="#153C92" stop-opacity="0" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g>
|
||||
<rect id="rectangle" fill="url(#radialGradient-1)" x="0" y="0" width="500" height="500" rx="250"></rect>
|
||||
<g id="group" transform="translate(167, 59)" fill="#000000" fill-rule="nonzero">
|
||||
<path d="M41.451978,366.819156 C63.2265115,314.167618 167.050853,309.635807 118.99746,228.707504 C153.639423,313.979396 6.78825531,314.963943 26.3287594,382 C12.5619158,361.643046 18.1905094,334.473897 37.7672802,320.255882 C54.8416479,307.145482 77.6751693,304.944731 94.4956701,291.066964 C124.038533,271.079215 120.593196,234.976751 96.7006861,211.861618 C96.0188719,211.181122 95.003404,210.544062 94.0822296,210.449951 C86.4807269,209.660866 78.8719708,208.915216 71.2487081,208.328832 C57.1699707,207.250174 43.5046739,208.806627 30.7315382,215.314771 C27.2426805,217.088403 23.7393162,218.348044 19.8007514,216.943617 C24.2397968,216.06042 28.6425756,215.162745 32.3272735,212.411806 C32.2692467,212.180148 32.2184733,211.948489 32.1604466,211.716831 C29.7523369,212.107754 27.6996411,213.041626 25.1537179,212.940276 C38.187974,204.006961 24.0149432,203.340944 16,204.796046 C43.9108611,184.243631 36.1280248,151.550884 84.6746446,161.273284 C101.270292,126.502854 113.695267,142.798552 133.649212,122 C130.261901,131.816511 125.583495,141.205903 121.347543,150.718363 C116.879484,161.895865 106.790085,163.495754 96.4178058,166.029514 C100.102504,164.921899 101.545919,167.404984 103.352001,169.641932 C129.057846,200.039816 157.962415,234.0284 155.895212,276.356675 C147.234722,323.376027 66.3744621,327.364889 41.451978,366.819156 L41.451978,366.819156 Z M71.3937749,171.88612 C61.1157889,177.641375 44.7957688,175.672282 47.1893718,192.474732 C52.5858584,180.23305 59.8754674,195.001253 71.3937749,171.88612 L71.3937749,171.88612 Z"></path>
|
||||
<path d="M75.3032249,211.025533 C106.026327,209.673873 112.009852,262.374155 89.125744,277.126764 C55.0225258,300.451933 -10.1418056,326.335859 20.1569835,378.551856 C19.9915736,378.703647 19.8333554,378.848209 19.6679454,379 C-9.82536916,354.648437 3.54407043,308.728139 30.8798638,288.53275 C55.238278,268.041007 100.157869,249.385209 75.3032249,211.025533 Z"></path>
|
||||
<path d="M131.122758,44.5611246 C140.518488,52.0520972 149.271959,60.2108697 155.377019,71.2803786 C171.087083,44.8006616 152.086349,16.9853448 131.534092,0 C163.329472,16.2086645 181.738463,59.2744981 151.913155,88.0552212 C133.150561,109.533698 83.0400028,127.861901 83.0688683,158 L70,158 C71.5587386,126.468232 104.321114,124.885836 92.9625284,113.344512 C85.81831,103.066201 82.6791837,91.7426379 83.3503072,78.4810034 C93.2511837,128.333716 119.56933,105.577709 144.877183,81.9216245 C153.58014,70.1480222 137.732964,54.0337208 131.122758,44.5683833 L131.122758,44.5611246 Z"></path>
|
||||
<path d="M62.2292659,56 C43.1451334,63.2999022 18.3176548,75.3501886 23.7278434,99.6686688 C30.7965771,99.1456907 37.8363406,98.6299763 44.876104,98.1069982 C44.9195594,98.4120687 44.9702573,98.7098757 45.0137126,99.0149462 C19.0853656,102.879173 29.4711895,111.580947 43.5145037,123.362481 C55.1822598,131.44685 65.3290794,100.736416 71,93.4946222 C67.581514,101.470038 64.1123302,109.423663 60.7735123,117.428132 C58.0503116,124.916888 53.6395956,131.149043 60.9400911,137.555525 C65.7491476,143.279229 67.4946034,149.874563 66.5313436,157.399637 C62.9680065,158.25674 59.3322439,159.12837 55.6747536,160 C60.3462016,135.11496 44.3763678,137.097919 29.5001597,123.34069 C-1.69352472,93.7706384 26.1903121,58.760162 62.2292659,56 Z"></path>
|
||||
<path d="M0.00732087227,143 C17.3943925,162.502948 36.3115265,145.13458 47,164.110998 C41.5898754,167.604594 37.7903427,172.386054 35.1401869,178 C21.3476636,175.47408 8.91682243,161.400081 0,143.007115 L0.00732087227,143 Z"></path>
|
||||
<path d="M29,207.557191 C25.5771332,208.185531 23.8692728,211.545785 20.9966372,212.980039 C16.6591005,213.184933 12.6502732,211.853125 12,207.092765 C17.6309374,206.703468 22.740227,206.355149 27.8495166,206 L29,207.550361 L29,207.557191 Z"></path>
|
||||
<path d="M66,177 C60.2942272,179.492077 52.7486034,178.10342 50,186 C56.264432,184.566305 62.8193669,184.123436 66,177 Z"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
@@ -0,0 +1,25 @@
|
||||
name: Close need info
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 */1 * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
close-need-info:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: close-issues
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: "close-issues"
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
labels: "question"
|
||||
inactive-day: 60
|
||||
close-reason: "not_planned"
|
||||
body: |
|
||||
Hi there! This issue has been automatically closed because it has not had any activity for 60 days. We label issues as "questions" in hopes of community or maintainer input, and it seems this issue has gone stale.
|
||||
|
||||
If you still need assistance or believe this closure is a mistake, please feel free to reopen the issue or create a new one with updated details. We're here to help!
|
||||
|
||||
Thank you for your contributions to our project!
|
||||
@@ -0,0 +1,18 @@
|
||||
name: Issue Invalid
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
lock-issue:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.label.name == 'invalid'
|
||||
steps:
|
||||
- name: Lock issue
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: "lock-issue"
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
lock-reason: "off-topic"
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Issue Question
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
create-comment:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.label.name == 'question'
|
||||
steps:
|
||||
- name: Create comment
|
||||
uses: actions-cool/issues-helper@v2.0.0
|
||||
with:
|
||||
actions: "create-comment"
|
||||
token: ${{ secrets.ISSUSE_TOKEN }}
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
body: |
|
||||
Hello! 👋
|
||||
|
||||
Thank you for submitting your question. To ensure we can provide the best answer possible, could you please confirm you've provided the following details:
|
||||
- A clear and concise description of your question.
|
||||
- Any relevant code snippets or links to your project.
|
||||
- What you've tried so far in attempting to solve your issue.
|
||||
|
||||
In the meantime, you might find the answer to your question in our [FAQs](https://solitude-docs.efu.me/faq) or [documentation](https://solitude-docs.efu.me/).
|
||||
|
||||
We aim to respond to questions within 48 hours. If your question is urgent, please consider reaching out through our support channels.
|
||||
|
||||
Thanks again for reaching out, and we look forward to assisting you!
|
||||
@@ -0,0 +1,29 @@
|
||||
name: Issue Wontfix
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
handle-wontfix:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.label.name == 'wontfix'
|
||||
steps:
|
||||
- name: Create comment for wontfix
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: "create-comment"
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
body: |
|
||||
Hi there! This issue has been marked as 'wontfix'. It means we've reviewed the issue but have chosen not to pursue it for reasons that may vary (e.g., aligning with the project's current priorities, outside of project scope, etc.).
|
||||
|
||||
We understand this might not be the outcome you were hoping for. If you believe this decision should be reconsidered, please provide any additional context or reasoning that was not previously considered.
|
||||
|
||||
Thank you for your understanding and for contributing to the project. Your efforts are greatly appreciated!
|
||||
- name: Close issue after wontfix
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: "close-issue"
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Node.js Package
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.ACCESS_TOKEN }}
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v5
|
||||
with:
|
||||
days-before-issue-stale: 30
|
||||
days-before-pr-stale: -1
|
||||
days-before-close: 7
|
||||
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
|
||||
close-pr-message: 'This issue has not seen any activity since it was marked stale. Closing.'
|
||||
stale-issue-label: 'Stale'
|
||||
exempt-issue-labels: 'pinned,bug,enhancement,documentation,Plan'
|
||||
operations-per-run: 1000
|
||||
@@ -0,0 +1,3 @@
|
||||
.DS_STORE
|
||||
.vscode
|
||||
.idea
|
||||
@@ -0,0 +1,88 @@
|
||||
|
||||
# 贡献者公约
|
||||
|
||||
## 我们的承诺
|
||||
|
||||
身为社区成员、贡献者和领袖,我们承诺使社区参与者不受骚扰,无论其年龄、体型、可见或不可见的缺陷、族裔、性征、性别认同和表达、经验水平、教育程度、社会与经济地位、国籍、相貌、种族、种姓、肤色、宗教信仰、性倾向或性取向如何。
|
||||
|
||||
我们承诺以有助于建立开放、友善、多样化、包容、健康社区的方式行事和互动。
|
||||
|
||||
## 我们的准则
|
||||
|
||||
有助于为我们的社区创造积极环境的行为例子包括但不限于:
|
||||
|
||||
* 表现出对他人的同情和善意
|
||||
* 尊重不同的主张、观点和感受
|
||||
* 提出和大方接受建设性意见
|
||||
* 承担责任并向受我们错误影响的人道歉
|
||||
* 注重社区共同诉求,而非个人得失
|
||||
|
||||
不当行为例子包括:
|
||||
|
||||
* 使用情色化的语言或图像,及性引诱或挑逗
|
||||
* 嘲弄、侮辱或诋毁性评论,以及人身或政治攻击
|
||||
* 公开或私下的骚扰行为
|
||||
* 未经他人明确许可,公布他人的私人信息,如物理或电子邮件地址
|
||||
* 其他有理由认定为违反职业操守的不当行为
|
||||
|
||||
## 责任和权力
|
||||
|
||||
社区领袖有责任解释和落实我们所认可的行为准则,并妥善公正地对他们认为不当、威胁、冒犯或有害的任何行为采取纠正措施。
|
||||
|
||||
社区领导有权力和责任删除、编辑或拒绝或拒绝与本行为准则不相符的评论(comment)、提交(commits)、代码、维基(wiki)编辑、议题(issues)或其他贡献,并在适当时机知采取措施的理由。
|
||||
|
||||
## 适用范围
|
||||
|
||||
本行为准则适用于所有社区场合,也适用于在公共场所代表社区时的个人。
|
||||
|
||||
代表社区的情形包括使用官方电子邮件地址、通过官方社交媒体帐户发帖或在线上或线下活动中担任指定代表。
|
||||
|
||||
## 监督
|
||||
|
||||
辱骂、骚扰或其他不可接受的行为可通过 [插入联系方式] 向负责监督的社区领袖报告。
|
||||
所有投诉都将得到及时和公平的审查和调查。
|
||||
|
||||
所有社区领袖都有义务尊重任何事件报告者的隐私和安全。
|
||||
|
||||
## 处理方针
|
||||
|
||||
社区领袖将遵循下列社区处理方针来明确他们所认定违反本行为准则的行为的处理方式:
|
||||
|
||||
### 1. 纠正
|
||||
|
||||
**社区影响**:使用不恰当的语言或其他在社区中被认定为不符合职业道德或不受欢迎的行为。
|
||||
|
||||
**处理意见**:由社区领袖发出非公开的书面警告,明确说明违规行为的性质,并解释举止如何不妥。或将要求公开道歉。
|
||||
|
||||
### 2. 警告
|
||||
|
||||
**社区影响**:单个或一系列违规行为。
|
||||
|
||||
**处理意见**:警告并对连续性行为进行处理。在指定时间内,不得与相关人员互动,包括主动与行为准则执行者互动。这包括避免在社区场所和外部渠道中的互动。违反这些条款可能会导致临时或永久封禁。
|
||||
|
||||
### 3. 临时封禁
|
||||
|
||||
**社区影响**: 严重违反社区准则,包括持续的不当行为。
|
||||
|
||||
**处理意见**: 在指定时间内,暂时禁止与社区进行任何形式的互动或公开交流。在此期间,不得与相关人员进行公开或私下互动,包括主动与行为准则执行者互动。违反这些条款可能会导致永久封禁。
|
||||
|
||||
### 4. 永久封禁
|
||||
|
||||
**社区影响**:行为模式表现出违反社区准则,包括持续的不当行为、骚扰个人或攻击或贬低某个类别的个体。
|
||||
|
||||
**处理意见**:永久禁止在社区内进行任何形式的公开互动。
|
||||
|
||||
## 参见
|
||||
|
||||
本行为准则改编自 [Contributor Covenant][homepage] 2.1 版, 参见 [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]。
|
||||
|
||||
社区处理方针灵感来源于 [Mozilla's code of conduct enforcement ladder][Mozilla CoC]。
|
||||
|
||||
有关本行为准则的常见问题的答案,参见 [https://www.contributor-covenant.org/faq][FAQ]。
|
||||
其他语言翻译参见 [https://www.contributor-covenant.org/translations][translations]。
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
@@ -0,0 +1,43 @@
|
||||
# 代码贡献指南
|
||||
|
||||
1. 首先非常欢迎和感谢对本项目发起 `Pull Request` 的热心小伙伴们。
|
||||
2. **特别提示:请务必在 `dev` 分支提交 `PR`,`main` 分支目前仅是正式版的代码,即发布正式版本后才会从 `dev` 分支进行合并。**
|
||||
3. 本项目代码风格为使用2个空格代表一个Tab,因此在提交代码时请注意一下,否则很容易在IDE格式化代码后与原代码产生大量diff,这样会给其他人阅读代码带来极大的困扰。
|
||||
4. 当你遇到这几种情况,非常欢迎你做出贡献,如纠正拼写错误、损坏的链接、或者是其它较明显的错误,又或者是开始一项别人请求的任务,或者是过去在 `issue` 中早就讨论过的。
|
||||
5. **提交代码前,请再三检查并测试是否能正常运行,如若有难点无法解决,请在提交时注明情况。并且保证新增加或者修改的方法都有完整的文档说明。**
|
||||
6. 本项目可以采用两种方式接受代码贡献:
|
||||
- 第一种就是基于[Git Flow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)开发流程,因此在发起Pull Request的时候请选择dev分支,详细步骤参考后文,推荐使用此种方式贡献代码。
|
||||
- 另外一种贡献代码的方式就是加入Solitude开发组,前提是对自己的代码足够自信就可以申请加入,加入之后可以随时直接提交代码,但要注意对所做的修改或新增的代码进行单元测试,保证提交代码没有明显问题。
|
||||
|
||||
|
||||
### PR方式贡献代码步骤
|
||||
|
||||
* 在 GitHub 上 `fork` 到自己的仓库,如 `yife68/Hexo-Theme-Solitude`,然后 `clone` 到本地Hexo主题目录,并设置用户信息。
|
||||
|
||||
```bash
|
||||
$ git clone git@github.com:{your-github-username}/hexo-theme-solitude.git themes/solitude
|
||||
$ cd solitude
|
||||
$ git config user.name "yourname"
|
||||
$ git config user.email "your email"
|
||||
```
|
||||
|
||||
* 修改代码后提交,并推送到自己的仓库。
|
||||
|
||||
```bash
|
||||
$ #do some change on the content
|
||||
$ git commit -am "Fix issue #1: change something"
|
||||
$ git push
|
||||
```
|
||||
|
||||
* 在 `GitHub` 上提交 `Pull Request`。
|
||||
* 定期使用项目仓库内容更新自己仓库内容。
|
||||
|
||||
```bash
|
||||
$ git remote add upstream https://github.com/everfu/hexo-theme-solitude
|
||||
$ git fetch upstream
|
||||
$ git checkout dev
|
||||
$ git rebase upstream/dev
|
||||
$ git push -f origin dev
|
||||
```
|
||||
|
||||
* 不得添加任何第三方的创作
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 EverFu
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,83 @@
|
||||
简体中文丨[繁体中文](README_zh-Hant.md)丨[English](README_en-US.md)
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img src=".github/logo.svg" alt="Solitude logo" height="200">
|
||||
|
||||
<h1>Hexo Theme Solitude</h1>
|
||||
|
||||
一款优雅的 Hexo 主题,支持懒加载、PWA、Latex 以及多种评论系统。
|
||||
|
||||
主题设计由 [@张洪Heo](https://github.com/zhheo) 全权授权
|
||||
|
||||

|
||||

|
||||

|
||||
[](https://github.com/everfu/hexo-theme-solitude/stargazers)
|
||||
[](https://www.npmjs.com/package/hexo-theme-solitude)
|
||||
|
||||

|
||||

|
||||
[](https://socket.dev/npm/package/hexo-theme-solitude/overview)
|
||||
|
||||
[](https://twitter.com/efu_oo)
|
||||
[](https://t.me/solitudePro)
|
||||
|
||||

|
||||

|
||||
|
||||
[](https://gitee.com/nsjjd_w/hexo-theme-solitude)
|
||||
[](https://gitlab.com/efu/hexo-theme-solitude)
|
||||
|
||||
[文档](https://solitude.js.org/)丨[预览](https://www.efu.me/)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
## 特性
|
||||
|
||||
- 页面懒加载(Pjax)、图片懒加载(LazyLoad)、离线应用(PWA)
|
||||
- 评论(Twikoo、Waline、Valine、Artalk、Giscus),支持双评论
|
||||
- 昼夜切换(ColorMode)
|
||||
- 灯箱(medium-zoom、fancybox)
|
||||
- 数学公式(Latex)
|
||||
- 特色页面:即刻短文、我的装备、在线工具、音乐馆、友链鱼塘、相册页、豆瓣页、弹幕留言页
|
||||
- 文章功能:AI 摘要、代码高亮
|
||||
|
||||
## Todo
|
||||
|
||||
- [x] 首页顶部新样式
|
||||
- [x] 首页文章列表三列显示
|
||||
- [x] btns 外挂标签
|
||||
|
||||
> 如有问题请提 [issue](https://github.com/everfu/hexo-theme-solitude/issues)
|
||||
|
||||
## 应用
|
||||
|
||||
1. 使用 NPM 包进行安装
|
||||
```bash
|
||||
npm i hexo-theme-solitude
|
||||
```
|
||||
2. 应用主题
|
||||
```yaml
|
||||
theme: solitude
|
||||
```
|
||||
|
||||
前往 [文档](https://solitude.js.org/) 获取更多信息。
|
||||
|
||||
## 赞助者
|
||||
|
||||
[](https://www.buymeacoffee.com/everfu)
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg">
|
||||
<img src='https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg' alt="赞助者"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## 版权
|
||||
|
||||
[MIT](./LICENSE) License © 2023-至今 [EverFu](https://github.com/efuo)
|
||||
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fvalor-x%2Fhexo-theme-solitude?ref=badge_large)
|
||||
@@ -0,0 +1,80 @@
|
||||
[简体中文](README.md)丨[繁体中文](README_zh-Hant.md)丨English
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img src=".github/logo.svg" alt="Solitude logo" height="200">
|
||||
|
||||
<h1>Hexo Theme Solitude</h1>
|
||||
|
||||
An elegant Hexo theme that supports lazy loading, PWA, Latex, and multiple comment systems.
|
||||
|
||||
Theme design is fully licensed by [@张洪Heo](https://github.com/zhheo).
|
||||
|
||||

|
||||

|
||||

|
||||
[](https://github.com/everfu/hexo-theme-solitude/stargazers)
|
||||
[](https://www.npmjs.com/package/hexo-theme-solitude)
|
||||
|
||||

|
||||

|
||||
[](https://socket.dev/npm/package/hexo-theme-solitude/overview)
|
||||
|
||||
[](https://twitter.com/efu_oo)
|
||||
[](https://t.me/solitudePro)
|
||||
|
||||

|
||||

|
||||
|
||||
[](https://gitee.com/nsjjd_w/hexo-theme-solitude)
|
||||
[](https://gitlab.com/efu/hexo-theme-solitude)
|
||||
|
||||
[Documentation](https://solitude.js.org/)丨[Preview](https://www.efu.me/)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
- Pjax、LazyLoad、PWA.
|
||||
- Comments(Twikoo、Waline、Valine、Artalk、Giscus), Can double comment.
|
||||
- ColorMode.
|
||||
- Lightbox(medium-zoom、fancybox).
|
||||
- Mathematical formulas(Latex).
|
||||
- Featured pages: Instant Short Article, My Equipment, Online Tools, Music Gallery, Friend Chain Fish Pond, Photo Album Page, Douban Page, Barrage message page.
|
||||
- Article features: AI summary, code highlighting.
|
||||
|
||||
## Todo
|
||||
|
||||
- [x] The list of articles is displayed in three columns on the homepage.
|
||||
- [x] btns tags plugin.
|
||||
|
||||
> If you have any questions, please issue an [issue](https://github.com/everfu/hexo-theme-solitude/issues)
|
||||
|
||||
## Setup
|
||||
|
||||
1. Use the NPM package
|
||||
```bash
|
||||
npm i hexo-theme-solitude
|
||||
```
|
||||
2. Apply
|
||||
```yaml
|
||||
theme: solitude
|
||||
```
|
||||
|
||||
Check out the [Documentation](https://solitude.js.org/) for more information.
|
||||
|
||||
## Sponsors
|
||||
|
||||
[](https://www.buymeacoffee.com/everfu)
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg">
|
||||
<img src='https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg'/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## License
|
||||
|
||||
[MIT](./LICENSE) License © 2023-PRESENT [Ever Fu](https://github.com/everfu)
|
||||
@@ -0,0 +1,78 @@
|
||||
[简体中文](README.md)丨繁体中文丨[English](README_en-US.md)
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img src=".github/logo.svg" alt="Solitude logo" height="200">
|
||||
|
||||
<h1>Hexo Theme Solitude</h1>
|
||||
|
||||
一款優雅的 Hexo 主題,支援懶載入、PWA、Latex 以及多種評論系統。
|
||||
|
||||
主題設計由 [@张洪Heo](https://github.com/zhheo)全權授權
|
||||
|
||||

|
||||

|
||||

|
||||
[](https://github.com/everfu/hexo-theme-solitude/stargazers)
|
||||
[](https://www.npmjs.com/package/hexo-theme-solitude)
|
||||
|
||||

|
||||

|
||||
[](https://socket.dev/npm/package/hexo-theme-solitude/overview)
|
||||
|
||||
[](https://twitter.com/efu_oo)
|
||||
[](https://t.me/solitudePro)
|
||||
|
||||

|
||||

|
||||
|
||||
[](https://gitee.com/nsjjd_w/hexo-theme-solitude)
|
||||
[](https://gitlab.com/efu/hexo-theme-solitude)
|
||||
|
||||
[文档](https://solitude.js.org/)丨[預覽](https://www.efu.me/)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
## 特性
|
||||
|
||||
- 頁面懶載入(Pjax)、圖片懶載入(LazyLoad)、離線應用(PWA)
|
||||
- 評論(Twikoo、Waline、Valine、Artalk、Giscus),支援雙評論
|
||||
- 晝夜切換(ColorMode)
|
||||
- 燈箱(medium-zoom、fancybox)
|
||||
- 數學公式(Latex)
|
||||
- 特色頁面:即刻短文、我的裝備、在線工具、音樂館、友鏈魚塘、相冊頁、豆瓣頁、留言彈幕頁。
|
||||
- 文章功能:AI 摘要、代碼高亮。
|
||||
|
||||
## Todo
|
||||
|
||||
- [x] 首页文章列表三列显示
|
||||
- [x] btns 外挂标签
|
||||
|
||||
## 應用
|
||||
|
||||
1. 使用 NPM 包進行安裝
|
||||
```bash
|
||||
npm i hexo-theme-solitude
|
||||
```
|
||||
2. 應用主題
|
||||
```yaml
|
||||
theme: solitude
|
||||
```
|
||||
|
||||
前往 [文檔](https://solitude.js.org/) 獲取更多資訊。
|
||||
|
||||
## 贊助者
|
||||
|
||||
[](https://www.buymeacoffee.com/everfu)
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg">
|
||||
<img src='https://cdn.jsdelivr.net/gh/efuo/static/sponsors.svg'/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## 版權
|
||||
|
||||
[MIT](./LICENSE) License © 2023-至今 [Efu](https://github.com/everfu)
|
||||
@@ -0,0 +1,9 @@
|
||||
# Security Policy
|
||||
|
||||
## Report a vulnerability
|
||||
|
||||
To report a vulnerability, please [report privately via security tab](https://github.com/everfu/hexo-theme-solitude/security/advisories/new) on the correct GitHub repository (see [Document](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability)). If you are unable to report, please feel free to email us at o@efu.me.
|
||||
|
||||
All security vulnerabilities will be verified and resolved in a timely manner.
|
||||
|
||||
While it is rare for new vulnerabilities to be discovered, it is recommended to always use the latest version of the theme and other dependencies by maintaining locked files (`yarn.lock`, `package-lock.json`) to ensure that they are as secure as possible.
|
||||
@@ -0,0 +1,977 @@
|
||||
#---------------------------
|
||||
# Hexo Theme Solitude
|
||||
# Author: EverFu
|
||||
# Github: https://github.com/everfu/hexo-theme-solitude
|
||||
#
|
||||
# 配置指南: https://solitude.js.org/
|
||||
# 你可以从指南中获得更详细的说明
|
||||
#
|
||||
# Guide: https://solitude.js.org/
|
||||
# You can get more detailed help from the guide
|
||||
#
|
||||
# 赞助:https://afdian.net/a/everfu
|
||||
# sponsor: https://github.com/sponsors/everfu
|
||||
#---------------------------
|
||||
|
||||
# 站点设置
|
||||
# site settings
|
||||
site:
|
||||
# Logo
|
||||
name:
|
||||
# 显示类型 (i_class/text/img)
|
||||
# Display type (i_class/text/img)
|
||||
class: text
|
||||
# 具体内容 例如:solitude st-logo / Efu / /img/logo.png
|
||||
# Specific content, for example: solitude st-logo / Efu / /img/logo.png
|
||||
custom: Solitude
|
||||
# 网页icon
|
||||
# Web icon
|
||||
siteIcon: /img/pwa/favicon.ico
|
||||
# 页脚的Logo、加载动画默认的logo
|
||||
# Logo in the footer, default logo for loading animation
|
||||
icon: /img/pwa/favicon.ico
|
||||
|
||||
# 导航栏
|
||||
# NavBar
|
||||
nav:
|
||||
# logo 箱子
|
||||
# logo group
|
||||
group:
|
||||
# 项目: # 分类名称
|
||||
# Solitude: https://github.com/everfu/hexo-theme-solitude || /img/pwa/favicon.ico # 子菜单名称(submenu name): 链接地址(address) || 图标(icon)
|
||||
|
||||
# 中心菜单
|
||||
# center menu
|
||||
menu:
|
||||
# 首页: / # 显示名称:路径 / Display name: path
|
||||
# 文库: # 显示名称 / Display name
|
||||
# 文章列表: /archives/ || st-folder-fill # 子菜单名称:路径 || 图标 / Submenu name: path || icon
|
||||
# 全部分类: /categories/ || st-checkbox-multiple-blank-fill
|
||||
# 全部标签: /tags/ || st-price-tag-fill
|
||||
# 友链:
|
||||
# 友链鱼塘: /moments/ || st-wifi-fill
|
||||
# 友情链接: /links/ || st-group-fill
|
||||
# 宝藏博主: javascript:travelling() || st-gift-fill
|
||||
# 我的:
|
||||
# 装备: /equipment/ || st-laptop-line
|
||||
# 工具箱: /tlink/ || st-tools-fill
|
||||
# 音乐馆: /music/ || st-disc-fill
|
||||
# 关于:
|
||||
# 关于本站: /about/ || st-contacts-fill
|
||||
|
||||
# 右侧按钮
|
||||
# Button on the right
|
||||
right:
|
||||
random: false # 随机文章跳转 / random post button
|
||||
console: false #控制台 / console
|
||||
# 自定义按钮
|
||||
# custom button
|
||||
# 左至右
|
||||
# from left to right
|
||||
custom:
|
||||
# - name: 开往 - 友链接力 # 显示文字 / Displayed text
|
||||
# url: https://www.travellings.cn/go.html # 跳转链接 / Jump link
|
||||
# icon: st-train-line # 图标 / Icon
|
||||
# onclick: # 点击事件 / Click event
|
||||
# id: travellings_button # id
|
||||
|
||||
# 首页顶部样式
|
||||
# Home top style
|
||||
hometop:
|
||||
enable: false # 是否打开 / if enable
|
||||
# banner display
|
||||
banner:
|
||||
# 左上角显示大文字
|
||||
# Large text displayed in the upper left corner
|
||||
# tip:可使用html标签
|
||||
# tip: html tags be used
|
||||
title: 宁静致远<br>热爱生活
|
||||
# 左上角显示小文字
|
||||
# Small text displayed in the upper left corner
|
||||
url: Hexo Theme Solitude
|
||||
# 轮播icon
|
||||
# Carousel icon
|
||||
# tip: 76x76 size
|
||||
icon:
|
||||
# HTML: # 名字 / Name
|
||||
# img: https://7.isyangs.cn/34/65f2e42921677-34.png # 图片 / Image
|
||||
# color: "#e9572b" # 背景色 / Background color
|
||||
# JS:
|
||||
# img: https://7.isyangs.cn/34/65f2e43ceddda-34.png
|
||||
# color: "#f7cb4f"
|
||||
# Docker:
|
||||
# img: https://7.isyangs.cn/34/65f2e45462045-34.png
|
||||
# color: "#57b6e6"
|
||||
# Flutter:
|
||||
# img: https://7.isyangs.cn/34/65f2e47acbe98-34.png
|
||||
# color: "#ffffff"
|
||||
# WebPack:
|
||||
# img: https://7.isyangs.cn/34/65f2e488bf8ed-34.png
|
||||
# color: "#2e3a41"
|
||||
# Git:
|
||||
# img: https://7.isyangs.cn/34/65f2e499066fa-34.png
|
||||
# color: "#df5b40"
|
||||
|
||||
# 左下跳转按钮
|
||||
# Banner lower left jump button
|
||||
group:
|
||||
# 热门: /tags/热门/ || st-fire-fill || linear-gradient(to right,#f65,#ffbf37)
|
||||
# 教程: /tags/教程/ || st-book-mark-fill || linear-gradient(to right,#358bff,#15c6ff)
|
||||
# 精选: /tags/精选/ || st-star-smile-fill || linear-gradient(to right,#18e7ae,#1eebeb)
|
||||
|
||||
# 右侧置顶列表(在文章的front matter中添加“recommend: true”)
|
||||
# Right top list (add "recommend: true" in the front matter of the article)
|
||||
recommendList:
|
||||
# 左上角显示文字
|
||||
# Large text displayed in the upper left corner
|
||||
sup: 置顶
|
||||
# 左下角大字
|
||||
# Large text in the lower left corner
|
||||
title: Solitude 主题文档
|
||||
# 点击跳转链接
|
||||
# Click the jump link
|
||||
url: https://solitude.js.org/
|
||||
# 显示背景图片
|
||||
# Display background image
|
||||
img: /img/default.avif
|
||||
# 阴影颜色
|
||||
# Shadow color
|
||||
color: "none"
|
||||
|
||||
# carousel
|
||||
# 顶部推荐轮播图
|
||||
# 使用方法:在文章的front matter中添加“recommend: true”
|
||||
# tip:建议开了这个就不要开hometop,其功能类似
|
||||
carousel: false
|
||||
|
||||
# --------------------------------------
|
||||
# Aside Settings
|
||||
# 侧边栏配置
|
||||
aside:
|
||||
# 值:about(关于我)、newestPost(最新文章)、allInfo(网站信息)、flip(公众号二维码)、newest_comment(最新评论)
|
||||
# Values: about (info card), newestPost (latest article), allInfo (website information), flip (official account QR code), newest_comment (latest comment)
|
||||
|
||||
# 在主页显示的侧边栏信息
|
||||
# Sidebar information displayed on the homepage
|
||||
home:
|
||||
# 固定的信息(滑动不跟随)
|
||||
# Fixed information (not followed by sliding)
|
||||
noSticky: "about"
|
||||
# 不固定的信息(滑动跟随)
|
||||
# Unfixed information (sliding follow)
|
||||
Sticky: "allInfo"
|
||||
# 在文章页显示的侧边栏信息
|
||||
# Sidebar information displayed on the article page
|
||||
post:
|
||||
noSticky: "about"
|
||||
Sticky: "newestPost"
|
||||
# 在页面中显示的侧边栏信息
|
||||
# Sidebar information displayed on the
|
||||
page:
|
||||
noSticky: "about"
|
||||
Sticky: "newestPost,allInfo"
|
||||
position: 1 # left(0): 左侧 / right(1): 右侧
|
||||
# 侧边栏个人信息卡片
|
||||
# Sidebar personal information
|
||||
card:
|
||||
style: 0 # 0: Heo样式 :1: 设计样式
|
||||
# 头像信息
|
||||
# Avatar information
|
||||
author:
|
||||
# 头像
|
||||
# Avatar
|
||||
img: /img/avatar.avif
|
||||
# 表情图片链接
|
||||
# Emoticon image link
|
||||
# tip: 26x26 size
|
||||
sticker: https://7.isyangs.cn/34/65f2e4e0423cc-34.png # 不填不显示
|
||||
# 点击作者头像跳转链接
|
||||
# Click the author's avatar to jump link
|
||||
url: /about/
|
||||
# 背景图片
|
||||
# Background image
|
||||
background: # https://s3.qjqq.cn/47/663af296b85f4.webp!color # 不设置不会展示(仅样式为1、2时有效)
|
||||
# 文案1
|
||||
# label1
|
||||
content: 分享自己对编程的<b>热爱</b>,对美好生活的<b>向往</b>,对知识海洋<b>探索历程</b>。 # 样式为1时无效
|
||||
# 文案2
|
||||
# label2
|
||||
content2: 相信你可以在这里找到对你有用的知识和教程。 # 样式为1时无效
|
||||
# 个人信息卡片底部的小图标,按照例子填写
|
||||
# Small icons at the bottom of the personal information card, fill in according to the example
|
||||
# 个人信息卡片顶部按钮的打招呼语句
|
||||
# Greeting statement of the button at the top of the personal information card
|
||||
sayhello: # 样式为2时无效
|
||||
morning: 一日之计在于晨
|
||||
noon: 吃饱了才有力气干活
|
||||
afternoon: 集中精力,攻克难关
|
||||
night: 不要太劳累了,早睡更健康
|
||||
goodnight: 睡个好觉,保证精力充沛
|
||||
# 个人信息卡片顶部按钮的切换文字
|
||||
# Switching text of the button at the top of the personal information card
|
||||
sayhello2: # 样式为2时无效
|
||||
# - 🤖️ 数码科技爱好者
|
||||
# - 🔍 分享与热心帮助
|
||||
# - 🏠 智能家居小能手
|
||||
# - 🔨 设计开发一条龙
|
||||
# - 🤝 专修交互与设计
|
||||
# - 🏃 脚踏实地行动派
|
||||
# - 🧱 团队小组发动机
|
||||
# - 💢 壮汉人狠话不多
|
||||
# - 🎮 电竞游戏爱好者
|
||||
# 个人信息卡片底部的小图标,按照例子填写
|
||||
information: # 样式为1时请不要超过4个
|
||||
# Github: https://github.com/efuo || st-github-line # 名称:链接 || 图标 / Name: link || icon
|
||||
# Bilibili: https://space.bilibili.com/1329819902 || st-bilibili-line
|
||||
|
||||
# 二维码
|
||||
# Official account QR code
|
||||
flip:
|
||||
# 右下角头像
|
||||
# Avatar in the lower right corner
|
||||
favicon:
|
||||
# 正面
|
||||
# Front
|
||||
face:
|
||||
# 鼠标悬停翻转图片
|
||||
# Mouse hover flip image
|
||||
backface:
|
||||
# 背景色:var(--efu-blue) / #000 / rgba(0,0,0,0.5) / linear-gradient(to right,#f65,#ffbf37)
|
||||
# Background color: var(--efu-blue) / #000 / rgba(0,0,0,0.5) / linear-gradient(to right,#f65,#ffbf37)
|
||||
backcolor: "var(--efu-blue)"
|
||||
|
||||
newest_comment:
|
||||
enable: true
|
||||
storage: .5 # 缓存时间 1: 1天 / .5 : 半天 / Cache time 1: 1 day .5 : half a day
|
||||
limit: 5 # 评论数 / Number of comments
|
||||
|
||||
# 页面目录
|
||||
# Page directory
|
||||
toc:
|
||||
# 在文章页显示
|
||||
# Display on the article page
|
||||
post: true
|
||||
# 在任意页显示
|
||||
# Display on any page
|
||||
page: false
|
||||
# 开启后不悬停目录有模糊效果
|
||||
# After opening, there is a fuzzy effect without hovering over the directory
|
||||
vague: true
|
||||
|
||||
# 侧边栏文章列表
|
||||
# Sidebar article list
|
||||
tags:
|
||||
# 是否显示标签
|
||||
# Whether to display tags
|
||||
enable: false
|
||||
# 显示标签数量,当高于标签总数时,显示全部标签按钮
|
||||
# Display the number of tags, when it is higher than the total number of tags, display all tags button
|
||||
limit: 20
|
||||
# 高亮显示标签列表
|
||||
# Highlighted tag list
|
||||
highlight_list:
|
||||
# - Hexo
|
||||
|
||||
# 侧边栏归档
|
||||
# aside archive
|
||||
archive:
|
||||
enable: false
|
||||
# 显示类型
|
||||
type: "month" # month: 按月 / year: 按年 : month: by month / year: by year
|
||||
|
||||
# 建站信息
|
||||
# Website information
|
||||
siteinfo:
|
||||
# 文章数
|
||||
# Number of articles
|
||||
postcount: true
|
||||
# 总字数
|
||||
# The number of words on the web site
|
||||
wordcount: false
|
||||
# 访问量
|
||||
# PV
|
||||
pv: true
|
||||
# 访客数
|
||||
# UV
|
||||
uv: true
|
||||
# 最后更新日期
|
||||
# Last update date
|
||||
updatetime: true
|
||||
# 建站时间
|
||||
# Website creation time
|
||||
runtimeenable: true
|
||||
# 格式:yyyy-MM-dd hh-mm-ss
|
||||
# Format: yyyy-MM-dd hh-mm-ss
|
||||
runtime: "2023-04-20 00:00:00"
|
||||
|
||||
# 首页文章配置信息
|
||||
# Configure information on the home page
|
||||
index_post_list:
|
||||
direction: column # row / column
|
||||
column: 2 #2:2列 3:3列
|
||||
content: false # 1: post.description / 2: 自动获取description或截取内容(Automatically get descriptions or screenshots) / 3: 只使用截取内容(Use only screenshots) / false: 不显示内容(No content is displayed)
|
||||
length: 500 # 截取内容的长度 : The length of the screenshot content
|
||||
cover: both # left: 在左侧 : left / right: 在右侧 : right / both: 两侧 : both
|
||||
|
||||
# 页面默认设置
|
||||
# page default settings
|
||||
page:
|
||||
error: true # 404页面 / 404 page
|
||||
tags: true # 标签页 / Tags page
|
||||
categories: true # 分类页 / Categories page
|
||||
default: # 默认值 / Default value
|
||||
# 默认图片
|
||||
# default cover
|
||||
cover:
|
||||
# - /img/default.png # 默认图片 / default cover
|
||||
|
||||
# 文章页默认设置
|
||||
# post default settings
|
||||
post:
|
||||
default:
|
||||
# 文章默认图片
|
||||
# default cover
|
||||
cover:
|
||||
# - # 默认图片 / default cover
|
||||
# 文章发布默认地址
|
||||
# default post locate
|
||||
locate: 衡阳
|
||||
# 文章默认版权
|
||||
# default post copyright
|
||||
copyright:
|
||||
enable: true
|
||||
author:
|
||||
url: /about/ # 点击头像跳转地址
|
||||
img: # 显示头像,不填写默认显示site_icon
|
||||
license: CC BY-NC-SA 4.0
|
||||
licenurl: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh
|
||||
# 顶部文章简介
|
||||
# Top article introduction
|
||||
meta:
|
||||
date: false # 发布日期 / Release date
|
||||
updated: false # 更新日期 / Update date
|
||||
locate: false # 位置 / Location
|
||||
wordcount: false # 字数 / Number of words
|
||||
readtime: false # 访问 / uv
|
||||
pv: false # 浏览量 / pv
|
||||
comment: false # 评论数 / Comment count
|
||||
# 打赏
|
||||
# reward
|
||||
award:
|
||||
enable: false
|
||||
appreciators: /about # 赞赏记录 / Appreciative records
|
||||
title: 感谢您的赞赏。
|
||||
desc: 因为有你们的支持,我才体会到写文章的价值。
|
||||
list:
|
||||
# - name: 爱发电
|
||||
# qcode: https://s3.qjqq.cn/47/661ba8e695f17.webp!color
|
||||
# url: https://afdian.net/a/efu0u0/
|
||||
# color: var(--efu-purple)
|
||||
# - name: Github Sponsor
|
||||
# qcode: https://s3.qjqq.cn/47/661ba900c4bc1.webp!color
|
||||
# url: https://github.com/sponsors/efuo
|
||||
# color: var(--efu-black)
|
||||
# 分享按钮,需要是什么哪些按钮,填写后开启
|
||||
share:
|
||||
enable: false
|
||||
list:
|
||||
# - qq
|
||||
# - weibo
|
||||
# - twitter
|
||||
# - facebook
|
||||
# - telegram
|
||||
# - whatsapp
|
||||
# - linkedin
|
||||
# - link
|
||||
# - qrcode
|
||||
# 版权中订阅按钮跳转链接,填写地址后开启
|
||||
# Subscription button jump link in copyright
|
||||
rss: # /atom.xml
|
||||
# 文章主题色获取
|
||||
# Article theme color acquisition
|
||||
covercolor:
|
||||
enable: false
|
||||
mode: local # local:本地取色 / api:img2color取色 : local: local color / api: img2color color
|
||||
api: https://api.qjqq.cn/api/Imgcolor?img= # api地址 / api address
|
||||
time: 43200000 # api取色间隔(毫秒),默认为12小时 / api color interval (milliseconds), default is 12 hours
|
||||
# footer
|
||||
footer:
|
||||
enable: true
|
||||
desc: 来自 Efu 的文章 # 介绍文字
|
||||
button: # 跳转按钮
|
||||
enable: true
|
||||
name: 了解更多
|
||||
url: /about/
|
||||
|
||||
# -------------------------
|
||||
# 自定义主题
|
||||
|
||||
# 自定义配色
|
||||
# custom theme color
|
||||
# 注意:颜色值必须使用引号,如“#000”,否则可能会导致错误!
|
||||
# Note: The color value must be enclosed in quotation marks, such as "#000", otherwise it may cause an error!
|
||||
# --------------------------------------
|
||||
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
|
||||
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
|
||||
|
||||
# 主题显示模式调整
|
||||
# theme display mode adjustment
|
||||
# 主题支持三种模式:自动切换、暗色模式、亮色模式
|
||||
# The theme supports three modes: automatic switching, dark mode, and light mode
|
||||
# --------------------------------------
|
||||
display_mode:
|
||||
type: auto # auto: 自动切换 / dark: 暗色模式 / light: 亮色模式 / auto: automatic switching / dark: dark mode / light: light mode
|
||||
universe: true # 开启后暗色模式下会显示星空背景 / After opening, the dark mode will display the starry sky background
|
||||
|
||||
# 文章底部推荐文章
|
||||
# Recommended articles at the bottom of the article
|
||||
# --------------------------------------
|
||||
related_post:
|
||||
enable: false
|
||||
# 推荐文章数量
|
||||
# Number of recommended articles
|
||||
limit: 2
|
||||
# 根据创建日期(created)或是更新日期(updated)
|
||||
# According to the creation date (created) or the update date (updated)
|
||||
date_type: created
|
||||
|
||||
# --------------------------------------
|
||||
# Footer Settings
|
||||
# 页脚配置
|
||||
footer:
|
||||
# 底部上方一排图标
|
||||
# Bottom row of icons
|
||||
information:
|
||||
author: false # 是否显示 site_icon / enable site_icon in footer
|
||||
left: # 左侧显示图标
|
||||
# Github: https://github.com/efuo || st-github-line # 名称:链接 || 图标 / Name: link || icon
|
||||
# Mail: mailto:o@efu.me || st-mail-line
|
||||
right: # 右侧显示图标
|
||||
# Bilibili: https://space.bilibili.com/1329819902 || st-bilibili-line
|
||||
# 抖音: https://v.douyin.com/iJsLc8jt/ || st-douyin-fill
|
||||
|
||||
# 底部导航栏
|
||||
# Bottom navigation bar
|
||||
group:
|
||||
# 导航:
|
||||
# 归档: /archives/
|
||||
# 分类: /categories/
|
||||
# 标签: /tags/
|
||||
# 服务:
|
||||
# 阿里云: https://aliyun.com/
|
||||
# 51la统计: https://v6.51.la/
|
||||
# 百度统计: https://tongji.baidu.com/
|
||||
# 支持:
|
||||
# 打赏记录: /about/
|
||||
# 协议:
|
||||
# Cookies: /cookies/
|
||||
# 用户协议: /privacy/
|
||||
# 版权协议: /copyright/
|
||||
|
||||
# 页脚随机友链
|
||||
# Random links at footer
|
||||
# warning: 打开前必须先配置links
|
||||
# warning: links must be configured before opening
|
||||
randomlink: false
|
||||
# 隐私助手右侧弹窗,填写路径后开启
|
||||
# Privacy assistant right pop-up window, fill in the path to open
|
||||
privacy: # /privacy/
|
||||
# 版权(Copyright)
|
||||
license: # /license/
|
||||
# 页脚右侧链接,例如:ICP备案号、公安备案号等
|
||||
# Footer right link, such as: ICP filing number, public security filing number, etc.
|
||||
links:
|
||||
# 为了主题能够得到更多的支持,建议保留主题链接
|
||||
# In order for the theme to get more support, it is recommended to keep the theme link
|
||||
- name: 主题
|
||||
url: https://github.com/everfu/hexo-theme-solitude
|
||||
# - name: 订阅
|
||||
# url: /atom.xml
|
||||
|
||||
# 404 页面(404 page)
|
||||
errorpage:
|
||||
# 图片
|
||||
# image
|
||||
img: /img/404.avif
|
||||
# 文字
|
||||
# text
|
||||
text: =awa= 页面走丢了
|
||||
# 推荐文章列表
|
||||
# Recommended article list
|
||||
recommendList: true
|
||||
|
||||
# 即刻短文
|
||||
# talk now
|
||||
# 前置要求:需配置即刻短文页面
|
||||
# Pre-requirements: talk now page needs to be configured
|
||||
says:
|
||||
enable: false
|
||||
# 主页的即刻轮播条
|
||||
# Talk carousel bar on the homepage
|
||||
home_mini: false
|
||||
# 1:张洪heo样式 / 2:Leonus样式
|
||||
# 1: Zhang Hong heo style / 2: Leonus style
|
||||
style: 1
|
||||
# 即刻短文仅展示前n条
|
||||
# Talk short text only shows the first n
|
||||
strip: 30
|
||||
|
||||
# 最近评论
|
||||
# recent comments
|
||||
# 前置要求:需配置最近评论页面和评论,否则显示为空
|
||||
# Pre-requirements: recent comments page needs to be configured and commented, otherwise it will be displayed as empty
|
||||
recent_comments:
|
||||
enable: false
|
||||
# 评论数
|
||||
# Number of comments
|
||||
limit: 50 # ⚠️waline 仅支持最大50条评论 / ⚠️waline only supports a maximum of 50 comments
|
||||
# 缓存时间
|
||||
# Cache time
|
||||
cache: 0.2 # 1 = 1天 / 1 = 1 day
|
||||
page: /recentcomments/ # 最近评论页面 / recent comments page
|
||||
img: /img/recent_c.avif # 中控台显示图片(不填不显示) / image displayed in the console
|
||||
|
||||
# 留言板
|
||||
# message board
|
||||
# 前置要求:需配置留言板页面
|
||||
# Pre-requirements: message board page needs to be configured
|
||||
envelope:
|
||||
enable: false
|
||||
line: 10 # 显示行数
|
||||
speed: 20 # 播放速度
|
||||
hover: true # 鼠标悬停暂停
|
||||
loop: true # 循环播放
|
||||
page: /message/ # 留言板页面 / message board page
|
||||
|
||||
# -------------------------
|
||||
# meeting-api,用于界面中的音乐胶囊和音乐馆页,可自定义api,不会请勿动。
|
||||
# meeting-api, used for music capsules and music halls in the interface, can customize api, do not move if you don't know.
|
||||
meting_api: "https://meting.qjqq.cn/?server=:server&type=:type&id=:id&auth=:auth&r=:r" #自定义api
|
||||
# 音乐馆页
|
||||
# music page
|
||||
music:
|
||||
enable: false
|
||||
# 音乐ID:歌单ID / 专辑ID / 歌手ID
|
||||
# Music ID: playlist ID / album ID / singer ID
|
||||
id: 1994908354
|
||||
# 播放列表的服务商。netease:网易云 / tencent:腾讯 / kugou:酷狗 / xiami:小米 / baidu:百度
|
||||
# Music service provider. netease: Netease Cloud / tencent: Tencent / kugou: Kugou / xiaomi: Xiaomi / baidu: Baidu
|
||||
server: netease
|
||||
# 播放列表的类型。song:单曲 / playlist:歌单 / album:专辑 / artist:歌手
|
||||
# Type of playlist. song: Single / playlist: Playlist / album: Album / artist: Singer
|
||||
type: playlist
|
||||
# 初始音量。0.8 = 80%,范围 0 到 1
|
||||
# Initial volume. 0.8 = 80%, range 0 to 1
|
||||
volume: 0.8
|
||||
# 是否开启互斥模式,即同时只能有一个播放器播放
|
||||
# Whether to enable mutex mode, that is, only one player can play at the same time
|
||||
mutex: true
|
||||
|
||||
# 音乐胶囊
|
||||
# capsule music
|
||||
capsule:
|
||||
enable: false
|
||||
# 歌单id / playlist id
|
||||
id: 8407304077
|
||||
# 播放列表的服务商。netease:网易云 / tencent:腾讯 / kugou:酷狗 / xiami:小米 / baidu:百度
|
||||
# Music service provider. netease: Netease Cloud / tencent: Tencent / kugou: Kugou / xiaomi: Xiaomi / baidu: Baidu
|
||||
server: netease
|
||||
# 播放列表的类型。song:单曲 / playlist:歌单 / album:专辑 / artist:歌手
|
||||
# Type of playlist. song: Single / playlist: Playlist / album: Album / artist: Singer
|
||||
type: playlist
|
||||
|
||||
# 快捷菜单你
|
||||
# quick menu
|
||||
keyboard:
|
||||
enable: false # 是否开启键盘控制 / Whether to enable keyboard control
|
||||
# 键盘控制配置
|
||||
# Keyboard control configuration
|
||||
list:
|
||||
# name: 按键名称(name)
|
||||
# key: 按键(Key)
|
||||
# func: 方法(function)
|
||||
# sco: sco内置方法(sco.'function')
|
||||
# url: 跳转链接(link)
|
||||
# ------------------
|
||||
# - name: 关闭快捷键功能
|
||||
# key: K
|
||||
# func: keyboard
|
||||
# - name: 打开中控台
|
||||
# key: A
|
||||
# sco: showConsole
|
||||
# - name: 播放/暂停音乐
|
||||
# key: M
|
||||
# sco: musicToggle
|
||||
# - name: 打开友情链接
|
||||
# key: L
|
||||
# url: "/links/"
|
||||
|
||||
# 复制
|
||||
# Copy
|
||||
copy:
|
||||
enable: true
|
||||
copyright: # Turn on Link copyright information after copying.(开启后将在默认增加版权信息)
|
||||
enable: true
|
||||
limit: 50 # word count. (字数)
|
||||
|
||||
# 懒加载
|
||||
# lazyload
|
||||
lazyload:
|
||||
enable: false
|
||||
field: site # post, site
|
||||
# 加载中显示图片
|
||||
# Loading display image
|
||||
placeholder: /img/loading.avif
|
||||
# 加载失败显示图片
|
||||
# Loading failed display image
|
||||
errorimg: /img/error_load.avif
|
||||
|
||||
# 加载动画
|
||||
# loading animation
|
||||
loading:
|
||||
# 全局加载动画
|
||||
# Global loading animation
|
||||
fullpage: false
|
||||
# 顶部加载胶囊
|
||||
# Top loading capsule
|
||||
pace: true
|
||||
|
||||
#代码高亮增强
|
||||
# code highlight
|
||||
highlight:
|
||||
enable: true
|
||||
limit: 200 # 代码行高限制 / Code line limit
|
||||
copy: true # 是否开启复制按钮 / Whether to enable the copy button
|
||||
expand: true # 是否默认展开 / Whether to expand by default
|
||||
# 代码块样式
|
||||
# Code block style
|
||||
theme: default # default: 默认 / mac : apple terminal
|
||||
# 代码配色
|
||||
# Code color
|
||||
color: default # default: 默认 / solidity: solidity / dracula: dracula
|
||||
|
||||
# 图片灯箱
|
||||
# image lightbox
|
||||
# warning:开启前下方的fancybox或mediumZoom必须打开一个
|
||||
# warning: One of the fancybox or mediumZoom below must be turned on before turning on
|
||||
lightbox: false
|
||||
# fancybox
|
||||
# https://fancyapps.com/fancybox/
|
||||
fancybox: false
|
||||
# mediumZoom
|
||||
mediumZoom: false
|
||||
|
||||
# mermaid tags plugin
|
||||
# https://mermaid.js.org/
|
||||
mermaid: false
|
||||
|
||||
# Open Graph
|
||||
# https://ogp.me/
|
||||
# https://developers.facebook.com/docs/sharing/webmasters/
|
||||
OpenGraph:
|
||||
enable: false
|
||||
options:
|
||||
# twitter_card:
|
||||
# twitter_image:
|
||||
# twitter_id:
|
||||
# twitter_site:
|
||||
# google_plus:
|
||||
# fb_admins:
|
||||
# fb_app_id:
|
||||
|
||||
# 字数统计
|
||||
# word count
|
||||
# warning:开启前需要安装字数统计插件
|
||||
# warning: You need to install the word count plugin before turning it on
|
||||
wordcount: false
|
||||
|
||||
# 访问统计
|
||||
# access statistics
|
||||
busuanzi: false
|
||||
busuanzi_use: 0 # 0: 原版 / 1: 青秸(other: 其它自定義的busuanzi平台)
|
||||
|
||||
# 搜索
|
||||
# search
|
||||
# warning:开启前需要安装搜索插件
|
||||
# warning: You need to install the search plugin before turning it on
|
||||
search:
|
||||
enable: false
|
||||
# algolia, local
|
||||
type: local
|
||||
# 推荐标签
|
||||
# Recommended tags
|
||||
tags:
|
||||
# - Solitude
|
||||
# - Hexo
|
||||
algolia:
|
||||
# hits:
|
||||
# per_page: 6
|
||||
local:
|
||||
preload: false
|
||||
CDN:
|
||||
|
||||
# Post Chat AI
|
||||
# 后台地址:https://ai.tianli0.top/?InviteID=OZ3Z0V2R
|
||||
tianli_talk:
|
||||
enable: false
|
||||
title: 智能客服与搜索
|
||||
key: # https://ai.tianli0.top/?InviteID=OZ3Z0V2R
|
||||
# 默认值
|
||||
# backgroundColor: "var(--efu-main)",
|
||||
# bottom: "60px",
|
||||
option: #https://ai.tianli0.top/codeMaker.html
|
||||
# defaultInput: false
|
||||
# upLoadWeb: true
|
||||
# userTitle: Efu Chat
|
||||
# userDesc: 你好,我是 Efu 的智能客服,有什么可以帮助你的?
|
||||
# showInviteLink: 'https://ai.tianli0.top/?InviteID=OZ3Z0V2R'
|
||||
# blackDom:
|
||||
# - .aplayer
|
||||
# 文章摘要AI
|
||||
# post abstract AI
|
||||
post_ai:
|
||||
enable: false
|
||||
# 右侧显示的模型名称
|
||||
# Model name displayed on the right
|
||||
modelName: GPT 4
|
||||
# key
|
||||
# 具体获取方法见文档
|
||||
# Specific acquisition method, see the document
|
||||
key:
|
||||
# 自介
|
||||
# talk
|
||||
talk: # 我是 Efu 开发的摘要生成助理EfuGPT,EfuGPT在静态部署时进行摘要的撰写,并且在访客访问时通过EfuCorrection转译后的文本摘要实现工具。我在这里只负责已经生成的摘要显示,你无法与我直接沟通,但我可以回答一些预设的问题。
|
||||
# 随机文章按钮
|
||||
# Random post button
|
||||
randomPost: false
|
||||
# 举报链接,不填不显示
|
||||
# Report link, do not fill in and do not display
|
||||
report: https://efu.me/
|
||||
# 底部提示
|
||||
# Bottom tip
|
||||
tips: # 此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结
|
||||
|
||||
# latex 公式支持
|
||||
# latex formula support
|
||||
# docs: https://solitude.js.org/configuration/extra#数学公式
|
||||
katex:
|
||||
enable: false
|
||||
per_page: false # 是否在每页都加载 / Whether to load on each page
|
||||
copytex: false # 是否开启复制公式 / Whether to enable copy formula
|
||||
|
||||
# 评论
|
||||
# comment
|
||||
# getting start: https://solitude.js.org/comments/comment
|
||||
comment:
|
||||
use: # waline, twikoo, valine, artalk, giscus
|
||||
commentBarrage: false # 热评开关 / Hot comment switch
|
||||
lazyload: false # 懒加载
|
||||
count: false # 评论数展示
|
||||
pv: false # 是否使用評論統計頁面訪問
|
||||
avatar: https://cravatar.cn # Gravatar link
|
||||
|
||||
# twikoo 配置信息
|
||||
# twikoo settings
|
||||
twikoo: # https://twikoo.js.org/
|
||||
envId: # url: https://twikoo.sondy.top/
|
||||
region: # 环境地域,默认为 ap-shanghai,腾讯云环境填 ap-shanghai 或 ap-guangzhou;Vercel 环境不填
|
||||
style: true # Use custom styles when turned on / 开启后使用自定义样式
|
||||
accessToken: # AccessToken
|
||||
option: # twikoo option
|
||||
|
||||
# waline 配置信息
|
||||
# waline settings
|
||||
waline: # https://waline.js.org/
|
||||
envId: # url: https://waline.wzsco.top
|
||||
pageview: false # 是否开启页面访问量统计 / Whether to enable page access statistics
|
||||
option: # waline配置项 / waline configuration item
|
||||
|
||||
# valine 配置信息
|
||||
# valine settings
|
||||
valine:
|
||||
appId: # leancloud application app id
|
||||
appKey: # leancloud application app key
|
||||
serverURLs: # This configuration is suitable for domestic custom domain name users, overseas version will be automatically detected (no need to manually fill in)
|
||||
avatar: # https://valine.js.org/avatar.html
|
||||
visitor: false
|
||||
style: true # Use custom styles when turned on / 开启后使用自定义样式
|
||||
option: # options list
|
||||
|
||||
# artalk 配置信息
|
||||
# artalk settings
|
||||
artalk:
|
||||
server: # server url / 后端地址
|
||||
site: # site name / 站点名
|
||||
option: # options
|
||||
|
||||
# gitalk 配置信息
|
||||
# gitalk settings
|
||||
giscus:
|
||||
repo: # GitHub 仓库名称 / GitHub repository name
|
||||
repo_id: # GitHub 仓库ID / GitHub repository ID
|
||||
category_id: # GitHub 仓库分类ID / GitHub repository category ID
|
||||
theme:
|
||||
light: light
|
||||
dark: dark
|
||||
option:
|
||||
|
||||
# 中控台扩展 : 最新评论 + 标签 + 文章
|
||||
console_plus: false
|
||||
|
||||
# 站点验证
|
||||
# Site verification
|
||||
# 仅需要填写验证代码即可,譬如:codeva-KReTIJu5us
|
||||
# Only need to fill in the verification code, such as: codeva-KReTIJu5us
|
||||
verify_site:
|
||||
# - name: google-site-verification
|
||||
# content: xxxxxx
|
||||
# - name: baidu-site-verification
|
||||
# content: xxxxxxx
|
||||
|
||||
# CSS 前缀
|
||||
# CSS prefix
|
||||
# 有些 CSS 并不是所有浏览器都支持,需要增加对应的前缀才会生效
|
||||
# Some CSS is not supported by all browsers, and you need to add the corresponding prefix to take effect
|
||||
# 开启 css_prefix 后,会自动为一些 CSS 增加前缀。(会增加 20%的体积)
|
||||
# After opening css_prefix, some CSS will be automatically prefixed. (Will increase 20% of the volume)
|
||||
css_prefix: false
|
||||
|
||||
# Font 字体
|
||||
# Font
|
||||
font:
|
||||
font-size: 16px
|
||||
code-font-size: 16px
|
||||
font-family: "PingFang SC,Hiragino Sans GB,Microsoft YaHei"
|
||||
code-font-family: "monospace, monospace"
|
||||
|
||||
# 插入代码到头部 </head> 之前 和 底部 </body> 之前
|
||||
# Insert code before </head> and before </body>
|
||||
# 插入额外代码 如:统计,广告等
|
||||
# Insert additional code such as: statistics, advertising, etc.
|
||||
extends:
|
||||
head: # 在head中插入 / Insert in head
|
||||
# - <script src="https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js"></script>
|
||||
body: # 在body中插入 / Insert in body
|
||||
|
||||
# PWA
|
||||
# https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps
|
||||
# docs: https://solitude.js.org/configuration/extra#pwa
|
||||
pwa:
|
||||
enable: false
|
||||
manifest: /manifest.json # manifest.json 文件路径
|
||||
theme_color: "#006a73" # 主题颜色
|
||||
mask_icon: /img/pwa/favicon.ico # 遮罩图标
|
||||
apple_touch_icon: /img/pwa/favicon.ico # 苹果触摸图标
|
||||
bookmark_icon: /img/pwa/favicon.ico # 书签图标
|
||||
favicon_32_32: /img/pwa/favicon_32.ico # 32x32图标
|
||||
favicon_16_16: /img/pwa/favicon_16.ico # 16x16图标
|
||||
|
||||
# 谷歌广告 (Google Adsense)
|
||||
google_adsense:
|
||||
enable: false
|
||||
auto_ads: false # 自动广告关闭后则为手动广告 / After auto ads are turned off, it is manual ads
|
||||
enable_page_level_ads: true # 页面级广告 / Page-level ads
|
||||
aside_card: true # 侧边栏卡片广告 / Sidebar card ads(开启后自行到需要添加的页面使用:ads)
|
||||
post_card: true # 文章卡片广告 / Post card ads(首页文章列表)
|
||||
post_content: true # 文章内容广告 / Post content ads(文章内容底部广告)
|
||||
js: https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js # 谷歌广告js / Google Adsense js
|
||||
# client id
|
||||
# 无论是否开启自动广告,都需要填写 client id
|
||||
# Whether to enable auto ads or not, you need to fill in the client id
|
||||
client: # ca-pub-XXXXXXXXXXXXXX
|
||||
# slot id
|
||||
# 只有关闭自动广告时才需要填写 slot id,可以在谷歌广告后台 按广告单元中创建广告位后获取
|
||||
# Only when auto ads are turned off, you need to fill in the slot id, which can be obtained after creating an ad space in the Google Adsense background according to the ad unit
|
||||
slot: # 4236388782
|
||||
|
||||
# 自定义右键菜单 (Custom Right Menu)
|
||||
right_menu:
|
||||
enable: false
|
||||
commentBarrage: false # 是否显示热评开关 / Whether to display the hot comment switch.
|
||||
# 翻译功能(仅支持简繁)
|
||||
# Translation function (Simplified and Traditional Chinese only)
|
||||
translate:
|
||||
enable: false
|
||||
defaultEncoding: 2 # 1: 默认繁体 2: 默认简体
|
||||
translateDelay: 0 # 首次加载翻译迟疑时间
|
||||
# 自定义菜单项列表
|
||||
# Customize the list of menu items.
|
||||
custom_list:
|
||||
# - name: 随机短文
|
||||
# click: toRandomPost()
|
||||
# id: menu-randomPost
|
||||
# class:
|
||||
# icon: st-signal-tower-fill
|
||||
# - name: 全部分类
|
||||
# click: pjax.loadUrl('/categories/') # 外链用 window.open,pjax 无法请求跨域内容
|
||||
# id:
|
||||
# class:
|
||||
# icon: st-checkbox-multiple-blank-fill
|
||||
# - name: 全部标签
|
||||
# click: pjax.loadUrl('/tags/')
|
||||
# id:
|
||||
# class:
|
||||
# icon: st-price-tag-fill
|
||||
# - name: 赞助主题
|
||||
# click: window.open('https://afdian.net/a/efu0u0/', '_blank')
|
||||
# id:
|
||||
# class:
|
||||
# icon: st-afdian-line
|
||||
|
||||
# 哀悼模式,网页黑白
|
||||
# Mourning mode, web page black and white
|
||||
memorial:
|
||||
enable: false
|
||||
# 日期, (M-D)
|
||||
# Date, (M-D)
|
||||
# eg: 7-8, 9-18, 12-13 ...
|
||||
date:
|
||||
- "7-8" #七八卢沟桥事变
|
||||
- "9-18" #九一八事变/建军节
|
||||
- "12-13" #南京国家公祭日
|
||||
|
||||
# CDN
|
||||
# Don't modify the following settings unless you know how they work
|
||||
# 非必要请不要修改
|
||||
CDN:
|
||||
# The CDN provider of internal scripts (主题内 js 的 cdn 配置)
|
||||
# option: local/jsdelivr/unpkg/cdnjs/custom
|
||||
# Dev version can only choose. ( dev版本只能为 local )
|
||||
internal: local
|
||||
# The CDN provider of third party scripts (第三方 js 的 cdn 配置)
|
||||
# option: jsdelivr/unpkg/cdnjs/custom
|
||||
third_party: cdnjs
|
||||
|
||||
# Add version number to url, true or false
|
||||
version: true
|
||||
|
||||
# Custom format
|
||||
# For example: //open.lightxi.com/cdnjs/ajax/libs/${cdnjs_name}/${version}/${min_cdnjs_file}
|
||||
custom_format: //open.lightxi.com/cdnjs/ajax/libs/${cdnjs_name}/${version}/${min_cdnjs_file}
|
||||
|
||||
option:
|
||||
solitude_css: https://cdn2.codesign.qq.com/icons/7pOrz0WXB5ZWJPX/latest/iconfont.css
|
||||
# algolia_search:
|
||||
# instantsearch:
|
||||
# pjax:
|
||||
# twikoo:
|
||||
# waline_js:
|
||||
# waline_css:
|
||||
# katex:
|
||||
# katex_copytex:
|
||||
# lazyload:
|
||||
# aplayer_css:
|
||||
# aplayer_js:
|
||||
# meting_js:
|
||||
# pace_js:
|
||||
# swiper_css:
|
||||
# swiper_js:
|
||||
# busuanzi_js:
|
||||
# snackbar_js:
|
||||
@@ -0,0 +1,227 @@
|
||||
more: More
|
||||
star: Behold, those who found delight in this piece also perused
|
||||
random: Random
|
||||
upload: 'datetime: '
|
||||
totalk: You don't need to delete blank lines, just type in your comments.
|
||||
loading: Loading...
|
||||
day: ' days'
|
||||
|
||||
theme:
|
||||
dark: Dark
|
||||
light: Light
|
||||
|
||||
copy:
|
||||
success: Copied
|
||||
error: Copy failed
|
||||
|
||||
copy_copyright:
|
||||
author: Author
|
||||
link: Link
|
||||
source: Source
|
||||
info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
time:
|
||||
day: " days ago"
|
||||
hour: " hours ago"
|
||||
just: "just"
|
||||
min: " minutes ago"
|
||||
month: " months ago"
|
||||
|
||||
page:
|
||||
tag: Tags
|
||||
category: Categories
|
||||
tags: All tags
|
||||
categories: All categories
|
||||
archives: Archives
|
||||
404: Page not found
|
||||
|
||||
home:
|
||||
home: Home
|
||||
sticky: Sticky
|
||||
new: New
|
||||
read: Unread
|
||||
recommendmore: More
|
||||
archives: All articles
|
||||
|
||||
post:
|
||||
reprint: Reprint
|
||||
original: Original
|
||||
cc: This article is a ${cc} article, pay attention to the copyright.
|
||||
posted: Posted on
|
||||
updated: Last updated on
|
||||
wordcount: Word count
|
||||
minread: Reading time
|
||||
ip: The author's IP belongs to
|
||||
pv: PV
|
||||
comment: Comments
|
||||
copyright:
|
||||
reprint: This article is a reproduction or translation, and the copyright belongs to the original author. Please contact the original author for permission to republish this article.
|
||||
original: This piece of writing is an original article, utilizing the
|
||||
original_end: Agreement. For complete reproduction, please acknowledge the source as Courtesy of
|
||||
share:
|
||||
qq: Share to QQ
|
||||
weibo: Share to Weibo
|
||||
telegram: Share to Telegram
|
||||
twitter: Share to Twitter
|
||||
linkedin: Share to LinkedIn
|
||||
facebook: Share to Facebook
|
||||
link: Share to Link
|
||||
qrcode: Share to QR code
|
||||
whatsapp: Share to WhatsApp
|
||||
ai:
|
||||
title: Article Summary
|
||||
tip: Complaints
|
||||
nav:
|
||||
next: Next
|
||||
prev: Previous
|
||||
|
||||
|
||||
nav:
|
||||
site_name_title: Back to home
|
||||
backtop: Back to top
|
||||
travellings: Traveling - Friends Link
|
||||
search: Search
|
||||
randompost: Random post
|
||||
console: Console
|
||||
|
||||
award:
|
||||
thanks: Thanks
|
||||
tipping: Sponsor
|
||||
title: List of appreciation
|
||||
|
||||
search:
|
||||
empty: No results found
|
||||
hit: Found ${query} results for you
|
||||
placeholder: Enter keywords to quickly search
|
||||
count: Total <b>${count}</b> results.
|
||||
|
||||
head:
|
||||
noscript: Please enable JavaScript to view the site
|
||||
|
||||
aside:
|
||||
postcount: 'Posts :'
|
||||
pv: 'PV :'
|
||||
uv: 'UV :'
|
||||
runtime: 'Runtime :'
|
||||
updatetime: 'Last update :'
|
||||
wordcount: 'Word count :'
|
||||
toc: Table of contents
|
||||
tagmore: View all
|
||||
avatar: Avatar
|
||||
hello: Long time no see,
|
||||
back: Welcome back again,
|
||||
sticker: Mood sticker
|
||||
newpost: New posts
|
||||
newcomment: New comments
|
||||
card:
|
||||
posts: 'Posts:'
|
||||
tags: 'Tags:'
|
||||
categories: 'Categories:'
|
||||
|
||||
console:
|
||||
comment_tip: Interaction
|
||||
comment_title: Latest comments
|
||||
tag_tip: Tags
|
||||
tag_title: Find interesting areas
|
||||
switch_darkmode: Day and night switching
|
||||
switch_hideAside: Sidebar display control
|
||||
switch_keyboard: Keyboard operation
|
||||
switch_music: Music switch
|
||||
archive_unit: Posts
|
||||
recent_comment_more: Recent comments
|
||||
newest_comment:
|
||||
image: Image
|
||||
link: Link
|
||||
code: Code
|
||||
emoji: Emoji
|
||||
|
||||
sidebar:
|
||||
function: Function
|
||||
darkmode: Display mode
|
||||
|
||||
footer:
|
||||
description: Article from ${title}
|
||||
learnmore: Learn more
|
||||
randomlink: Links
|
||||
rss: Subscribe
|
||||
theme: Theme
|
||||
|
||||
cookies:
|
||||
title: Agreement reminder assistant
|
||||
tip: Check out the efforts we make to protect your privacy
|
||||
privacy: How this site protects your privacy
|
||||
|
||||
music:
|
||||
hit: Paused
|
||||
|
||||
404:
|
||||
button: Back to home
|
||||
|
||||
link:
|
||||
banner:
|
||||
toComment: Application link
|
||||
random: Random Visit
|
||||
random: 'Click the button to visit a random link. The safety and availability of the destination website are not guaranteed. The random link for this visit is: ⌈ ${name} ⌋ '
|
||||
to: To
|
||||
|
||||
keyboard:
|
||||
title: Blog shortcuts
|
||||
|
||||
newest_comment:
|
||||
error: Unable to get a comment, please confirm that the relevant configuration is correct.
|
||||
zero: No comments.
|
||||
|
||||
comment:
|
||||
title: ' Comment'
|
||||
|
||||
commentBarrage:
|
||||
title: Hot
|
||||
|
||||
f12: Developer mode is turned on, please follow the GPL.
|
||||
|
||||
right_menu:
|
||||
copy: Copy
|
||||
paste: Paste
|
||||
comment: ToTalk
|
||||
new: Open
|
||||
link: Copy
|
||||
img: Copy
|
||||
downloadImg: Download
|
||||
search: Search
|
||||
dark: Light
|
||||
light: Dark
|
||||
chs_to_cht: 轉為繁體
|
||||
cht_to_chs: 转为简体
|
||||
img_error: This image cannot be copied or downloaded.
|
||||
barrage:
|
||||
open: OpenBarrage
|
||||
close: CloseBarrage
|
||||
music:
|
||||
start: Play
|
||||
stop: Pause
|
||||
back: Back
|
||||
forward: Forward
|
||||
copyMusicName: CopyName
|
||||
|
||||
pagination:
|
||||
prev: Prev
|
||||
next: Next
|
||||
to: To page
|
||||
|
||||
about:
|
||||
other:
|
||||
oneself:
|
||||
map_title: I live in
|
||||
info_title1: Born
|
||||
info_title2: Current occupation
|
||||
tj:
|
||||
tip: Data
|
||||
title: Access statistics
|
||||
post_tip: 'Stats from:'
|
||||
personalities:
|
||||
tip1: At
|
||||
tip2: 'Learn more:'
|
||||
|
||||
message:
|
||||
close: Hide message
|
||||
open: Show message
|
||||
@@ -0,0 +1,226 @@
|
||||
more: More
|
||||
star: Behold, those who found delight in this piece also perused
|
||||
random: Random
|
||||
upload: 'datetime: '
|
||||
totalk: You don't need to delete blank lines, just type in your comments.
|
||||
loading: Loading...
|
||||
day: ' days'
|
||||
|
||||
theme:
|
||||
dark: Dark
|
||||
light: Light
|
||||
|
||||
copy:
|
||||
success: Copied
|
||||
error: Copy failed
|
||||
|
||||
copy_copyright:
|
||||
author: Author
|
||||
link: Link
|
||||
source: Source
|
||||
info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
time:
|
||||
day: " days ago"
|
||||
hour: " hours ago"
|
||||
just: "just"
|
||||
min: " minutes ago"
|
||||
month: " months ago"
|
||||
|
||||
page:
|
||||
tag: Tags
|
||||
category: Categories
|
||||
tags: All tags
|
||||
categories: All categories
|
||||
archives: Archives
|
||||
404: Page not found
|
||||
|
||||
home:
|
||||
home: Home
|
||||
sticky: Sticky
|
||||
new: New
|
||||
read: Unread
|
||||
recommendmore: More
|
||||
archives: All articles
|
||||
|
||||
post:
|
||||
reprint: Reprint
|
||||
original: Original
|
||||
cc: This article is a ${cc} article, pay attention to the copyright.
|
||||
posted: Posted on
|
||||
updated: Last updated on
|
||||
wordcount: Word count
|
||||
minread: Reading time
|
||||
ip: The author's IP belongs to
|
||||
pv: PV
|
||||
comment: Comments
|
||||
copyright:
|
||||
reprint: This article is a reproduction or translation, and the copyright belongs to the original author. Please contact the original author for permission to republish this article.
|
||||
original: This piece of writing is an original article, utilizing the
|
||||
original_end: Agreement. For complete reproduction, please acknowledge the source as Courtesy of
|
||||
share:
|
||||
qq: Share to QQ
|
||||
weibo: Share to Weibo
|
||||
telegram: Share to Telegram
|
||||
twitter: Share to Twitter
|
||||
linkedin: Share to LinkedIn
|
||||
facebook: Share to Facebook
|
||||
link: Share to Link
|
||||
qrcode: Share to QR code
|
||||
whatsapp: Share to WhatsApp
|
||||
ai:
|
||||
title: Article Summary
|
||||
tip: Complaints
|
||||
nav:
|
||||
next: Next
|
||||
prev: Previous
|
||||
|
||||
nav:
|
||||
site_name_title: Back to home
|
||||
backtop: Back to top
|
||||
travellings: Traveling - Friends Link
|
||||
search: Search
|
||||
randompost: Random post
|
||||
console: Console
|
||||
|
||||
award:
|
||||
thanks: Thanks
|
||||
tipping: Sponsor
|
||||
title: List of appreciation
|
||||
|
||||
search:
|
||||
empty: No results found
|
||||
hit: Found ${query} results for you
|
||||
placeholder: Enter keywords to quickly search
|
||||
count: Total <b>${count}</b> results.
|
||||
|
||||
head:
|
||||
noscript: Please enable JavaScript to view the site
|
||||
|
||||
aside:
|
||||
postcount: 'Posts :'
|
||||
pv: 'PV :'
|
||||
uv: 'UV :'
|
||||
runtime: 'Runtime :'
|
||||
updatetime: 'Last update :'
|
||||
wordcount: 'Word count :'
|
||||
toc: Table of contents
|
||||
tagmore: View all
|
||||
avatar: Avatar
|
||||
hello: Long time no see,
|
||||
back: Welcome back again,
|
||||
sticker: Mood sticker
|
||||
newpost: New posts
|
||||
newcomment: New comments
|
||||
card:
|
||||
posts: 'Posts:'
|
||||
tags: 'Tags:'
|
||||
categories: 'Categories:'
|
||||
|
||||
console:
|
||||
comment_tip: Interaction
|
||||
comment_title: Latest comments
|
||||
tag_tip: Tags
|
||||
tag_title: Find interesting areas
|
||||
switch_darkmode: Day and night switching
|
||||
switch_hideAside: Sidebar display control
|
||||
switch_keyboard: Keyboard operation
|
||||
switch_music: Music switch
|
||||
archive_unit: Posts
|
||||
recent_comment_more: Recent comments
|
||||
newest_comment:
|
||||
image: Image
|
||||
link: Link
|
||||
code: Code
|
||||
emoji: Emoji
|
||||
|
||||
sidebar:
|
||||
function: Function
|
||||
darkmode: Display mode
|
||||
|
||||
footer:
|
||||
description: Article from ${title}
|
||||
learnmore: Learn more
|
||||
randomlink: Links
|
||||
rss: Subscribe
|
||||
theme: Theme
|
||||
|
||||
cookies:
|
||||
title: Agreement reminder assistant
|
||||
tip: Check out the efforts we make to protect your privacy
|
||||
privacy: How this site protects your privacy
|
||||
|
||||
music:
|
||||
hit: Paused
|
||||
|
||||
404:
|
||||
button: Back to home
|
||||
|
||||
link:
|
||||
banner:
|
||||
toComment: Application link
|
||||
random: Random Visit
|
||||
random: 'Click the button to visit a random link. The safety and availability of the destination website are not guaranteed. The random link for this visit is: ⌈ ${name} ⌋ '
|
||||
to: To
|
||||
|
||||
keyboard:
|
||||
title: Blog shortcuts
|
||||
|
||||
newest_comment:
|
||||
error: Unable to get a comment, please confirm that the relevant configuration is correct.
|
||||
zero: No comments.
|
||||
|
||||
comment:
|
||||
title: ' Comment'
|
||||
|
||||
commentBarrage:
|
||||
title: Hot
|
||||
|
||||
f12: Developer mode is turned on, please follow the GPL.
|
||||
|
||||
right_menu:
|
||||
copy: Copy
|
||||
paste: Paste
|
||||
comment: ToTalk
|
||||
new: Open
|
||||
link: Copy
|
||||
img: Copy
|
||||
downloadImg: Download
|
||||
search: Search
|
||||
dark: Light
|
||||
light: Dark
|
||||
chs_to_cht: 轉為繁體
|
||||
cht_to_chs: 转为简体
|
||||
img_error: This image cannot be copied or downloaded.
|
||||
barrage:
|
||||
open: OpenBarrage
|
||||
close: CloseBarrage
|
||||
music:
|
||||
start: Play
|
||||
stop: Pause
|
||||
back: Back
|
||||
forward: Forward
|
||||
copyMusicName: CopyName
|
||||
|
||||
pagination:
|
||||
prev: Prev
|
||||
next: Next
|
||||
to: To page
|
||||
|
||||
about:
|
||||
other:
|
||||
oneself:
|
||||
map_title: I live in
|
||||
info_title1: Born
|
||||
info_title2: Current occupation
|
||||
tj:
|
||||
tip: Data
|
||||
title: Access statistics
|
||||
post_tip: 'Stats from:'
|
||||
personalities:
|
||||
tip1: At
|
||||
tip2: 'Learn more:'
|
||||
|
||||
message:
|
||||
close: Hide message
|
||||
open: Show message
|
||||
@@ -0,0 +1,228 @@
|
||||
more: 更多
|
||||
star: 喜欢这篇的人也看了
|
||||
random: 随便逛逛
|
||||
upload: 发布时间:
|
||||
totalk: 无需删除空行,直接输入评论即可
|
||||
loading: 加载中...
|
||||
day: ' 天'
|
||||
|
||||
# Language: 简体中文
|
||||
theme:
|
||||
dark: 已切换至深色模式
|
||||
light: 已切换至浅色模式
|
||||
|
||||
copy:
|
||||
success: 复制成功
|
||||
error: 复制失败
|
||||
|
||||
copy_copyright:
|
||||
author: 作者
|
||||
link: 链接
|
||||
source: 来源
|
||||
info: 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。
|
||||
|
||||
time:
|
||||
day: "天前"
|
||||
hour: "小时前"
|
||||
just: "刚刚"
|
||||
min: "分钟前"
|
||||
month: "个月前"
|
||||
|
||||
page:
|
||||
tag: 标签
|
||||
category: 分类
|
||||
tags: 全部标签
|
||||
categories: 全部分类
|
||||
archives: 文章
|
||||
404: 页面没有找到
|
||||
|
||||
nav:
|
||||
site_name_title: 返回博客主页
|
||||
backtop: 返回顶部
|
||||
travellings: 开往-友链接力
|
||||
search: 搜索
|
||||
randompost: 随机一篇文章
|
||||
console: 中控台
|
||||
|
||||
home:
|
||||
home: 首页
|
||||
sticky: 置顶
|
||||
new: 最新
|
||||
read: 未读
|
||||
recommend: 荐
|
||||
recommendmore: 更多推荐
|
||||
archives: 全部文章
|
||||
|
||||
post:
|
||||
reprint: 转载或翻译
|
||||
original: 原创
|
||||
cc: 该文章为${cc}文章,注意版权协议
|
||||
posted: 发布于
|
||||
updated: 最后更新于
|
||||
wordcount: 文章字数
|
||||
minread: 阅读耗时
|
||||
ip: 作者IP归属地为
|
||||
pv: 文章热度
|
||||
comment: 评论数
|
||||
copyright:
|
||||
reprint: 本文是转载或翻译文章,版权归原作者所有。转载本文请联系原作者。
|
||||
original: 本文是原创文章,采用
|
||||
original_end: 协议,完整转载请注明来自
|
||||
share:
|
||||
qq: 分享到QQ
|
||||
weibo: 分享到微博
|
||||
telegram: 分享到Telegram
|
||||
twitter: 分享到Twitter
|
||||
linkedin: 分享到LinkedIn
|
||||
facebook: 分享到Facebook
|
||||
link: 复制文章链接
|
||||
qrcode: 使用手机扫码阅读这篇文章
|
||||
whatsapp: 分享到WhatsApp
|
||||
ai:
|
||||
title: 文章摘要
|
||||
tip: 投诉
|
||||
nav:
|
||||
next: 下一篇
|
||||
prev: 上一篇
|
||||
|
||||
award:
|
||||
thanks: 致谢
|
||||
tipping: 赞赏作者
|
||||
title: 赞赏名单
|
||||
|
||||
search:
|
||||
empty: 找不到你查询的内容:${query}
|
||||
hit: 找到 ${hits} 条结果,用时 ${time} 毫秒
|
||||
placeholder: 输入关键词快速查找
|
||||
count: 共 <b>${count}</b> 条结果。
|
||||
|
||||
head:
|
||||
noscript: 开启JavaScript才能访问本站哦~
|
||||
|
||||
aside:
|
||||
postcount: '文章总数 :'
|
||||
pv: '总访问数 :'
|
||||
uv: '总访客数 :'
|
||||
runtime: '建站天数 :'
|
||||
updatetime: '最后更新 :'
|
||||
wordcount: '全站字数 :'
|
||||
toc: 文章目录
|
||||
tagmore: 查看全部
|
||||
avatar: 头像
|
||||
hello: 好久不见,
|
||||
back: 欢迎再次回来,
|
||||
sticker: 心情贴纸
|
||||
newpost: 最近发布
|
||||
newcomment: 最新评论
|
||||
card:
|
||||
posts: '累计文章数:'
|
||||
tags: '标签总数:'
|
||||
categories: '分类总数:'
|
||||
|
||||
console:
|
||||
comment_tip: 互动
|
||||
comment_title: 最新评论
|
||||
tag_tip: 标签
|
||||
tag_title: 寻找感兴趣的领域
|
||||
switch_darkmode: 昼夜切换
|
||||
switch_hideAside: 边栏显示控制
|
||||
switch_keyboard: 键盘快捷键
|
||||
switch_music: 音乐开关
|
||||
archive_unit: 篇
|
||||
recent_comment_more: 最近评论
|
||||
newest_comment:
|
||||
image: 图片
|
||||
link: 链接
|
||||
code: 代码
|
||||
emoji: 表情
|
||||
|
||||
sidebar:
|
||||
function: 功能
|
||||
darkmode: 显示模式
|
||||
|
||||
footer:
|
||||
description: 来自${title}的文章
|
||||
learnmore: 了解更多
|
||||
randomlink: 友链
|
||||
rss: 订阅
|
||||
theme: 主题
|
||||
|
||||
cookies:
|
||||
title: 协议提醒助手
|
||||
tip: 查看本站为你的个人隐私做出的努力
|
||||
privacy: 本站如何保护你的隐私
|
||||
|
||||
music:
|
||||
hit: 音乐已暂停
|
||||
|
||||
404:
|
||||
button: 返回首页
|
||||
|
||||
link:
|
||||
banner:
|
||||
toComment: 申请友链
|
||||
random: 随机访问
|
||||
random: 点击前往按钮进入随机一个友链,不保证跳转网站的安全性和可用性。本次随机到的是本站友链:⌈ ${name} ⌋
|
||||
to: 前往
|
||||
|
||||
keyboard:
|
||||
title: 博客快捷键
|
||||
|
||||
newest_comment:
|
||||
error: 无法获取评论,请确认相关配置是否正确。
|
||||
zero: 没有评论
|
||||
|
||||
comment:
|
||||
title: 评论
|
||||
|
||||
commentBarrage:
|
||||
title: 热评
|
||||
|
||||
f12: 开发者模式已打开,请遵循GPL协议。
|
||||
|
||||
right_menu:
|
||||
copy: 复制选中文本
|
||||
paste: 粘贴文本
|
||||
comment: 引用到评论
|
||||
new: 新窗口打开
|
||||
link: 复制链接地址
|
||||
img: 复制此图片
|
||||
downloadImg: 下载此图片
|
||||
search: 站内搜索
|
||||
dark: 浅色模式
|
||||
light: 深色模式
|
||||
chs_to_cht: 轉為繁體
|
||||
cht_to_chs: 转为简体
|
||||
img_error: 此图片无法复制与下载
|
||||
barrage:
|
||||
open: 显示热评
|
||||
close: 关闭热评
|
||||
music:
|
||||
start: 播放音乐
|
||||
stop: 暂停音乐
|
||||
back: 切换到上一首
|
||||
forward: 切换到下一首
|
||||
copyMusicName: 复制歌名
|
||||
|
||||
pagination:
|
||||
prev: 上一页
|
||||
next: 下一页
|
||||
to: 跳转到指定页面
|
||||
|
||||
about:
|
||||
other:
|
||||
oneself:
|
||||
map_title: 我现在住在
|
||||
info_title1: 生于
|
||||
info_title2: 现在职业
|
||||
tj:
|
||||
tip: 数据
|
||||
title: 访问统计
|
||||
post_tip: 统计信息来自
|
||||
personalities:
|
||||
tip1: 在
|
||||
tip2: 了解更多关于
|
||||
|
||||
message:
|
||||
close: 隐藏弹幕
|
||||
open: 显示弹幕
|
||||
@@ -0,0 +1,226 @@
|
||||
more: 更多
|
||||
star: 喜歡這篇的人也看了
|
||||
random: 随便逛逛
|
||||
upload: 發佈時間:
|
||||
totalk: 無需刪除空行,直接輸入評論即可
|
||||
loading: 加載中...
|
||||
day: ' 天'
|
||||
|
||||
# Language: 繁體中文 (台灣)
|
||||
theme:
|
||||
dark: 已切換至深色模式
|
||||
light: 已切換至淺色模式
|
||||
|
||||
copy:
|
||||
success: 複製成功
|
||||
error: 複製失敗
|
||||
|
||||
copy_copyright:
|
||||
author: 作者
|
||||
link: 連結
|
||||
source: 來源
|
||||
info: 著作權歸作者所有。 商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
|
||||
|
||||
time:
|
||||
day: "天前"
|
||||
hour: "小時前"
|
||||
just: "剛剛"
|
||||
min: "分鐘前"
|
||||
month: "個月前"
|
||||
|
||||
page:
|
||||
tag: 標籤
|
||||
category: 分類
|
||||
tags: 全部標籤
|
||||
categories: 全部分類
|
||||
archives: 文章
|
||||
404: 頁面沒有找到
|
||||
|
||||
nav:
|
||||
site_name_title: 返回博客主頁
|
||||
backtop: 返回頂部
|
||||
travellings: 開往-友鏈接力
|
||||
search: 搜索
|
||||
randompost: 隨機一篇文章
|
||||
console: 中控台
|
||||
|
||||
home:
|
||||
home: 首頁
|
||||
sticky: 置頂
|
||||
new: 最新
|
||||
read: 未讀
|
||||
recommend: 荐
|
||||
recommendmore: 更多推薦
|
||||
archives: 全部文章
|
||||
|
||||
post:
|
||||
reprint: 轉載或翻譯
|
||||
original: 原創
|
||||
cc: 該文章為${cc}文章,注意版權協議
|
||||
posted: 發布於
|
||||
updated: 最後更新於
|
||||
wordcount: 文章字數
|
||||
minread: 閱讀耗時
|
||||
ip: 作者IP歸屬地為
|
||||
pv: 文章熱度
|
||||
comment: 評論數
|
||||
copyright:
|
||||
reprint: 本文是转载或翻译文章,版权归原作者所有。转载本文请联系原作者。
|
||||
original: 本文是原创文章,采用
|
||||
original_end: 协议,完整转载请注明来自
|
||||
share:
|
||||
qq: 分享到QQ
|
||||
weibo: 分享到微博
|
||||
telegram: 分享到Telegram
|
||||
twitter: 分享到Twitter
|
||||
linkedin: 分享到LinkedIn
|
||||
facebook: 分享到Facebook
|
||||
link: 复制文章链接
|
||||
qrcode: 使用手机扫码阅读这篇文章
|
||||
whatsapp: 分享到WhatsApp
|
||||
ai:
|
||||
title: 文章摘要
|
||||
tip: 投訴
|
||||
nav:
|
||||
next: 下一篇
|
||||
prev: 上一篇
|
||||
|
||||
award:
|
||||
thanks: 致謝
|
||||
tipping: 贊助作者
|
||||
title: 讚賞名單
|
||||
|
||||
search:
|
||||
empty: 找不到你查詢的內容:${query}
|
||||
hit: 找到 ${hits} 條結果,用時 ${time} 毫秒
|
||||
placeholder: 輸入關鍵詞快速查找
|
||||
count: 共 <b>${count}<b> 條結果。
|
||||
|
||||
head:
|
||||
noscript: 開啟JavaScript才能訪問本站哦~
|
||||
|
||||
aside:
|
||||
postcount: '文章數:'
|
||||
pv: '瀏覽量:'
|
||||
uv: '訪客數:'
|
||||
runtime: '運行時間:'
|
||||
updatetime: '最後更新:'
|
||||
wordcount: '字數統計:'
|
||||
toc: 文章目錄
|
||||
tagmore: 查看全部
|
||||
avatar: 头像
|
||||
hello: 好久不見,
|
||||
back: 歡迎再次回來,
|
||||
sticker: 心情贴纸
|
||||
newpost: 最近发布
|
||||
newcomment: 最新评论
|
||||
card:
|
||||
posts: '累計文章數:'
|
||||
tags: '標籤總數:'
|
||||
categories: '分類總數:'
|
||||
|
||||
console:
|
||||
comment_tip: 互動
|
||||
comment_title: 評論
|
||||
tag_tip: 標籤
|
||||
tag_title: 標籤
|
||||
switch_darkmode: 昼夜切換
|
||||
switch_hideAside: 边栏显示控制
|
||||
switch_keyboard: 鍵盤快捷鍵
|
||||
switch_music: 音樂開關
|
||||
archive_unit: 篇
|
||||
recent_comment_more: 最近評論
|
||||
newest_comment:
|
||||
image: 圖片
|
||||
link: 連結
|
||||
code: 代碼
|
||||
emoji: 表情
|
||||
|
||||
sidebar:
|
||||
function: 功能
|
||||
darkmode: 顯示模式
|
||||
|
||||
footer:
|
||||
description: 來自${title}的文章
|
||||
learnmore: 了解更多
|
||||
randomlink: 友鏈
|
||||
rss: 訂閱
|
||||
theme: 主題
|
||||
|
||||
cookies:
|
||||
title: 協議提醒助手
|
||||
tip: 查看本站為你的個人隱私做出的努力
|
||||
privacy: 本站如何保護你的隱私
|
||||
|
||||
music:
|
||||
hit: 音樂已暫停
|
||||
|
||||
404:
|
||||
button: 返回首頁
|
||||
|
||||
link:
|
||||
banner:
|
||||
toComment: 申請友鏈
|
||||
random: 點擊前往按鈕進入隨機一個友鏈,不保證跳轉網站的安全性和可用性。本次隨機到的是本站友鏈:⌈ ${name} ⌋
|
||||
to: 前往
|
||||
keyboard:
|
||||
title: 博客快捷鍵
|
||||
|
||||
newest_comment:
|
||||
error: 無法獲取評論,請確認相關配置是否正確。
|
||||
zero: 沒有評論
|
||||
|
||||
comment:
|
||||
title: 評論
|
||||
|
||||
commentBarrage:
|
||||
title: 熱評
|
||||
|
||||
f12: 開發者模式已打開,請遵循GPL協定。
|
||||
|
||||
right_menu:
|
||||
copy: 複製選中文本
|
||||
paste: 粘貼文本
|
||||
comment: 引用到評論
|
||||
new: 新窗口打開
|
||||
link: 複製連結位址
|
||||
img: 複製此圖片
|
||||
downloadImg: 下載此圖片
|
||||
search: 站內搜索
|
||||
dark: 淺色模式
|
||||
light: 深色模式
|
||||
chs_to_cht: 轉為繁體
|
||||
cht_to_chs: 转为简体
|
||||
img_error: 此圖片無法複製與下載
|
||||
barrage:
|
||||
open: 顯示熱評
|
||||
close: 關閉熱評
|
||||
music:
|
||||
start: 播放音樂
|
||||
stop: 暫停音樂
|
||||
back: 切換到上一首
|
||||
forward: 切換到下一首
|
||||
copyMusicName: 複製歌名
|
||||
|
||||
pagination:
|
||||
prev: 上一頁
|
||||
next: 下一頁
|
||||
to: 跳轉到指定頁面
|
||||
|
||||
about:
|
||||
other:
|
||||
oneself:
|
||||
map_title: 我現在住在
|
||||
info_title1: 生於
|
||||
info_title2: 現在職業
|
||||
tj:
|
||||
tip: 數據
|
||||
title: 訪問統計
|
||||
post_tip: 統計信息來自
|
||||
personalities:
|
||||
tip1: 在
|
||||
tip2: 瞭解更多關於
|
||||
|
||||
message:
|
||||
close: 隱藏彈幕
|
||||
open: 顯示彈幕
|
||||
@@ -0,0 +1,24 @@
|
||||
extends includes/layout.pug
|
||||
|
||||
block content
|
||||
#error-wrap
|
||||
.error-content
|
||||
.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=url_for("/"))
|
||||
i.solitude.st-external-link
|
||||
=_p('404.button')
|
||||
|
||||
if theme.errorpage.recommendList
|
||||
.aside-list
|
||||
.aside-list-group
|
||||
each post, index in site.posts.sort('-date').data.slice(0, 6)
|
||||
if index >= 5
|
||||
break
|
||||
.aside-list-item
|
||||
a.thumbnail(href=url_for(post.path), title=post.title)
|
||||
img(src=post.cover, alt=post.title)
|
||||
.content
|
||||
a.title(href=url_for(post.path), title=post.title)= post.title
|
||||
@@ -0,0 +1,10 @@
|
||||
extends includes/layout.pug
|
||||
|
||||
block content
|
||||
main.layout#content-inner
|
||||
#archive
|
||||
.article-sort-title #{__('page.archives')}<sup>#{site.posts.find({ parent: { $exists: false } }).length}</sup>
|
||||
.article-sort
|
||||
include includes/mixins/articleSort
|
||||
include includes/mixins/pagination
|
||||
include includes/widgets/aside/aside
|
||||
@@ -0,0 +1,12 @@
|
||||
extends includes/layout.pug
|
||||
|
||||
block content
|
||||
main.layout#content-inner
|
||||
#category
|
||||
#category-bar
|
||||
include includes/widgets/home/categoryBar
|
||||
.recent-posts#recent-posts
|
||||
each post,index in page.posts.find({ parent: { $exists: false } }).data
|
||||
include includes/widgets/home/postList
|
||||
include includes/mixins/pagination
|
||||
include includes/widgets/aside/aside
|
||||
@@ -0,0 +1,9 @@
|
||||
if theme.google_adsense && theme.google_adsense.enable
|
||||
script(async src=theme.google_adsense.js onerror="document.querySelectorAll('.google-ads-warp').forEach(i => i.style.display='none')")
|
||||
|
||||
if theme.google_adsense.auto_ads
|
||||
script.
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: '!{theme.google_adsense.client}',
|
||||
enable_page_level_ads: !{theme.google_adsense.enable_page_level_ads},
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
case theme.display_mode.type
|
||||
when "auto"
|
||||
script.
|
||||
initTheme = () => {
|
||||
let isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
const cachedMode = utils.saveToLocal.get('theme');
|
||||
if (cachedMode === undefined) {
|
||||
const nowMode =
|
||||
isDarkMode ? 'dark' : 'light'
|
||||
document.documentElement.setAttribute('data-theme', nowMode);
|
||||
} else {
|
||||
document.documentElement.setAttribute('data-theme', cachedMode);
|
||||
}
|
||||
typeof rm === 'object' && rm.mode(cachedMode === 'dark' && isDarkMode)
|
||||
}
|
||||
initTheme()
|
||||
when "dark"
|
||||
script.
|
||||
initTheme = () => {
|
||||
const cachedMode = utils.saveToLocal.get('theme');
|
||||
if (cachedMode === undefined)
|
||||
document.documentElement.setAttribute('data-theme', 'dark');
|
||||
else
|
||||
document.documentElement.setAttribute('data-theme', cachedMode);
|
||||
typeof rm === 'object' && rm.mode(cachedMode === undefined || cachedMode === 'dark')
|
||||
}
|
||||
initTheme()
|
||||
when "light"
|
||||
script.
|
||||
initTheme = () => {
|
||||
const cachedMode = utils.saveToLocal.get('theme');
|
||||
if (cachedMode === undefined)
|
||||
document.documentElement.setAttribute('data-theme', 'light');
|
||||
else
|
||||
document.documentElement.setAttribute('data-theme', cachedMode);
|
||||
typeof rm === 'object' && rm.mode(cachedMode === 'dark')
|
||||
}
|
||||
initTheme()
|
||||
@@ -0,0 +1,51 @@
|
||||
div#console
|
||||
div.close-btn(onclick="sco.hideConsole()")
|
||||
i.solitude.st-close-fill
|
||||
if theme.console_plus
|
||||
div.console-card-group
|
||||
if theme.recent_comments.enable && theme.recent_comments.img
|
||||
div.console-card-group-left
|
||||
div.console-card#card-newest-comments(onclick="sco.hideConsole()")
|
||||
div.card-content
|
||||
div.author-content-item-tips= _p('console.comment_tip')
|
||||
div.author-content-item-title
|
||||
| #{_p('console.comment_title')}
|
||||
if theme.recent_comments.enable
|
||||
a.recent-comment-more(href=url_for(theme.recent_comments.page) title=_p('console.recent_comment_more'))
|
||||
i.solitude.st-right-btn-fill
|
||||
a.recent-comment-image(href=url_for(theme.recent_comments.page))
|
||||
img(src=theme.recent_comments.img)
|
||||
|
||||
div.console-card-group-right
|
||||
div.console-card.tags(onclick="sco.hideConsole()")
|
||||
div.card-content
|
||||
div.author-content-item-tips= _p('console.tag_tip')
|
||||
div.author-content-item-title= _p('console.tag_title')
|
||||
div.card-tag-cloud
|
||||
each tag in site.tags.find({ parent: { $exists: false } }).data
|
||||
a(href=url_for(tag.path))= tag.name
|
||||
sup= tag.length
|
||||
|
||||
div.console-card.history(onclick="sco.hideConsole()")
|
||||
include ./widgets/aside/asideArchive.pug
|
||||
|
||||
div.button-group
|
||||
div.console-btn-item
|
||||
span.darkmode_switchbutton(onclick="sco.switchDarkMode()", title=_p('console.switch_darkmode'))
|
||||
i.solitude.st-moon-clear-fill
|
||||
div.console-btn-item#consoleHideAside
|
||||
span.asideSwitch(onclick="sco.switchHideAside()", title=_p('console.switch_hideAside'))
|
||||
i.solitude.st-side-bar-fill
|
||||
if theme.keyboard.enable
|
||||
div.console-btn-item#consoleKeyboard(onclick="sco.switchKeyboard()")
|
||||
span.keyboardSwitch(title=_p('console.switch_keyboard'))
|
||||
i.solitude.st-keyboard-box-fill
|
||||
if theme.capsule.enable
|
||||
div.console-btn-item#consoleMusic(onclick="sco.musicToggle()")
|
||||
span.music-switch(title=_p('console.switch_music'))
|
||||
i.solitude.st-disc-fill
|
||||
if theme.comment.use && theme.comment.commentBarrage
|
||||
div.console-btn-item.on#consoleCommentBarrage(onclick="sco.switchCommentBarrage()")
|
||||
span.commentBarrage
|
||||
i.solitude.st-chat-fill
|
||||
div.console-mask(onclick="sco.hideConsole()")
|
||||
@@ -0,0 +1,72 @@
|
||||
if theme.post.footer.enable && is_post()
|
||||
div#st-footer-bar
|
||||
div.footer-logo
|
||||
if theme.site.name.class === 'i_class'
|
||||
i.solitude(class=theme.site.name.custom)
|
||||
else if theme.site.name.class === 'img'
|
||||
img.solitude.nolazyload(src=url_for(theme.site.name.custom))
|
||||
else if theme.site.name.class === 'text'
|
||||
span= theme.site.name.custom
|
||||
div.footer-bar-description=theme.post.footer.desc
|
||||
if theme.post.footer.button.enable
|
||||
a.footer-bar-link(href=url_for(theme.post.footer.button.url))= theme.post.footer.button.name
|
||||
div#footer_deal
|
||||
- var leftInfo = theme.footer && theme.footer.information && theme.footer.information.left || {}
|
||||
- var rightInfo = theme.footer && theme.footer.information && theme.footer.information.right || {}
|
||||
|
||||
each value, label in leftInfo
|
||||
- var array = value.split('||')
|
||||
a.deal_link(href=url_for(trim(array[0])), title=label)
|
||||
i.solitude(class=array[1])
|
||||
|
||||
if theme.footer.information.author
|
||||
div#footer_mini_logo.nolazyload.footer_mini_logo(title=_p('nav.backtop'), onclick="sco.toTop()")
|
||||
img(src=theme.site.icon, alt=_p('nav.backtop'))
|
||||
|
||||
each value, label in rightInfo
|
||||
- var array = value.split('||')
|
||||
a.deal_link(href=url_for(trim(array[0])), title=label)
|
||||
i.solitude(class=array[1])
|
||||
div#st-footer
|
||||
- var group = theme.footer && theme.footer.group ? theme.footer.group : {}
|
||||
|
||||
each value, x in group
|
||||
div.footer-group
|
||||
h3.footer-title= x
|
||||
div.footer-links
|
||||
each url, y in value
|
||||
a.footer-item(href=url_for(url), title=y)= y
|
||||
|
||||
if theme.footer && theme.footer.randomlink
|
||||
div.footer-group
|
||||
div.footer-title-group
|
||||
h3.footer-title= _p('footer.randomlink')
|
||||
button.random-friends-btn(onclick='randomLinksList()', title=_p('footer.randomlink'))
|
||||
i.solitude.st-refresh-line
|
||||
div.footer-links#friend-links-in-footer
|
||||
div#footer-bar
|
||||
div.footer-bar-links
|
||||
div.footer-bar-left
|
||||
if moment(theme.aside.siteinfo.runtime).year() === new Date().getFullYear()
|
||||
div.copyright © #{moment(theme.aside.siteinfo.runtime).year()} By
|
||||
a.footer-bar-link(href=url_for("/"))= config.author
|
||||
else
|
||||
div.copyright © #{moment(theme.aside.siteinfo.runtime).year()} - #{new Date().getFullYear()} By
|
||||
a.footer-bar-link(href=url_for("/"))= config.author
|
||||
div.footer-bar-right
|
||||
each item in theme.footer.links
|
||||
a.footer-bar-link(href=url_for(item.url), alt=item.name)!= item.name
|
||||
a.footer-bar-link.cc(href=url_for(theme.footer.license), aria-label = 'copyright')
|
||||
i.solitude.st-copyright-line
|
||||
i.solitude.st-creative-commons-by-line
|
||||
i.solitude.st-creative-commons-nc-line
|
||||
i.solitude.st-creative-commons-nd-line
|
||||
if theme.footer.privacy
|
||||
div.needEndHide#cookies-window
|
||||
div.cookies-window-title= __('cookies.title')
|
||||
div.cookies-window-content
|
||||
span.cookies-tip= __('cookies.tip')
|
||||
a.cookies-link(href=url_for(theme.footer.privacy), title=_p('cookies.privacy'))
|
||||
i.solitude.st-right-btn-fill
|
||||
if theme.comment.use && theme.comment.commentBarrage
|
||||
div.comment-barrage.needEndHide
|
||||
@@ -0,0 +1,32 @@
|
||||
- let title = page.title, subtitle =''
|
||||
- if (is_home()) title = config.title
|
||||
- else if (is_archive()) title = _p('page.archives') + (page.year || "")
|
||||
- else if (is_tag()) title = _p('page.tag')+': ' + page.tag
|
||||
- else if (is_category()) title = _p('page.category') +': ' + page.category
|
||||
- else if (page.type === '404') title = _p('page.404')
|
||||
- else if (page.type === 'tags') title = _p('page.tags')
|
||||
- else if (page.type === 'categories') title = _p('page.categories')
|
||||
- else if (is_post() || is_page()) title = page.title
|
||||
|
||||
- if (is_home()) subtitle = config.subtitle ? ' - ' + config.subtitle : ''
|
||||
- else subtitle = title ? ' | ' + config.title : config.title
|
||||
|
||||
meta(charset="utf-8")
|
||||
meta(http-equiv="X-UA-Compatible", content="IE=edge")
|
||||
meta(name="viewport" content="width=device-width, initial-scale=1")
|
||||
|
||||
title= title + subtitle
|
||||
noscript= _p('head.noscript')
|
||||
link(rel="icon", href=url_for(theme.site.siteIcon))
|
||||
|
||||
// index.css
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.main_css))
|
||||
|
||||
// inject head
|
||||
include ./inject/head.pug
|
||||
|
||||
// global head
|
||||
include ./head/config.pug
|
||||
|
||||
// page-config head
|
||||
include ./head/page_config
|
||||
@@ -0,0 +1,166 @@
|
||||
-
|
||||
if (theme.search.enable) {
|
||||
var localSearch = 'undefined';
|
||||
var algolia = 'undefined';
|
||||
switch (theme.search.type) {
|
||||
case 'local':
|
||||
localSearch = JSON.stringify({
|
||||
preload: theme.search.local.preload,
|
||||
path: theme?.search?.local?.CDN || '/search.xml'
|
||||
});
|
||||
break;
|
||||
case 'algolia':
|
||||
algolia = JSON.stringify({
|
||||
appId: config.algolia.appId || config.algolia.applicationID,
|
||||
apiKey: config.algolia.apiKey,
|
||||
indexName: config.algolia.indexName,
|
||||
hits: {
|
||||
per_page: theme?.search?.algolia?.hits?.per_page || 10
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const sayhello2 = theme.aside?.card?.sayhello2?.map(item => `"${item}"`) || [];
|
||||
const [hello_prefix, hello_back] = [_p('aside.hello'), _p('aside.back')];
|
||||
|
||||
let comment = false
|
||||
|
||||
if (theme.comment.use && theme.comment.commentBarrage) {
|
||||
comment = {
|
||||
avatar: theme.comment.avatar,
|
||||
commentBarrage: theme.comment.commentBarrage,
|
||||
}
|
||||
}
|
||||
|
||||
let post_ai = false
|
||||
|
||||
if (theme.post_ai.enable) {
|
||||
post_ai = JSON.stringify({
|
||||
key: theme.post_ai.key,
|
||||
talk: theme.post_ai.talk,
|
||||
randomPost: theme.post_ai.randomPost,
|
||||
})
|
||||
}
|
||||
|
||||
let copyright = false;
|
||||
if (theme.copy.enable && theme.copy.copyright.enable) {
|
||||
copyright = JSON.stringify({
|
||||
limit: theme.copy.copyright.limit,
|
||||
author: _p("copy_copyright.author") + ': ' + config.author,
|
||||
link: _p("copy_copyright.link") + ': ',
|
||||
source: _p("copy_copyright.source") + ': ' + config.title,
|
||||
info: _p("copy_copyright.info")
|
||||
})
|
||||
}
|
||||
|
||||
let lang = false
|
||||
lang = {
|
||||
theme: {
|
||||
dark: _p('theme.dark'),
|
||||
light: _p('theme.light'),
|
||||
},
|
||||
copy: {
|
||||
success: _p('copy.success'),
|
||||
error: _p('copy.error'),
|
||||
},
|
||||
backtop: _p('nav.backtop'),
|
||||
time: {
|
||||
day: _p('time.day'),
|
||||
hour: _p('time.hour'),
|
||||
just: _p('time.just'),
|
||||
min: _p('time.min'),
|
||||
month: _p('time.month')
|
||||
},
|
||||
day: _p('day'),
|
||||
f12: _p('f12'),
|
||||
totalk: _p('totalk')
|
||||
}
|
||||
|
||||
if (theme.search.enable) {
|
||||
lang.search = {
|
||||
empty: _p('search.empty'),
|
||||
hit: _p('search.hit'),
|
||||
placeholder: _p('search.placeholder'),
|
||||
count: _p('search.count')
|
||||
}
|
||||
}
|
||||
|
||||
if (theme.comment.use && theme.comment.commentBarrage) {
|
||||
lang.barrage = {
|
||||
title: _p('commentBarrage.title'),
|
||||
}
|
||||
}
|
||||
|
||||
let rightMenu = false
|
||||
if (theme.right_menu.enable) {
|
||||
rightMenu = {
|
||||
mode: {
|
||||
dark: _p('right_menu.light'),
|
||||
light: _p('right_menu.dark'),
|
||||
},
|
||||
img_error: _p('right_menu.img_error')
|
||||
}
|
||||
if (theme.capsule.enable) {
|
||||
rightMenu.music = {
|
||||
start: _p('right_menu.music.start'),
|
||||
stop: _p('right_menu.music.stop'),
|
||||
}
|
||||
}
|
||||
if (theme.comment.use && theme.comment.commentBarrage) {
|
||||
rightMenu.barrage = {
|
||||
open: _p('right_menu.barrage.open'),
|
||||
close: _p('right_menu.barrage.close')
|
||||
}
|
||||
}
|
||||
if (theme.right_menu.translate.enable) {
|
||||
rightMenu.translate = {
|
||||
translateDelay: theme.right_menu.translate.translateDelay,
|
||||
defaultEncoding: theme.right_menu.translate.defaultEncoding
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
script.
|
||||
const GLOBAL_CONFIG = {
|
||||
root: '!{config.root}',
|
||||
algolia: !{algolia ? algolia : 'undefined'},
|
||||
localsearch: !{localSearch ? localSearch : 'undefined'},
|
||||
runtime: '!{theme.aside.siteinfo.runtimeenable ? theme.aside.siteinfo.runtime : false}',
|
||||
lazyload: {
|
||||
enable: !{theme.lazyload.enable},
|
||||
error: '!{theme.lazyload.errorimg}'
|
||||
},
|
||||
copyright: !{copyright},
|
||||
highlight: {
|
||||
enable: !{theme.highlight.enable},
|
||||
limit: !{theme.highlight.limit},
|
||||
expand: !{theme.highlight.expand},
|
||||
copy: !{theme.highlight.copy},
|
||||
syntax: '!{config.syntax_highlighter}'
|
||||
},
|
||||
randomlink: !{theme.footer.randomlink},
|
||||
lang: !{JSON.stringify(lang)},
|
||||
aside: {
|
||||
sayhello: {
|
||||
morning: '!{theme.aside.card.sayhello.morning}',
|
||||
noon: '!{theme.aside.card.sayhello.noon}',
|
||||
afternoon: '!{theme.aside.card.sayhello.afternoon}',
|
||||
night: '!{theme.aside.card.sayhello.night}',
|
||||
goodnight: '!{theme.aside.card.sayhello.goodnight}',
|
||||
},
|
||||
sayhello2: [!{sayhello2}],
|
||||
sayhello3: {
|
||||
prefix: '!{hello_prefix}',
|
||||
back: '!{hello_back}',
|
||||
},
|
||||
},
|
||||
covercolor: {
|
||||
enable: !{theme.post.covercolor.enable}
|
||||
},
|
||||
comment: !{comment ? JSON.stringify(comment) : false},
|
||||
lightbox: '!{ theme.mediumZoom ? "mediumZoom" : (theme.fancybox ? "fancybox" : "null")}',
|
||||
post_ai: !{post_ai},
|
||||
right_menu: !{rightMenu ? JSON.stringify(rightMenu) : false},
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
if theme.OpenGraph.enable
|
||||
-
|
||||
const coverVal = page.cover || theme.site.siteIcon
|
||||
let ogOption = {
|
||||
type: is_post() ? 'article' : 'website',
|
||||
image: coverVal ? full_url_for(coverVal) : '',
|
||||
...theme.OpenGraph.options
|
||||
}
|
||||
-
|
||||
!= open_graph(ogOption)
|
||||
meta(name="description" content=page_description())
|
||||
else
|
||||
meta(name="description" content=page_description())
|
||||
@@ -0,0 +1,10 @@
|
||||
script#config-diff.
|
||||
var PAGE_CONFIG = {
|
||||
is_post: !{is_post()},
|
||||
is_page: !{!is_post() && !is_home()},
|
||||
is_home: !{is_home()},
|
||||
page: '!{page.type}',
|
||||
toc: !{!!page.toc},
|
||||
comment: !{!!page.comment},
|
||||
ai_text: !{is_post && page.ai_text ? "'"+ page.ai_text+"'" : false}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
if theme.pwa.enable
|
||||
meta(name="theme-color", content=theme.pwa.theme_color)
|
||||
meta(name="apple-mobile-web-app-status-bar-style", content=theme.pwa.theme_color)
|
||||
link(rel="manifest" href=url_for(theme.pwa.manifest))
|
||||
if theme.pwa.theme_color
|
||||
meta(name="msapplication-TileColor" content=theme.pwa.theme_color)
|
||||
if theme.pwa.mask_icon
|
||||
link(rel="mask-icon", href=url_for(theme.pwa.mask_icon), color=theme.pwa.theme_color)
|
||||
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=url_for(theme.pwa.favicon_16_16))
|
||||
if theme.pwa.favicon_32_32
|
||||
link(rel="icon", type="image/png", sizes="32x32", href=url_for(theme.pwa.favicon_32_32))
|
||||
if theme.pwa.bookmark_icon
|
||||
link(rel="bookmark", href=url_for(theme.pwa.bookmark_icon))
|
||||
else
|
||||
meta(name="apple-mobile-web-app-capable", content=config.title)
|
||||
meta(name="theme-color", content="var(--efu-main)")
|
||||
meta(name="apple-mobile-web-app-status-bar-style", content="var(--efu-main)")
|
||||
link(rel="bookmark", href=url_for(theme.site.siteIcon))
|
||||
link(rel="apple-touch-icon", href=url_for(theme.site.siteIcon), sizes="180x180")
|
||||
@@ -0,0 +1,4 @@
|
||||
header#page-header(class=is_post() ? 'post-bg' : 'not-top-img')
|
||||
include ./nav.pug
|
||||
if is_post()
|
||||
include ./widgets/post/postMeta.pug
|
||||
@@ -0,0 +1,117 @@
|
||||
- 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.utils))
|
||||
script(src=url_for(theme.cdn.main))
|
||||
script(src=url_for(theme.cdn.waterfall))
|
||||
script(src=url_for(theme.cdn.pjax))
|
||||
|
||||
if theme.mermaid
|
||||
script(src=url_for(theme.cdn.mermaid_js))
|
||||
if theme.post.share.enable && theme.post.share.list && theme.post.share.list.includes('qrcode')
|
||||
script(src=url_for(theme.cdn.qrcode))
|
||||
|
||||
if theme.display_mode.universe
|
||||
script(src=url_for(theme.cdn.universe_js))
|
||||
script.
|
||||
dark()
|
||||
|
||||
if theme.right_menu.enable && theme.right_menu.translate.enable
|
||||
script(src=url_for(theme.cdn.translate_js))
|
||||
|
||||
if theme.katex && theme.katex.enable
|
||||
if theme.katex.per_page && (is_post() || is_page())
|
||||
+katex
|
||||
else if page.katex
|
||||
+katex
|
||||
|
||||
if theme.lazyload.enable
|
||||
script(src=url_for(theme.cdn.lazyload))
|
||||
script(src=url_for(theme.cdn.snackbar))
|
||||
if theme.lightbox
|
||||
if theme.mediumZoom
|
||||
script(src=url_for(theme.cdn.medium_zoom))
|
||||
if theme.fancybox
|
||||
script(src=url_for(theme.cdn.fancyapps_ui))
|
||||
if (theme.says.home_mini && theme.says.enable) || theme.carousel
|
||||
script(src=url_for(theme.cdn.swiper_js))
|
||||
|
||||
if theme.post_ai.enable
|
||||
script(src=url_for(theme.cdn.efu_ai))
|
||||
|
||||
if theme.capsule.enable || theme.music.enable || theme.says.enable
|
||||
script.
|
||||
var meting_api = '!{theme.meting_api}';
|
||||
script(src=url_for(theme.cdn.aplayer_js))
|
||||
script(src=url_for(theme.cdn.meting_js))
|
||||
|
||||
if theme.post.covercolor.enable
|
||||
case theme.post.covercolor.mode
|
||||
when 'local'
|
||||
script(src=url_for(theme.cdn.cover_local))
|
||||
when 'api'
|
||||
script.
|
||||
const coverColorConfig = {
|
||||
api: '!{theme.post.covercolor.api}',
|
||||
time: !{theme.post.covercolor.time}
|
||||
}
|
||||
script(src=url_for(theme.cdn.cover_api))
|
||||
|
||||
if theme.loading.pace
|
||||
script(src=url_for(theme.cdn.pace_js))
|
||||
|
||||
if theme.search.enable && theme.search.type === "algolia"
|
||||
script(src=url_for(theme.cdn.instantsearch))
|
||||
script(src=url_for(theme.cdn.algolia_search))
|
||||
|
||||
if theme.right_menu.enable
|
||||
script(src=url_for(theme.cdn.right_menu_js))
|
||||
|
||||
if theme.extends.body
|
||||
each item in theme.extends.body
|
||||
!= item
|
||||
|
||||
.js-pjax
|
||||
if is_home() && theme.says.enable && theme.says.home_mini
|
||||
script.
|
||||
sco.initbbtalk()
|
||||
if page.type === 'says' && theme.says.enable
|
||||
script.
|
||||
GLOBAL_CONFIG.lightbox && utils.lightbox(document.querySelectorAll(".bber-content-img img"));
|
||||
sco.changeTimeFormat(document.querySelectorAll('.bber-info-time time'))
|
||||
if comment_js
|
||||
include ../widgets/third-party/comments/js
|
||||
if theme.mermaid
|
||||
script.
|
||||
mermaid.run();
|
||||
if is_home() && theme.carousel && site.posts.data.filter(item => item.recommend === true).slice(0, 6) || false
|
||||
script.
|
||||
carousel_swiper()
|
||||
if theme.busuanzi && (theme.aside.siteinfo.uv || theme.aside.siteinfo.pv)
|
||||
if theme.busuanzi_use === 0
|
||||
script(defer pjax src=url_for(theme.cdn.busuanzi_js))
|
||||
else
|
||||
script(defer pjax src=url_for(theme.cdn.busuanzi_qj_js))
|
||||
|
||||
|
||||
if theme.footer.randomlink
|
||||
include ../widgets/randomlink.pug
|
||||
|
||||
// pjax
|
||||
!= partial("includes/widgets/third-party/pjax", {}, {cache: true})
|
||||
|
||||
// theme
|
||||
include ../body/mode
|
||||
|
||||
// google adsense
|
||||
include ../body/gadsense
|
||||
@@ -0,0 +1,52 @@
|
||||
each item in theme.verify_site || []
|
||||
meta(name=item.name, content=item.content)
|
||||
|
||||
link(rel="canonical" href=urlNoIndex())
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.solitude_css))
|
||||
|
||||
// aplayer
|
||||
if theme.capsule.enable || theme.music.enable
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.aplayer_css))
|
||||
|
||||
// swiper
|
||||
if (theme.says.home_mini && theme.says.enable) || theme.carousel
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.swiper_css))
|
||||
|
||||
// fancybox ui
|
||||
if theme.lightbox && theme.fancybox
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.fancyapps_css))
|
||||
|
||||
// katex
|
||||
if theme.katex && theme.katex.enable
|
||||
link(rel="stylesheet", href=url_for(theme.cdn.katex))
|
||||
|
||||
// Open Graph
|
||||
include ../head/opengraph.pug
|
||||
|
||||
// pwa
|
||||
include ../head/pwa.pug
|
||||
|
||||
script.
|
||||
console.log(
|
||||
"%c Program: Hexo %c Theme: Solitude %c Version: v1.12.2",
|
||||
"border-radius:5px 0 0 5px;padding: 5px 10px;color:white;background:#ff3842;",
|
||||
"padding: 5px 10px;color:white;background:#3e9f50;",
|
||||
"padding: 5px 10px;color:white;background:#0084ff;border-radius:0 5px 5px 0",
|
||||
)
|
||||
|
||||
if theme.memorial.enable
|
||||
script.
|
||||
let mdate = "!{theme.memorial.date}";
|
||||
mdate = (mdate.split(","));
|
||||
let ndate = new Date();
|
||||
for (let i of mdate) {
|
||||
if (i === (ndate.getMonth()+1) + "-" + (ndate.getDate())) {
|
||||
document.documentElement.classList.add('memorial');
|
||||
}
|
||||
}
|
||||
|
||||
if theme.extends.head
|
||||
each item in theme.extends.head
|
||||
!= item
|
||||
|
||||
!=fragment_cache('injectHeadJs', function(){return inject_head_js()})
|
||||
@@ -0,0 +1,65 @@
|
||||
- const list = theme.keyboard.list || []
|
||||
#keyboard-tips
|
||||
.keyboardTitle=_p('keyboard.title')
|
||||
.keyboardList
|
||||
each item in list
|
||||
.keyboardItem
|
||||
.keyGroup
|
||||
.key= 'Shift'
|
||||
.key= item.key
|
||||
.keyContent
|
||||
.content= item.name
|
||||
script.
|
||||
const keyboard_addKeyup = (e) => {
|
||||
if (e.key === 'Shift') {
|
||||
document.getElementById('keyboard-tips').classList.remove('show');
|
||||
}
|
||||
}
|
||||
|
||||
const keyboard_addKeydown = (e) => {
|
||||
const keyboards = !{JSON.stringify(list)};
|
||||
if (e.keyCode === 16) {
|
||||
document.getElementById('keyboard-tips').classList.add('show');
|
||||
}
|
||||
|
||||
for (let i = 0; i < keyboards.length; i++) {
|
||||
if (keyboards[i].url) {
|
||||
if (keyboards[i].url.startsWith('http')) {
|
||||
if (e.key === keyboards[i].key) {
|
||||
window.open(keyboards[i].url);
|
||||
}
|
||||
} else {
|
||||
if (e.key === keyboards[i].key) {
|
||||
pjax.loadUrl(keyboards[i].url);
|
||||
}
|
||||
}
|
||||
} else if (keyboards[i].sco) {
|
||||
if (e.key === keyboards[i].key) {
|
||||
sco[keyboards[i].sco]();
|
||||
}
|
||||
} else if (keyboards[i].func) {
|
||||
if (e.key === keyboards[i].key) {
|
||||
window[keyboards[i].func]();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function openKeyboard() {
|
||||
|
||||
window.addEventListener('keyup', keyboard_addKeyup);
|
||||
|
||||
window.addEventListener('keydown', keyboard_addKeydown);
|
||||
}
|
||||
function closeKeyboard() {
|
||||
|
||||
window.removeEventListener('keyup', keyboard_addKeyup);
|
||||
|
||||
window.removeEventListener('keydown', keyboard_addKeydown);
|
||||
}
|
||||
|
||||
var sco_keyboards = localStorage.getItem('keyboard') === 'true'
|
||||
if (sco_keyboards) {
|
||||
openKeyboard();
|
||||
document.getElementById('consoleKeyboard').classList.add('on');
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
- page.type = is_home() ? 'solitude' : page.type
|
||||
|
||||
doctype html
|
||||
html(lang=config.language, data-theme="light")
|
||||
head
|
||||
include ./head.pug
|
||||
body#body(data-type=page.type)
|
||||
// universe
|
||||
if theme.display_mode.universe
|
||||
canvas#universe
|
||||
|
||||
// loading
|
||||
if theme.loading.fullpage
|
||||
include ./loading.pug
|
||||
|
||||
// console
|
||||
include ./console.pug
|
||||
|
||||
// sidebar
|
||||
include ./sidebar.pug
|
||||
|
||||
// keyboard
|
||||
if theme.keyboard.enable
|
||||
include ./keyboard.pug
|
||||
|
||||
#body-wrap(class = is_post() ? 'post' : 'page')
|
||||
include ./header.pug
|
||||
|
||||
if(page.type !== '404')
|
||||
block content
|
||||
|
||||
footer#footer
|
||||
include ./footer.pug
|
||||
else
|
||||
.error#body-wrap
|
||||
block content
|
||||
|
||||
// right_menu
|
||||
if theme.right_menu.enable
|
||||
include rightmenu
|
||||
|
||||
// inject body
|
||||
include ./inject/body.pug
|
||||
|
||||
// search
|
||||
include ./widgets/third-party/search/index.pug
|
||||
|
||||
// Tianli-Talk
|
||||
if theme.tianli_talk.enable
|
||||
include ./widgets/third-party/tianli-talk.pug
|
||||
|
||||
// music
|
||||
if theme.capsule.enable
|
||||
include ./widgets/third-party/music.pug
|
||||
@@ -0,0 +1,25 @@
|
||||
div(id="loading-box" onclick="preloader.endLoading();" style="zoom:1")
|
||||
div.loading-bg
|
||||
img.loading-img.nolazyload(src=url_for(theme.site.icon), alt="loading image")
|
||||
|
||||
script.
|
||||
const preloader = {
|
||||
endLoading: () => {
|
||||
document.getElementById('loading-box').classList.toggle('loaded');
|
||||
},
|
||||
initLoading: () => {
|
||||
document.getElementById('loading-box').classList.remove('loaded');
|
||||
},
|
||||
removePaceDone: () => {
|
||||
document.getElementById('body').classList = 'pace-done';
|
||||
}
|
||||
}
|
||||
window.addEventListener('load', () => {
|
||||
preloader.endLoading();
|
||||
});
|
||||
window.addEventListener('pjax:send', () => {
|
||||
preloader.initLoading();
|
||||
});
|
||||
document.addEventListener('pjax:complete', () => {
|
||||
preloader.endLoading();
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
- let year
|
||||
each post in page.posts.find({ parent: { $exists: false } }).data
|
||||
if(year !== post.date.year())
|
||||
- year = post.date.year()
|
||||
.article-sort-item.year #{year}
|
||||
.article-sort-item
|
||||
a.article-sort-item-img(href=url_for(post.path) title=post.title)
|
||||
img(src=post.cover alt=post.title)
|
||||
.article-sort-item-info
|
||||
a.article-sort-item-title(href=url_for(post.path) title=post.title onclick="window.event.cancelBubble=true;") #{post.title}
|
||||
.article-sort-item-tags
|
||||
each tags in post.tags.data
|
||||
a.article-meta__tags(href=url_for(tags.path) onclick="window.event.cancelBubble=true;")
|
||||
span.tags-punctuation #{tags.name}
|
||||
@@ -0,0 +1,8 @@
|
||||
nav#pagination
|
||||
div.pagination
|
||||
- var options = {mid_size: 1,escape: false,next_text: `<div class="pagination_tips_next">${_p("pagination.next")}</div> <i class="solitude st-arrow-right-bold"></i>`,prev_text: `<i class="solitude st-arrow-left-bold"></i> <div class="pagination_tips_prev">${_p("pagination.prev")}</div>`}
|
||||
!=paginator(options)
|
||||
div.toPageGroup
|
||||
input#toPageText(oninput="value=value.replace(/[^0-9]/g,'')" maxlength="3" title=_p('pagination.to') onkeyup="if (this.value === '0') this.value = ''")
|
||||
a#toPageButton(onclick="sco.toPage()")
|
||||
i.solitude.st-show-right-line
|
||||
@@ -0,0 +1,22 @@
|
||||
nav#nav.show
|
||||
#nav-group
|
||||
#blog_name
|
||||
if theme.nav.group
|
||||
.back-home-button(tabindex="-1")
|
||||
i.back-home-button-icon.solitude.st-more-fill
|
||||
include ./widgets/nav/group
|
||||
a#site-name(href=url_for("/"), title=_p('nav.site_name_title'))
|
||||
if theme.site.name.class === 'i_class'
|
||||
i.solitude(class=theme.site.name.custom, style="font-size: 16px;")
|
||||
else if theme.site.name.class === 'img'
|
||||
img(src=theme.site.name.custom, alt=config.title)
|
||||
else if theme.site.name.class === 'text'
|
||||
span.title= theme.site.name.custom
|
||||
#page-name-mask
|
||||
#page-name
|
||||
a#page-name-text(onclick="sco.toTop()")= title || config.title
|
||||
#menus
|
||||
include ./widgets/nav/menu.pug
|
||||
#nav-left
|
||||
#nav-right
|
||||
include ./widgets/nav/right.pug
|
||||
@@ -0,0 +1,11 @@
|
||||
if site.data.about
|
||||
#about-page
|
||||
include ../widgets/page/about/authorinfo
|
||||
include ../widgets/page/about/contentinfo
|
||||
include ../widgets/page/about/skillsinfo
|
||||
include ../widgets/page/about/personalities
|
||||
include ../widgets/page/about/motto
|
||||
include ../widgets/page/about/hobbies
|
||||
include ../widgets/page/about/other
|
||||
include ../widgets/page/about/tenyear
|
||||
include ../widgets/page/about/award
|
||||
@@ -0,0 +1,8 @@
|
||||
h1.page-title= _p('page.category')
|
||||
.category-lists
|
||||
.tag-cloud-list.is-center
|
||||
each item in site.categories.find({ parent: { $exists: false } }).data
|
||||
a(href=url_for(item.path))
|
||||
span.tags-punctuation
|
||||
= item.name
|
||||
span.tagsPageCount= item.length
|
||||
@@ -0,0 +1,2 @@
|
||||
#article-container
|
||||
!= page.content
|
||||
@@ -0,0 +1,2 @@
|
||||
include ../widgets/page/banner
|
||||
include ../widgets/page/equipment/content
|
||||
@@ -0,0 +1,14 @@
|
||||
.flink#banners
|
||||
include ../widgets/page/links/banner
|
||||
.flink#article-container
|
||||
each data in site.data.links.links
|
||||
h2= data.class_name + " (" + data.link_list.length + ")"
|
||||
.flink-desc= data.descr
|
||||
case data.type
|
||||
when 'card'
|
||||
include ../widgets/page/links/linksCard
|
||||
when 'item'
|
||||
include ../widgets/page/links/linksItem
|
||||
when 'discn'
|
||||
include ../widgets/page/links/linksDiscn
|
||||
!= page.content
|
||||
@@ -0,0 +1,5 @@
|
||||
- const { line,speed,hover,loop,enable } = theme.envelope
|
||||
|
||||
include ../widgets/page/message/content
|
||||
if enable
|
||||
include ../widgets/page/message/js
|
||||
@@ -0,0 +1,11 @@
|
||||
if theme.music.enable
|
||||
#Music-bg
|
||||
#Music-page
|
||||
meting-js(id=theme.music.id server=theme.music.server type=theme.music.type mutex=theme.music.mutex ? "true" : "false" volume=theme.music.volume preload="none" data-lrctype="0" order="random")
|
||||
.Music-loading
|
||||
div APlayer加载中...
|
||||
script(pjax).
|
||||
(async function () {
|
||||
if (typeof initializeMusicPlayer === "undefined") await utils.getScript('!{url_for(theme.cdn.music_js)}').then(() => initializeMusicPlayer())
|
||||
else initializeMusicPlayer()
|
||||
})()
|
||||
@@ -0,0 +1,16 @@
|
||||
- const { enable, limit, cache } = theme.recent_comments
|
||||
- const {use, avatar} = theme.comment
|
||||
|
||||
include ../widgets/page/banner
|
||||
|
||||
if enable && use
|
||||
#comments-page
|
||||
case use[0]
|
||||
when 'Twikoo'
|
||||
include ../widgets/page/recentcomment/twikoo
|
||||
when 'Valine'
|
||||
include ../widgets/page/recentcomment/valine
|
||||
when 'Waline'
|
||||
include ../widgets/page/recentcomment/waline
|
||||
when 'Artalk'
|
||||
include ../widgets/page/recentcomment/artalk
|
||||
@@ -0,0 +1,58 @@
|
||||
include ../widgets/page/banner
|
||||
if theme.says.enable
|
||||
#bber
|
||||
section.timeline.page-1
|
||||
ul.list.waterfall
|
||||
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.solitude.st-chat-fill
|
||||
|
||||
#bber-content
|
||||
p.datacont= item.content
|
||||
if item.image
|
||||
.bber-content-img
|
||||
each img in item.image
|
||||
img(src=img alt="image")
|
||||
|
||||
if item.aplayer
|
||||
.bber-music
|
||||
meting-js(server=item.aplayer.server type="song" id=item.aplayer.id mutex="true" preload="none" theme="var(--efu-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?autoplay=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.solitude.st-calendar-todo-fill
|
||||
time.datetime(datetime=moment(item.date).format())
|
||||
if item.location
|
||||
.bber-info-location
|
||||
i.solitude.st-map-pin-fill
|
||||
| #{item.location}
|
||||
if item.link
|
||||
a.bber-content-link(href=url_for(item.link) target="_blank")
|
||||
i.solitude.st-link-m-line
|
||||
| 链接
|
||||
if item.content
|
||||
a.bber-reply(onclick=`sco.toTalk('${item.content}')`)
|
||||
i.solitude.st-chat-fill
|
||||
#bber-tips
|
||||
if theme.says.strip === -1
|
||||
| - 已展开所有短文 -
|
||||
else
|
||||
| - 只展示最近 #{theme.says.strip} 条短文 -
|
||||
@@ -0,0 +1,8 @@
|
||||
h1.page-title= __('page.tag')
|
||||
.category-lists
|
||||
.tag-cloud-list.is-center
|
||||
each tag in site.tags.find({ parent: { $exists: false } }).data
|
||||
a(href=url_for(tag.path))
|
||||
span.tags-punctuation
|
||||
= tag.name
|
||||
span.tagsPageCount= tag.length
|
||||
@@ -0,0 +1,13 @@
|
||||
include ../widgets/page/banner
|
||||
.flink#article-container
|
||||
each data in site.data.tlink.links
|
||||
h2= data.class_name + " (" + data.link_list.length + ")"
|
||||
.flink-desc= data.descr
|
||||
case data.type
|
||||
when 'card'
|
||||
include ../widgets/page/links/linksCard
|
||||
when 'item'
|
||||
include ../widgets/page/links/linksItem
|
||||
when 'discn'
|
||||
include ../widgets/page/links/linksDiscn
|
||||
!= page.content
|
||||
@@ -0,0 +1,80 @@
|
||||
- let custom_list = theme.right_menu.custom_list || []
|
||||
|
||||
div#rightMenu
|
||||
div.rightMenu-group.rightMenu-small
|
||||
div.rightMenu-item#menu-backward
|
||||
i.solitude.st-arrow-left-line
|
||||
div.rightMenu-item#menu-forward
|
||||
i.solitude.st-arrow-right-line
|
||||
div.rightMenu-item#menu-refresh
|
||||
i.solitude.st-restart-line
|
||||
div.rightMenu-item#menu-top
|
||||
i.solitude.st-arrow-up-line
|
||||
div.rightMenu-group.rightMenu-line.rightMenuPlugin
|
||||
div.rightMenu-item#menu-copytext
|
||||
i.solitude.st-copy-fill
|
||||
span= _p('right_menu.copy')
|
||||
div.rightMenu-item#menu-pastetext
|
||||
i.solitude.st-clipboard-fill
|
||||
span= _p('right_menu.paste')
|
||||
if theme.comment.use
|
||||
div.rightMenu-item#menu-commenttext
|
||||
i.solitude.st-chat-new-fill
|
||||
span= _p('right_menu.comment')
|
||||
div.rightMenu-item#menu-newwindow
|
||||
i.solitude.st-window-fill
|
||||
span= _p('right_menu.new')
|
||||
div.rightMenu-item#menu-copylink
|
||||
i.solitude.st-link-line
|
||||
span= _p('right_menu.link')
|
||||
div.rightMenu-item#menu-copyimg
|
||||
i.solitude.st-copy-fill
|
||||
span= _p('right_menu.img')
|
||||
div.rightMenu-item#menu-downloadimg
|
||||
i.solitude.st-download-cloud-fill
|
||||
span= _p('right_menu.downloadImg')
|
||||
if theme.search.enable
|
||||
div.rightMenu-item#menu-search
|
||||
i.solitude.st-search-line
|
||||
span= _p('right_menu.search')
|
||||
if theme.capsule.enable
|
||||
div.rightMenu-item#menu-music-toggle
|
||||
i.solitude.st-play-fill
|
||||
span= _p('right_menu.music.start')
|
||||
div.rightMenu-item#menu-music-back
|
||||
i.solitude.st-skip-back-fill
|
||||
span= _p('right_menu.music.back')
|
||||
div.rightMenu-item#menu-music-forward
|
||||
i.solitude.st-skip-forward-fill
|
||||
span= _p('right_menu.music.forward')
|
||||
div.rightMenu-item#menu-music-copyMusicName
|
||||
i.solitude.st-copy-fill
|
||||
span= _p('right_menu.music.copyMusicName')
|
||||
div.rightMenu-group.rightMenu-line.rightMenuOther
|
||||
each item,index in custom_list
|
||||
div.rightMenu-item(id=item.id class=item.class onclick=item.click+'||rm.hideRightMenu()')
|
||||
i.solitude(class=item.icon)
|
||||
span= item.name
|
||||
div.rightMenu-group.rightMenu-line.rightMenuOther
|
||||
if theme.right_menu.commentBarrage && theme.comment.use && theme.comment.commentBarrage
|
||||
div.rightMenu-item#menu-commentBarrage(onclick="sco.switchCommentBarrage()")
|
||||
i.solitude.st-chat-fill
|
||||
span.menu-commentBarrage-text= _p('right_menu.barrage.close')
|
||||
div.rightMenu-item#menu-darkmode(onclick="sco.switchDarkMode()")
|
||||
i.solitude.st-moon-clear-fill
|
||||
case theme.display_mode.type
|
||||
when 'auto'
|
||||
when 'light'
|
||||
span.menu-darkmode-text= _p('right_menu.light')
|
||||
when 'dark'
|
||||
span.menu-darkmode-text= _p('right_menu.dark')
|
||||
if theme.right_menu.translate.enable
|
||||
div.rightMenu-item#menu-translate
|
||||
case theme.right_menu.translate.defaultEncoding
|
||||
when 2
|
||||
i.solitude.st-panben-line
|
||||
span= _p('right_menu.chs_to_cht')
|
||||
when 1
|
||||
i.solitude.st-jianben-line
|
||||
span= _p('right_menu.cht_to_chs')
|
||||
div#rightmenu-mask
|
||||
@@ -0,0 +1,32 @@
|
||||
div#sidebar(style="zoom: 1;")
|
||||
div#menu-mask(style="display: none;")
|
||||
div#sidebar-menus
|
||||
.site-data
|
||||
.data-item.is-center
|
||||
.data-item-link
|
||||
a(href=url_for('/archives/'))
|
||||
.headline=_p('page.archives')
|
||||
.length-num=site.posts.find({ parent: { $exists: false } }).length
|
||||
.data-item.is-center
|
||||
.data-item-link
|
||||
a(href=url_for('/categories/'))
|
||||
.headline=_p('page.category')
|
||||
.length-num=site.categories.find({parent: {$exists: false}}).length
|
||||
.data-item.is-center
|
||||
.data-item-link
|
||||
a(href=url_for('/tags/'))
|
||||
.headline=_p('page.tag')
|
||||
.length-num=site.tags.find({parent: {$exists: false}}).length
|
||||
span.sidebar-menu-item-title= __('sidebar.function')
|
||||
div.sidebar-menu-item
|
||||
span.darkmode_switchbutton.menu-child(onclick="sco.switchDarkMode()")
|
||||
i.solitude.st-moon-clear-fill
|
||||
span= __('sidebar.darkmode')
|
||||
include ./widgets/nav/group
|
||||
include ./widgets/nav/menu.pug
|
||||
span.sidebar-menu-item-title= __('page.tag')
|
||||
div.card-widget.card-tags.card-archives.card-webinfo.card-allinfo
|
||||
div.card-tag-cloud
|
||||
each tag in site.tags.find({ parent: { $exists: false } }).data
|
||||
a(href=url_for(tag.path))= tag.name
|
||||
sup= tag.length
|
||||
@@ -0,0 +1,18 @@
|
||||
.aside-content#aside-content
|
||||
- var noSticky, Sticky
|
||||
if(is_home())
|
||||
- noSticky = theme.aside.home.noSticky.split(',')
|
||||
- Sticky = theme.aside.home.Sticky.split(',')
|
||||
else if(is_post())
|
||||
- noSticky = theme.aside.post.noSticky.split(',')
|
||||
- Sticky = theme.aside.post.Sticky.split(',')
|
||||
else if(is_page() || is_archive() || is_tag() || is_category())
|
||||
- noSticky = theme.aside.page.noSticky.split(',')
|
||||
- Sticky = theme.aside.page.Sticky.split(',')
|
||||
each item in noSticky
|
||||
include ./asideSwitch.pug
|
||||
.sticky_layout
|
||||
if page.toc
|
||||
include ./asideToc.pug
|
||||
each item in Sticky
|
||||
include ./asideSwitch.pug
|
||||
@@ -0,0 +1,5 @@
|
||||
if theme.google_adsense.enable && !theme.google_adsense.auto_ads && theme.google_adsense.aside_card
|
||||
.card-widget.card-adsense
|
||||
ins.adsbygoogle(style="display:block; text-align:center; min-height:120px; min-width: 100%", data-ad-layout="in-article", data-ad-format="fluid", hide-unfilled="true", data-ad-client=theme.google_adsense.client, data-ad-slot=theme.google_adsense.slot)
|
||||
script.
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
@@ -0,0 +1,8 @@
|
||||
.card-widget.card-tags.card-archives.card-webinfo.card-allinfo
|
||||
if theme.aside.tags.enable
|
||||
include ./asideTag
|
||||
hr
|
||||
if theme.aside.archive.enable
|
||||
include ./asideArchive
|
||||
hr
|
||||
include ./asideWebInfo
|
||||
@@ -0,0 +1,11 @@
|
||||
- var archive = theme.aside.archive
|
||||
|
||||
ul.card-archive-list
|
||||
- var type = archive.type ? archive.type : 'year'
|
||||
each value, key in getArchiveLength(type)
|
||||
li.card-archive-list-item
|
||||
a.card-archive-list-link(href=`/archives/${key}/`)
|
||||
span.card-archive-list-date= key
|
||||
.card-archive-list-count-group
|
||||
span.card-archive-list-count= value
|
||||
span.card-archive-list-count-unit= __('console.archive_unit')
|
||||
@@ -0,0 +1,7 @@
|
||||
.card-widget(class=custom.class, id=custom.id)
|
||||
if !custom.no_head
|
||||
.item-headline
|
||||
i(class=custom.icon)
|
||||
span=custom.title
|
||||
div(class=custom.content_class ||'item-content', id=custom.content_id, style=custom.content_css)
|
||||
!= custom.content_html
|
||||
@@ -0,0 +1,5 @@
|
||||
.card-widget.card-platform
|
||||
#flip-wrapper
|
||||
#flip-content
|
||||
.face
|
||||
.back.face
|
||||
@@ -0,0 +1,86 @@
|
||||
- const {style ,url} = theme.aside.card
|
||||
.card-widget.card-info
|
||||
.card-content
|
||||
case style
|
||||
when 0
|
||||
.card-info-avatar.is-center
|
||||
.author-info__top-group
|
||||
.author-info__sayhi#author-info__sayhi(onclick="sco.changeSayHelloText()")= _p('sayhello.morning')
|
||||
.avatar-img-group
|
||||
img.avatar-img(alt=_p('aside.avatar'), src=theme.aside.card.author.img)
|
||||
if theme.aside.card.author.sticker
|
||||
.avatar-sticker
|
||||
img.avatar-sticker-img(src=theme.aside.card.author.sticker, alt=_p('aside.sticker'))
|
||||
.author-info__description_group
|
||||
.author-info__description!= theme.aside.card.content
|
||||
.author-info__description2!= theme.aside.card.content2
|
||||
.author-info__bottom-group
|
||||
a.author-info__bottom-group-left(href=url_for(theme.aside.card.url))
|
||||
.author-info__name= config.author
|
||||
.author-info__desc!= config.subtitle
|
||||
.card-info-social-icons.is-center
|
||||
each value, label in theme.aside.card.information || {}
|
||||
- var array = value.split('||')
|
||||
a.social-icon(href=url_for(trim(array[0])), title=label)
|
||||
i.solitude(class=array[1])
|
||||
when 1
|
||||
.card-info-bg-top
|
||||
.is-center
|
||||
.author-info__top-group
|
||||
.author-info__sayhi#author-info__sayhi(onclick="sco.changeSayHelloText()")= _p('sayhello.morning')
|
||||
a.card-info-avatar(href=url_for(theme.aside.card.url) title=_p('aside.avatar'))
|
||||
.avatar-img
|
||||
img(src=theme.aside.card.author.img alt=_p('aside.avatar'))
|
||||
if theme.aside.card.author.sticker
|
||||
.avatar-sticker
|
||||
img.avatar-sticker-img(src=theme.aside.card.author.sticker, alt=_p('aside.sticker'))
|
||||
.card-info__desc_group
|
||||
.author-info__name= config.author
|
||||
.author-info__desc!= config.subtitle
|
||||
|
||||
.card-info__data.is-center
|
||||
a(href=url_for('/archives/') title=_p('aside.card.posts') + site.posts.length)
|
||||
.length-num= site.posts.length
|
||||
.headline= _p('page.archives')
|
||||
a(href=url_for('/tags/') title=_p('aside.card.tags') + site.tags.length)
|
||||
.length-num= site.tags.length
|
||||
.headline= _p('page.tag')
|
||||
a(href=url_for('/categories/') title=_p('aside.card.categories') + site.categories.length)
|
||||
.length-num= site.categories.length
|
||||
.headline= _p('page.category')
|
||||
|
||||
.card-info-social-icons.is-center
|
||||
each value, label in theme.aside.card.information || {}
|
||||
- var array = value.split('||')
|
||||
a.social-icon(href=url_for(trim(array[0])), title=label)
|
||||
i.solitude(class=array[1])
|
||||
when 2
|
||||
.card-info-bg-top
|
||||
.author-info-social
|
||||
.social-icons
|
||||
each value, label in theme.aside.card.information || {}
|
||||
- var array = value.split('||')
|
||||
a.social-icon(href=url_for(trim(array[0])), title=label)
|
||||
i.solitude(class=array[1])
|
||||
span.more-info(onclick="document.querySelector('.social-icons').classList.toggle('show')")
|
||||
i.solitude.st-more-2-fill
|
||||
a.card-info-avatar(href=url_for(theme.aside.card.url) title=_p('aside.avatar'))
|
||||
.avatar-img
|
||||
img(src=theme.aside.card.author.img alt=_p('aside.avatar'))
|
||||
if theme.aside.card.author.sticker
|
||||
.avatar-sticker
|
||||
img.avatar-sticker-img(src=theme.aside.card.author.sticker, alt=_p('aside.sticker'))
|
||||
.author-info__name= config.author
|
||||
.card-info__data.is-center
|
||||
a(href=url_for('/archives/') title=_p('aside.card.posts') + site.posts.length)
|
||||
.length-num= site.posts.length
|
||||
.headline= _p('page.archives')
|
||||
a(href=url_for('/tags/') title=_p('aside.card.tags') + site.tags.length)
|
||||
.length-num= site.tags.length
|
||||
.headline= _p('page.tag')
|
||||
a(href=url_for('/categories/') title=_p('aside.card.categories') + site.categories.length)
|
||||
.length-num= site.categories.length
|
||||
.headline= _p('page.category')
|
||||
.card-info__desc_group
|
||||
.author-info__description!= theme.aside.card.content
|
||||
.author-info__description2!= theme.aside.card.content2
|
||||
@@ -0,0 +1,16 @@
|
||||
.card-widget.card-recent-post
|
||||
.item-headline
|
||||
i.solitude.st-map-line
|
||||
span= _p('aside.newpost')
|
||||
.aside-list
|
||||
- let index = 1
|
||||
each post in site.posts.data.sort((a, b) => b.date < a.date ? -1 : 1)
|
||||
if index <= 5
|
||||
.aside-list-item
|
||||
a.thumbnail(href=url_for(post.path) title=post.title)
|
||||
img(alt=post.title src=post.cover)
|
||||
.content
|
||||
a.title(href=url_for(post.path) title=post.title)= post.title
|
||||
if post.categories.data[0]
|
||||
a.article-recent_post_categories(href=url_for(post.path))= post.categories.data[0].name
|
||||
- index++
|
||||
@@ -0,0 +1,9 @@
|
||||
.card-widget.card-recent-comment
|
||||
.item-headline
|
||||
i.solitude.st-chat-fill
|
||||
span= _p('aside.newcomment')
|
||||
if theme.recent_comments.enable
|
||||
a.recent-comment-more(href=url_for(theme.recent_comments.page) title=_p('console.recent_comment_more'))
|
||||
i.solitude.st-right-btn-fill
|
||||
.aside-list
|
||||
include ../third-party/news-comment/newest-comment.pug
|
||||
@@ -0,0 +1,19 @@
|
||||
case item
|
||||
when 'about'
|
||||
include ./asideInfoCard.pug
|
||||
when 'flip'
|
||||
include ./asideFlipCard.pug
|
||||
when 'newestPost'
|
||||
include ./asideNewestPost.pug
|
||||
when 'allInfo'
|
||||
include ./asideAllInfo.pug
|
||||
when 'ads'
|
||||
include ./asideAdsense.pug
|
||||
when 'newest_comment'
|
||||
include ./asideNewstComments.pug
|
||||
default
|
||||
- const custom = site.data?.aside?.find((i) => i.name === item)
|
||||
if custom
|
||||
include ./asideCustom.pug
|
||||
else
|
||||
include ../../page/default.pug
|
||||
@@ -0,0 +1,16 @@
|
||||
- const highlight = theme.aside.tags.highlight_list || []
|
||||
.card-tag-cloud
|
||||
each tag in site.tags.find({ parent: { $exists: false } }).data
|
||||
if highlight.includes(tag.name)
|
||||
a.highlight(href=url_for(tag.path))= tag.name
|
||||
sup= tag.length
|
||||
else
|
||||
a(href=url_for(tag.path))= tag.name
|
||||
sup= tag.length
|
||||
if site.tags.length >= theme.aside.tags.limit
|
||||
span#more-tags-btn(onclick="sco.openAllTags()")= __('aside.tagmore')
|
||||
else
|
||||
style.
|
||||
.card-tag-cloud::after {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
.card-widget#card-toc
|
||||
.item-headline
|
||||
i.solitude.st-menu-line
|
||||
span= __('aside.toc')
|
||||
.toc-content#toc-content!= toc(page.content, { list_number: false })
|
||||
@@ -0,0 +1,48 @@
|
||||
.webinfo
|
||||
if theme.aside.siteinfo.postcount
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-folder-fill
|
||||
.item-name= __('aside.postcount')
|
||||
.item-count= site.posts.length
|
||||
if theme.busuanzi
|
||||
if theme.aside.siteinfo.pv
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-visitor-line
|
||||
.item-name= __('aside.pv')
|
||||
if theme.busuanzi_use === 0
|
||||
span#busuanzi_value_site_pv
|
||||
i.solitude.st-loading-line
|
||||
else
|
||||
span#busuanzi_site_pv
|
||||
i.solitude.st-loading-line
|
||||
if theme.aside.siteinfo.uv
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-team-fill
|
||||
.item-name= __('aside.uv')
|
||||
if theme.busuanzi_use === 0
|
||||
span#busuanzi_value_site_uv
|
||||
i.solitude.st-loading-line
|
||||
else
|
||||
span#busuanzi_site_uv
|
||||
i.solitude.st-loading-line
|
||||
if theme.aside.siteinfo.runtimeenable
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-calendar-todo-fill
|
||||
.item-name= __('aside.runtime')
|
||||
.item-count#runtimeshow
|
||||
if theme.aside.siteinfo.updatetime
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-loop-left-fill
|
||||
.item-name= __('aside.updatetime')
|
||||
time.item-count(datetime=new Date())
|
||||
if theme.wordcount && theme.aside.siteinfo.wordcount
|
||||
.webinfo-item
|
||||
.webinfo-item-title
|
||||
i.item-icon.solitude.st-word-fill
|
||||
.item-name= __('aside.wordcount')
|
||||
.item-count= totalcount(site)
|
||||
@@ -0,0 +1,23 @@
|
||||
div.banners-title
|
||||
div.banners-title-big!= theme.hometop.banner.title
|
||||
div.banners-title-small= theme.hometop.banner.url
|
||||
- var group = theme.hometop.group
|
||||
if group
|
||||
div.banners-links
|
||||
each value,label in group
|
||||
- var array = value.split('||')
|
||||
a.banners-link-btn(href=url_for(trim(array[0])) style=`background-image: ${array[2]} `)
|
||||
if array[1]
|
||||
i.solitude(class=array[1])
|
||||
.banners-link-title= label
|
||||
|
||||
div.tags-group-all
|
||||
.tags-group-wrapper
|
||||
each i in [1,2]
|
||||
- var keys = Object.keys(theme.hometop.banner.icon)
|
||||
- var pairs = keys.map((val, i) => i % 2 ? [keys[i - 1], val] : []).filter(x => x.length)
|
||||
each pair in pairs
|
||||
.tags-group-icon-pair
|
||||
each key in pair
|
||||
.tags-group-icon(style=`background: ${theme.hometop.banner.icon[key].color}`)
|
||||
img.nolazyload(src=theme.hometop.banner.icon[key].img, title=key)
|
||||
@@ -0,0 +1,18 @@
|
||||
.bbTimeList.container#bbTimeList(class=is_home_first_page() ? '' : 'more-page')
|
||||
i.bber-logo.solitude.st-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
|
||||
each item, i in site.data.essay.essay_list.slice(0, 10)
|
||||
.li-style.swiper-slide
|
||||
| #{item.content}
|
||||
if item.image
|
||||
i.solitude.st-image-fill
|
||||
else if item.aplayer
|
||||
i.solitude.st-disc-fill
|
||||
else if item.video
|
||||
i.solitude.st-video-fill
|
||||
else if item.bilibili
|
||||
i.solitude.st-bilibili-line
|
||||
else if item.link
|
||||
i.solitude.st-links
|
||||
i.bber-gotobb.solitude.st-right-btn-fill(title=_p('home.bbtime.text') onclick=`pjax.loadUrl('/essay/')`)
|
||||
@@ -0,0 +1,72 @@
|
||||
- let recommends = site.posts.data.filter(item => item.recommend === true).slice(0,6) || false
|
||||
|
||||
if recommends
|
||||
.recent-post-item#swiperBox
|
||||
div.blog-slider.swiper-container-fade.swiper-container-horizontal#swiper_container
|
||||
.blog-slider__wrp.swiper-wrapper
|
||||
each item,index in recommends
|
||||
.blog-slider__item.swiper-slide(onclick="pjax.loadUrl('"+item.path+"')")
|
||||
.blog-slider__img
|
||||
img(src=item.cover, alt=item.title)
|
||||
.blog-slider__content
|
||||
span.blog-slider__title=item.title
|
||||
case theme.index_post_list.content
|
||||
when false
|
||||
break
|
||||
when 1
|
||||
span.blog-slider__desc= item.description
|
||||
when 2
|
||||
if item.description
|
||||
span.blog-slider__desc= item.description
|
||||
else
|
||||
- const content = strip_html(item.content)
|
||||
- let expert = content.substring(0, theme.index_post_list.length).replace(/\d+/g, '').replace(//g, '').replace(/&#x/g, '')
|
||||
- content.length > theme.index_post_list.length ? expert += ' ...' : ''
|
||||
.span.blog-slider__desc= expert
|
||||
default
|
||||
- const content = strip_html(item.content)
|
||||
- let expert = content.substring(0, theme.index_post_list.length).replace(/\d+/g, '').replace(//g, '').replace(/&#x/g, '')
|
||||
- content.length > theme.index_post_list.length ? expert += ' ...' : ''
|
||||
.span.blog-slider__desc= expert
|
||||
div.article-meta-wrap
|
||||
span.article-meta.tags
|
||||
each tag in item.tags.data
|
||||
a.article-meta__tags(href=url_for(tag.path), onclick="event.stopPropagation();")
|
||||
span.tags-punctuation=tag.name
|
||||
span.post-meta-date
|
||||
time(datetime=moment(item.date))
|
||||
.blog-slider__pagination.swiper-pagination-clickable.swiper-pagination-bullets
|
||||
|
||||
script.
|
||||
function carousel_swiper() {
|
||||
let e = new Swiper(".blog-slider", {
|
||||
direction: "vertical",
|
||||
passiveListeners: true,
|
||||
loop: true,
|
||||
autoplay: {
|
||||
disableOnInteraction: true,
|
||||
delay: 5e3
|
||||
},
|
||||
pagination: {
|
||||
el: ".blog-slider__pagination",
|
||||
clickable: true
|
||||
},
|
||||
effect: 'fade',
|
||||
fadeEffect: {
|
||||
crossFade: true
|
||||
},
|
||||
passiveListeners: true,
|
||||
spaceBetween: 30,
|
||||
watchSlidesProgress: true,
|
||||
mousewheel: true
|
||||
})
|
||||
, t = document.getElementById("swiper_container");
|
||||
null !== t && (t.onmouseenter = () => {
|
||||
e.autoplay.stop()
|
||||
}
|
||||
,
|
||||
t.onmouseleave = () => {
|
||||
e.autoplay.start()
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
.category-bar-items#category-bar-items(class=is_home() ? 'home' : '')
|
||||
.category-bar-item(class=is_home() ? 'select' : '', id="category-bar-home")
|
||||
a(href=url_for('/'))= __('home.home')
|
||||
.category-bar-item
|
||||
a(href=url_for('/archives/'))= __('home.archives')
|
||||
each item in site.categories.find({ parent: { $exists: false } }).data
|
||||
.category-bar-item(class=select ? (select === item.name ? 'select' : '') : '', id=item.name)
|
||||
a(href=url_for(item.path))= item.name
|
||||
div.category-bar-right
|
||||
- let categories = site.categories.find({parent: {$exists: false}})
|
||||
- let wordcount = categories.map(category => category.name).join('').length
|
||||
if wordcount > 40 || categories.data.length > 10
|
||||
.category-bar-next#category-bar-next(onclick="sco.scrollCategoryBarToRight()")
|
||||
i.solitude.st-show-right-line
|
||||
a.category-bar-more(href=url_for('/categories/'))= __('more')
|
||||
@@ -0,0 +1,7 @@
|
||||
.recent-top-post-group#recent-top-post-group
|
||||
.recent-post-top#recent-post-top
|
||||
#bannerGroup
|
||||
#banners
|
||||
include ./banner.pug
|
||||
.topGroup
|
||||
include ./topGroup.pug
|
||||
@@ -0,0 +1,81 @@
|
||||
mixin cover
|
||||
a(href=url_for(post.path), title=post.title)
|
||||
img.post_bg(src=url_for(post.cover), alt=post.title)
|
||||
|
||||
mixin info
|
||||
div.recent-post-info-top
|
||||
div.recent-post-info-top-tips
|
||||
if post.sticky && is_home()
|
||||
span.article-meta.sticky-warp
|
||||
i.solitude.st-thumbtack-solid.sticky.orange
|
||||
span.sticky.orange= _p('home.sticky')
|
||||
each category in post.categories.data
|
||||
span.original= category.name
|
||||
|
||||
if post.prev == null && is_home()
|
||||
span.original= _p('home.new')
|
||||
|
||||
a.unvisited-post(href=url_for(post.path))= _p('home.read')
|
||||
|
||||
a.article-title(href=url_for(post.path), title=post.title)= post.title
|
||||
|
||||
case theme.index_post_list.content
|
||||
when false
|
||||
break
|
||||
when 1
|
||||
.content!= post.description
|
||||
when 2
|
||||
if post.description
|
||||
.content!= post.description
|
||||
else
|
||||
- const content = strip_html(post.content)
|
||||
- let expert = content.substring(0, theme.index_post_list.length).replace(/\d+/g, '').replace(//g, '').replace(/&#x/g, '')
|
||||
- content.length > theme.index_post_list.length ? expert += ' ...' : ''
|
||||
.content!= expert
|
||||
default
|
||||
- const content = strip_html(post.content)
|
||||
- let expert = content.substring(0, theme.index_post_list.length).replace(/\d+/g, '').replace(//g, '').replace(/&#x/g, '')
|
||||
- content.length > theme.index_post_list.length ? expert += ' ...' : ''
|
||||
.content!= expert
|
||||
|
||||
div.article-meta-wrap
|
||||
span.article-meta.tags
|
||||
each tag in post.tags.data
|
||||
a.article-meta__tags(href=url_for(tag.path), onclick="event.stopPropagation();")
|
||||
span.tags-punctuation=tag.name
|
||||
|
||||
span.post-meta-date
|
||||
time(datetime=moment(post.date))
|
||||
|
||||
- const { direction, cover } = theme.index_post_list
|
||||
|
||||
if direction === 'row'
|
||||
- var position = cover === 'both' ? index % 2 === 0 ? 0 : 1 : cover === 'left' ? 0 : 1
|
||||
|
||||
div.recent-post-item(onclick="pjax.loadUrl('" + url_for(post.path) + "')")
|
||||
if direction === 'column'
|
||||
div.post_cover
|
||||
+cover()
|
||||
div.recent-post-info
|
||||
+info()
|
||||
else
|
||||
case position
|
||||
when 0
|
||||
div.post_cover
|
||||
+cover()
|
||||
div.recent-post-info
|
||||
+info()
|
||||
when 1
|
||||
div.recent-post-info
|
||||
+info()
|
||||
div.post_cover
|
||||
+cover()
|
||||
|
||||
|
||||
if theme.google_adsense && theme.google_adsense.enable && theme.google_adsense.auto_ads === false && theme.google_adsense.post_card
|
||||
- var ads_height = theme.index_post_list.direction === 'column' ? '401px;' : '280px;'
|
||||
if (index + 1) % 3 === 0
|
||||
div.recent-post-item.google-ads-warp
|
||||
ins.adsbygoogle(style="display:block; text-align:center; min-width: 100%; height:" + ads_height, data-ad-layout="in-article", data-ad-format="fluid", hide-unfilled="true", data-ad-client=theme.google_adsense.client, data-ad-slot=theme.google_adsense.slot)
|
||||
script.
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
@@ -0,0 +1,32 @@
|
||||
- var filteredPosts = site.posts.data.filter(item => item.recommend === true).slice(0,6)
|
||||
.recent-post-group
|
||||
each post in filteredPosts
|
||||
.recent-post-item
|
||||
.post_cover
|
||||
a(href=url_for(post.path), title=post.title)
|
||||
span.recent-post-top-text= _p('home.recommend')
|
||||
img.post_bg(alt=post.title, src=post.cover)
|
||||
.recent-post-info
|
||||
a.article-title(href=url_for(post.path), title=post.title)= post.title
|
||||
|
||||
mixin todayCardContent
|
||||
.todayCard-info
|
||||
.todayCard-tips= theme.hometop.recommendList.sup
|
||||
.todayCard-title= theme.hometop.recommendList.title
|
||||
.todayCard-cover.nolazyload(style=`background: url('${theme.hometop.recommendList.img}') no-repeat center /cover`)
|
||||
.banner-button-group
|
||||
a.banner-button(onclick="window.event.cancelBubble=true;sco.hideTodayCard();")
|
||||
i.solitude.st-add-fill
|
||||
span.banner-button-text= _p('home.recommendmore')
|
||||
|
||||
case theme.hometop.recommendList.url.startsWith('/')
|
||||
when true
|
||||
.todayCard#todayCard(onclick=`pjax.loadUrl('${theme.hometop.recommendList.url}')`)
|
||||
+todayCardContent()
|
||||
when false
|
||||
script.
|
||||
function GoTodayCard() {
|
||||
window.open("#{theme.hometop.recommendList.url}", "_blank");
|
||||
}
|
||||
.todayCard#todayCard(onclick="GoTodayCard()")
|
||||
+todayCardContent()
|
||||
@@ -0,0 +1,13 @@
|
||||
- var menu = theme.nav.group
|
||||
if menu
|
||||
.back-menu-list-groups
|
||||
each value, label in menu
|
||||
.back-menu-list-group
|
||||
.back-menu-list-title= label
|
||||
.back-menu-list
|
||||
each data, label in value
|
||||
- var array = data.split('||')
|
||||
a.back-menu-item(href=url_for(trim(array[0])), title=label)
|
||||
if array[1]
|
||||
img.nolazyload.back-menu-item-icon(src=trim(array[1]), alt=label)
|
||||
span.back-menu-item-text= label
|
||||
@@ -0,0 +1,20 @@
|
||||
- var menu = theme.nav.menu
|
||||
|
||||
if menu
|
||||
.menus_items
|
||||
each value, label in menu
|
||||
.menus_item
|
||||
if typeof value !== 'object'
|
||||
a.site-page(href=url_for(value))
|
||||
span= label
|
||||
else
|
||||
a.site-page(href="javascript:void(0);")
|
||||
span= label
|
||||
ul.menus_item_child
|
||||
each childValue, childLabel in value
|
||||
li
|
||||
- var array = childValue.split('||')
|
||||
a.site-page.child(href=url_for(trim(array[0])))
|
||||
if array[1]
|
||||
i.solitude(class=array[1])
|
||||
span= childLabel
|
||||
@@ -0,0 +1,24 @@
|
||||
- var custom = theme.nav.right.custom || []
|
||||
each item in custom
|
||||
.nav-button(id=item.id)
|
||||
a.site-page(href=url_for(item.url) || 'javascript:void(0);', onclick=item.onclick, title=item.title || '')
|
||||
i.solitude(class=item.icon || '')
|
||||
if theme.nav.right.random
|
||||
.nav-button#randomPost_button
|
||||
a.site-page(onclick="toRandomPost()", title=_p('nav.randompost'), href="javascript:void(0);")
|
||||
i.solitude.st-dice-line
|
||||
if theme.search.enable
|
||||
.nav-button#search-button
|
||||
a.site-page.social-icon.search(href="javascript:void(0);", title=_p('nav.search'))
|
||||
i.solitude.st-search-line
|
||||
if theme.nav.right.console
|
||||
.nav-button#nav-console
|
||||
a.console_switchbutton(onclick="sco.showConsole()", title=_p('nav.console'), href="javascript:void(0);")
|
||||
i.solitude.st-dashboard-fill
|
||||
.nav-button#nav-totop(onclick="sco.toTop()")
|
||||
a.totopbtn
|
||||
i.solitude.st-arrow-up-line
|
||||
span#percent= "0"
|
||||
#toggle-menu
|
||||
a.site-page
|
||||
i.solitude.st-menu-line
|
||||
@@ -0,0 +1,13 @@
|
||||
- const authorinfo = site.data.about.authorinfo
|
||||
|
||||
if authorinfo
|
||||
.author-info
|
||||
.author-tag-left
|
||||
each tag in authorinfo.leftTags
|
||||
span.author-tag= tag
|
||||
.author-img
|
||||
img(src=authorinfo.image)
|
||||
.author-tag-right
|
||||
each tag in authorinfo.rightTags
|
||||
span.author-tag= tag
|
||||
.author-title= site.data.about.title
|
||||
@@ -0,0 +1,39 @@
|
||||
- award = site.data.about.award
|
||||
|
||||
- var sum = 0
|
||||
if site.data.about.rewardList
|
||||
.author-content
|
||||
.author-content-item.single.reward
|
||||
.author-content-item-tips= _p('award.thanks')
|
||||
span.author-content-item-title= _p('award.title')
|
||||
.author-content-item-description
|
||||
!= award.description
|
||||
.reward-list-all
|
||||
each reward in site.data.about.rewardList
|
||||
- sum += reward.money
|
||||
.reward-list-item
|
||||
.reward-list-item-name= reward.name
|
||||
.reward-list-bottom-group
|
||||
.reward-list-item-money(style=(reward.vip ? "background: var(--efu-vip);color: var(--efu-white)" : ""))
|
||||
if reward.icon
|
||||
i.solitude(class=reward.icon)
|
||||
| ¥ #{reward.money}
|
||||
time.datatime.reward-list-item-time(datetime=moment(reward.time).format())
|
||||
if theme.post.award.enable
|
||||
.post-reward
|
||||
.post-reward(onclick="AddRewardMask()")
|
||||
.reward-button(title=_p('award.tipping'))
|
||||
i.solitude.st-hand-heart-fill
|
||||
= _p('award.tipping')
|
||||
.reward-main
|
||||
ul.reward-all
|
||||
span.reward-title= theme.post.award.title
|
||||
ul.reward-group
|
||||
- var rewards = theme.post.award.list
|
||||
each reward in rewards
|
||||
li.reward-item
|
||||
a(href=url_for(reward.url))
|
||||
img.post-qr-code-img(alt=reward.name, src=reward.qcode, style="border-color:" + reward.color)
|
||||
.post-qr-code-desc= reward.name
|
||||
.reward-list-tips
|
||||
p= award.tips.replace('{sum}', sum.toFixed(2))
|
||||
@@ -0,0 +1,39 @@
|
||||
- const contentinfo = site.data.about.contentinfo
|
||||
|
||||
if contentinfo
|
||||
.author-content
|
||||
.author-content-item.myInfoAndSayHello
|
||||
.title1= contentinfo.sup
|
||||
.title2
|
||||
span.inline-word= contentinfo.name
|
||||
.title1= contentinfo.title
|
||||
.aboutsiteTips.author-content-item
|
||||
.author-content-item-tips= contentinfo.tip
|
||||
h2
|
||||
span.inline-word!= contentinfo.slogan
|
||||
.mask
|
||||
each item,index in contentinfo.mask
|
||||
if index === 0
|
||||
span.first-tips(data-show='')= item
|
||||
else if index === contentinfo.mask.length - 1
|
||||
span(data-up='')= item
|
||||
else
|
||||
span= item
|
||||
|
||||
script.
|
||||
var pursuitInterval = null;
|
||||
pursuitInterval = setInterval(function () {
|
||||
const show = document.querySelector('span[data-show]')
|
||||
const next = show.nextElementSibling || document.querySelector('.first-tips')
|
||||
const up = document.querySelector('span[data-up]')
|
||||
if (up) {
|
||||
up.removeAttribute('data-up')
|
||||
}
|
||||
show.removeAttribute('data-show')
|
||||
show.setAttribute('data-up', '')
|
||||
next.setAttribute('data-show', '')
|
||||
}, 2000)
|
||||
|
||||
document.addEventListener('pjax:send', function () {
|
||||
clearInterval(pursuitInterval);
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
- var game1 = site.data.about.game1
|
||||
- var game2 = site.data.about.game2
|
||||
|
||||
if game1 || game2
|
||||
.author-content
|
||||
if game1
|
||||
.author-content-item.game-apex(style=`background: url(${game1.img}) no-repeat top; background-size: cover;`)
|
||||
.card-content
|
||||
.author-content-item-tips= game1.title
|
||||
span.author-content-item-title= game1.subtitle
|
||||
.content-bottom
|
||||
.tips= game1.tips_left
|
||||
.tips= game1.tips_right
|
||||
if game2
|
||||
.author-content-item.game-jl(style=`background: url(${game2.img}) no-repeat top; background-size: cover;`)
|
||||
.card-content
|
||||
.author-content-item-tips= game2.title
|
||||
span.author-content-item-title= game2.subtitle
|
||||
.content-bottom
|
||||
.tips= game2.tips_left
|
||||
.tips= game2.tips_right
|
||||
|
||||
if site.data.about.likes
|
||||
- const likes = site.data.about.likes
|
||||
.author-content
|
||||
each like in likes
|
||||
.author-content-item(class=like.type, style=`background: url(${like.bg}) no-repeat center;`)
|
||||
.card-content
|
||||
.author-content-item-tips= like.tips
|
||||
span.author-content-item-title= like.title
|
||||
.content-bottom
|
||||
.tips= like.subtips
|
||||
if like.button
|
||||
.banner-button-group
|
||||
a.banner-button(href=url_for(like.button_link))
|
||||
i.solitude.st-right-btn-fill
|
||||
span.banner-button-text= like.button_text
|
||||
@@ -0,0 +1,22 @@
|
||||
- const motto = site.data.about.motto
|
||||
- const expertise = site.data.about.expertise
|
||||
|
||||
if motto || expertise
|
||||
.author-content
|
||||
if motto
|
||||
.author-content-item.maxim
|
||||
.author-content-item-tips= motto.title
|
||||
span.maxim-title
|
||||
span= motto.prefix
|
||||
span= motto.content
|
||||
if expertise
|
||||
.author-content-item.buff
|
||||
.card-content
|
||||
.author-content-item-tips= expertise.title
|
||||
span.buff-title
|
||||
span
|
||||
| #{expertise.prefix}
|
||||
span.inline-word= expertise.specialist
|
||||
span
|
||||
| #{expertise.content}
|
||||
span.inline-word= expertise.level
|
||||
@@ -0,0 +1,89 @@
|
||||
- var tj = site.data.about.tj
|
||||
- var oneself = site.data.about.oneself
|
||||
|
||||
if tj || oneself
|
||||
.author-content
|
||||
if tj
|
||||
.about-statistic.author-content-item(style=`background: url(${tj.img});`)
|
||||
.card-content
|
||||
.author-content-item-tips=_p('about.other.tj.tip')
|
||||
span.author-content-item-title=_p('about.other.tj.title')
|
||||
#statistic
|
||||
.post-tips
|
||||
= _p('about.other.tj.post_tip')
|
||||
case tj.provider
|
||||
when '51la'
|
||||
a(href="https://v6.51.la/") 51la网站统计
|
||||
when 'baidu'
|
||||
a(href="https://tongji.baidu.com/") 百度统计
|
||||
if tj.button
|
||||
.banner-button-group
|
||||
a.banner-button(href=url_for(tj.button_link))
|
||||
i.solitude.st-right-btn-fill
|
||||
span.banner-button-text= tj.button_text
|
||||
|
||||
case tj.provider
|
||||
when '51la'
|
||||
script.
|
||||
fetch("#{tj.url}")
|
||||
.then(res => res.text())
|
||||
.then(data => {
|
||||
const title = ["最近活跃", "今日人数", "今日访问", "昨日人数", "昨日访问", "本月访问", "总访问量"];
|
||||
let num = data.match(/(<\/span><span>).*?(\/span><\/p>)/g);
|
||||
num = num.map(el => {
|
||||
let val = el.replace(/(<\/span><span>)/g, "");
|
||||
return val.replace(/(<\/span><\/p>)/g, "");
|
||||
});
|
||||
const s = document.getElementById("statistic");
|
||||
let html = '';
|
||||
for (let i = 0; i < num.length; i++) {
|
||||
if (i === 0 || i === num.length - 1) continue;
|
||||
html += `<div><span>${title[i]}</span><span id="${title[i]}">${num[i]}</span></div>`;
|
||||
}
|
||||
s.innerHTML = html;
|
||||
});
|
||||
when 'baidu'
|
||||
script.
|
||||
fetch("#{tj.url}")
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
const title = {"today_uv": "今日人数", "today_pv": "今日访问", "yesterday_uv": "昨日人数", "yesterday_pv": "昨日访问", "last_month_pv": "最近月访问", "last_year_pv": "最近年访问"};
|
||||
|
||||
let s = document.getElementById("statistic");
|
||||
|
||||
for (let key in data) {
|
||||
if (data.hasOwnProperty(key) && title[key]) {
|
||||
s.innerHTML += `<div><span>${title[key]}</span><span id="${key}">${data[key]}</span></div>`;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if oneself
|
||||
style.
|
||||
:root {
|
||||
--site-about-oneself-map--light: url(#{oneself.map.light});
|
||||
--site-about-oneself-map--dark: url(#{oneself.map.dark});
|
||||
}
|
||||
.author-content-item-group.column.mapAndInfo
|
||||
.author-content-item.map.single
|
||||
span.map-title=_p('about.other.oneself.map_title') + oneself.location
|
||||
.author-content-item.selfInfo.single
|
||||
div
|
||||
span.selfInfo-title=_p('about.other.oneself.info_title1')
|
||||
span.selfInfo-content(style="color: #43a6c6;")= oneself.birthYear
|
||||
div
|
||||
span.selfInfo-title= oneself.university
|
||||
span.selfInfo-content(style="color: #c69043;")= oneself.major
|
||||
div
|
||||
span.selfInfo-title=_p('about.other.oneself.info_title2')
|
||||
span.selfInfo-content(style="color: #b04fe6;")= oneself.occupation
|
||||
|
||||
- var cause = site.data.about.cause
|
||||
|
||||
if cause
|
||||
.author-content
|
||||
.create-site-post.author-content-item.single
|
||||
.author-content-item-tips= cause.tip
|
||||
span.author-content-item-title= cause.title
|
||||
!= cause.content
|
||||
@@ -0,0 +1,17 @@
|
||||
- const personalities = site.data.about.personalities
|
||||
|
||||
if personalities
|
||||
.author-content
|
||||
.author-content-item.personalities
|
||||
.author-content-item-tips= personalities.tips
|
||||
span.author-content-item-title= personalities.title
|
||||
.title2(style=`color:${personalities.color}`)= personalities.type
|
||||
.image
|
||||
img.nolazyload(src=personalities.image)
|
||||
.post-tips
|
||||
= _p('about.personalities.tip1') + ' '
|
||||
a(href='https://www.16personalities.com/')= personalities.linkText + ' '
|
||||
= _p('about.personalities.tip2') + ' '
|
||||
a(href=personalities.typeLink)= personalities.typeName
|
||||
.author-content-item.myphoto
|
||||
img.author-content-img(src=personalities.myphoto, alt="my photo")
|
||||
@@ -0,0 +1,42 @@
|
||||
- var skills = site.data.about.skills
|
||||
- var careers = site.data.about.careers
|
||||
|
||||
if skills || careers
|
||||
.author-content
|
||||
if skills
|
||||
.author-content-item.skills
|
||||
.card-content
|
||||
.author-content-item-tips= skills.title
|
||||
span.author-content-item-title= skills.subtitle
|
||||
.skills-style-group
|
||||
.tags-group-all
|
||||
.tags-group-wrapper
|
||||
each i in [1,2]
|
||||
- var pair = []
|
||||
each tag, index in skills.tags
|
||||
- pair.push(tag)
|
||||
if pair.length === 2 || index === skills.tags.length - 1
|
||||
.tags-group-icon-pair
|
||||
each item in pair
|
||||
.tags-group-icon(style=`background:${item.color}`)
|
||||
img(src=item.icon, title=item.title)
|
||||
- pair = []
|
||||
.skills-list
|
||||
each tag in skills.tags
|
||||
.skill-info
|
||||
.skill-icon(style=`background:${tag.color}`)
|
||||
img(src=tag.icon, title=tag.title)
|
||||
.skill-name
|
||||
span= tag.title
|
||||
.etc ...
|
||||
if careers
|
||||
.author-content-item.careers
|
||||
.card-content
|
||||
.author-content-item-tips= careers.title
|
||||
span.author-content-item-title= careers.subtitle
|
||||
.careers-group
|
||||
each item in careers.items
|
||||
.careers-item
|
||||
.circle(style=`background:${item.color}`)
|
||||
.name= `${item.school}, ${item.major}`
|
||||
img.author-content-img(src=careers.image, alt=careers.title)
|
||||
@@ -0,0 +1,48 @@
|
||||
- var tenyear = site.data.about.tenyear
|
||||
if tenyear
|
||||
.author-content#tenyear
|
||||
.create-site-post.author-content-item.single
|
||||
.author-content-item-tips=tenyear.tips
|
||||
.author-content-item-title=tenyear.title
|
||||
p=tenyear.text
|
||||
.tenyear-timeline
|
||||
.progress
|
||||
.past-time
|
||||
.percentage-label
|
||||
.time-labels
|
||||
.start-time#tenyear-start-time= tenyear.start
|
||||
.end-time#tenyear-end-time= tenyear.end
|
||||
|
||||
script.
|
||||
function parseDateString(e) {
|
||||
return e.replace(/年|月/g, '-').replace(/日/g, '');
|
||||
}
|
||||
|
||||
function tenYear() {
|
||||
let progressElement = document.querySelector(".progress");
|
||||
let pastTimeElement = document.querySelector(".past-time");
|
||||
let percentageLabelElement = document.querySelector(".percentage-label");
|
||||
let startTimeElement = document.getElementById("tenyear-start-time");
|
||||
let endTimeElement = document.getElementById("tenyear-end-time");
|
||||
|
||||
let startTime = new Date(parseDateString(startTimeElement.textContent)).getTime();
|
||||
let endTime = new Date(parseDateString(endTimeElement.textContent)).getTime();
|
||||
|
||||
function updateProgress() {
|
||||
let currentTime = new Date().getTime();
|
||||
let progress = ((currentTime - startTime) / (endTime - startTime) * 100);
|
||||
let progressPercentage = progress <= 100 ? progress + "%" : "100%";
|
||||
|
||||
pastTimeElement.style.setProperty("--past-time-percentage", progress + "%");
|
||||
progressElement.style.setProperty("--progress-percentage", progressPercentage);
|
||||
if(progress > 5){
|
||||
percentageLabelElement.textContent = `${progress.toFixed(0)}%`;
|
||||
percentageLabelElement.style.left = `calc(${progress}% - 35px)`;
|
||||
}
|
||||
}
|
||||
|
||||
percentageLabelElement.style.visibility = "visible";
|
||||
updateProgress();
|
||||
}
|
||||
|
||||
document.getElementById("tenyear") && tenYear() && window.Pjax.on('complete', tenYear)
|
||||
@@ -0,0 +1,15 @@
|
||||
.author-content.author-content-item.single.sharePage(style=`background: url(${page.cover}) no-repeat center; background-size: cover;`)
|
||||
.card-content
|
||||
.author-content-item-tips= page.desc
|
||||
span.author-content-item-title= page.title
|
||||
.content-bottom
|
||||
if page.leftend
|
||||
.tips= page.leftend
|
||||
if page.rightend
|
||||
.tips= page.rightend
|
||||
if page.rightbtn
|
||||
.banner-button-group
|
||||
- const isInternalLink = page.rightbtnlink.startsWith('/')
|
||||
a.banner-button(onclick=isInternalLink ? `pjax.loadUrl("${page.rightbtnlink}")`: null, href=isInternalLink ? null : url_for(page.rightbtnlink), target=isInternalLink ? null : "_blank")
|
||||
i.solitude.st-right-btn-fill
|
||||
span.banner-button-text= page.rightbtn
|
||||
@@ -0,0 +1,23 @@
|
||||
#equipment
|
||||
if site.data.equipment
|
||||
each i in site.data.equipment
|
||||
.equipment-item
|
||||
h2.equipment-item-title= i.class_name
|
||||
.equipment-item-description= i.description
|
||||
.equipment-item-content
|
||||
each item in i.equipment_list
|
||||
.equipment-item-content-item
|
||||
.equipment-item-content-item-cover
|
||||
img.equipment-item-content-item-image(src=item.image, alt=item.name)
|
||||
.equipment-item-content-item-info
|
||||
.equipment-item-content-item-name(onclick='utils.copy("' + item.name + '")')= item.name
|
||||
.equipment-item-content-item-specification= item.specification
|
||||
.equipment-item-content-item-description= item.description
|
||||
if item.link
|
||||
.equipment-item-content-item-toolbar
|
||||
if item.link.includes('https://') || item.link.includes('http://')
|
||||
a.equipment-item-content-item-link(href=item.link, target="_blank") 详情
|
||||
else
|
||||
a.equipment-item-content-item-link(href=item.link, target="_blank") 查看文章
|
||||
a.bber-reply(onclick=`sco.toTalk('${item.description}')`)
|
||||
i.solitude.st-chat-fill(style="font-size: 1rem;")
|
||||
@@ -0,0 +1,31 @@
|
||||
.banners-title
|
||||
.banners-title-small= page.title
|
||||
.banners-title-big= page.desc
|
||||
|
||||
.banner-button-group
|
||||
if theme.footer.randomlink
|
||||
a.banner-button.secondary(onclick="travelling()")
|
||||
i.solitude.st-signal-tower-fill
|
||||
span.banner-button-text=_p('link.banner.random')
|
||||
if theme.comment.use
|
||||
a.banner-button(onclick="sco.scrollToComment()")
|
||||
i.solitude.st-right-btn-fill
|
||||
span.solitude.banner-button-text=_p('link.banner.toComment')
|
||||
|
||||
.tags-group-all.nowrapMove
|
||||
.tags-group-wrapper
|
||||
- const data = site.data.links.links
|
||||
- for (let i = 0; i < 2; i++)
|
||||
each x in data
|
||||
if x.type === "item"
|
||||
- var pairs = []
|
||||
each y, index in x.link_list
|
||||
if (index % 2 === 0)
|
||||
- pairs.push([y])
|
||||
else
|
||||
- pairs[pairs.length - 1].push(y)
|
||||
each pair in pairs
|
||||
.tags-group-icon-pair
|
||||
each y in pair
|
||||
a.tags-group-icon(href=url_for(y.link), title=y.name)
|
||||
img(src=y.avatar + (site.data.links.banner_suffix || ''), title=y.name)
|
||||
@@ -0,0 +1,15 @@
|
||||
.site-card-group
|
||||
each item in data.link_list
|
||||
.site-card
|
||||
if item.tag
|
||||
span.site-card-tag(class=item.color)= item.tag
|
||||
i.light
|
||||
a.img(title=item.name, href=url_for(item.link))
|
||||
img.flink-avatar(src=item.topimg + (data.topimg_suffix || ''), alt=item.name)
|
||||
a.info.cf-friends-link(title=item.name, href=url_for(item.link))
|
||||
.site-card-avatar
|
||||
img.flink-avatar.cf-friends-avatar(src=item.avatar + (data.suffix || ''), alt=item.name)
|
||||
.img-alt.is-center= item.name
|
||||
.site-card-text
|
||||
span.title.cf-friends-name= item.name
|
||||
span.desc(title=item.descr)= item.descr
|
||||
@@ -0,0 +1,8 @@
|
||||
.flink-list.cf-friends-lost-contact.mini
|
||||
each item in data.link_list
|
||||
.flink-list-item
|
||||
a.cf-friends-link(href="javascript:void(0);", title=item.name)
|
||||
img.flink-avatar.cf-friends-avatar(alt=item.name, src=item.avatar + (data.suffix || ''))
|
||||
.flink-item-info
|
||||
span.flink-item-name.cf-friends-name= item.name
|
||||
span.flink-item-desc(title=item.descr)= item.descr
|
||||
@@ -0,0 +1,11 @@
|
||||
.flink-list
|
||||
each item in data.link_list
|
||||
.flink-list-item
|
||||
if item.tag
|
||||
span.site-card-tag(class=item.color)= item.tag
|
||||
i.light
|
||||
a.cf-friends-link(href=url_for(item.link), title=item.name)
|
||||
img.flink-avatar.cf-friends-avatar(alt=item.name, src=item.avatar + (data.suffix || ''))
|
||||
.flink-item-info
|
||||
span.flink-item-name.cf-friends-name= item.name
|
||||
span.flink-item-desc(title=item.descr)= item.descr
|
||||
@@ -0,0 +1,45 @@
|
||||
- const { server, site, option } = theme.artalk
|
||||
|
||||
script(pjax).
|
||||
(async () => {
|
||||
const emojiReg = /<img [^>]+ atk-emoticon="[^"]+">/g
|
||||
if (typeof EasyDanmaku === "undefined") await utils.getScript('!{url_for(theme.cdn.envelope_js)}')
|
||||
const envel = new EasyDanmaku({
|
||||
page: '!{theme.envelope.page}',
|
||||
el: '#barrage',
|
||||
line: !{line},
|
||||
speed: !{speed},
|
||||
hover: !{hover},
|
||||
loop: !{loop},
|
||||
})
|
||||
const data = utils.saveToLocal.get('enevlope')
|
||||
if (data) {
|
||||
envel.batchSend(data, true)
|
||||
return
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams({'site_name': "!{site}", 'limit': '100'})
|
||||
await fetch(`!{server}/api/v2/stats/latest_comments?${searchParams}`, {method: 'GET'}).then(async res => res.json())
|
||||
.then(async data => {
|
||||
let ls = []
|
||||
for (const i of data.data) {
|
||||
ls.push({
|
||||
content: i.nick + ': ' + formatDanmaku(i.content),
|
||||
avatar: '!{avatar}' + '/avatar/' + i.email_encrypted,
|
||||
url: i.page_key + '#atk-comment-' + i.id,
|
||||
})
|
||||
}
|
||||
envel.batchSend(ls, true)
|
||||
utils.saveToLocal.set('enevlope', ls, .02)
|
||||
}).catch(error => {
|
||||
console.error("An error occurred while fetching comments: ", error)
|
||||
})
|
||||
|
||||
function formatDanmaku(str) {
|
||||
str = str.replace(emojiReg, '[!{__("console.newest_comment.emoji")}]')
|
||||
str = str.replace(/!\[.*?\]\((.*?)\)/g, '[!{__("console.newest_comment.image")}]')
|
||||
str = str.replace(/\[.*?\]\((.*?)\)/g, '[!{__("console.newest_comment.link")}]')
|
||||
str = str.replace(/```.*?```/g, '[!{__("console.newest_comment.code")}]')
|
||||
return str
|
||||
}
|
||||
})()
|
||||
@@ -0,0 +1,9 @@
|
||||
#article-container
|
||||
!= page.content
|
||||
if theme.envelope.enable
|
||||
.switch_message
|
||||
button.open(type='button' onclick="document.getElementById('barrage').classList.remove('hide')")
|
||||
span(aria-hidden='true')= __('message.open')
|
||||
button.close(type='button' onclick="document.getElementById('barrage').classList.add('hide')")
|
||||
span(aria-hidden='true')= __('message.close')
|
||||
#barrage
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user