Compare commits

...

57 Commits

Author SHA1 Message Date
aleks
203268ef54 update
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-25 16:54:32 +03:00
alleks
465a1f871b add yandex metrica
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-29 16:37:13 +03:00
alleks
0b55074b50 del qrcode
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 22:00:21 +03:00
alleks
6a7213ccfb del qrcode
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 21:52:23 +03:00
alleks
d6596af54c add tizer add
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 21:42:27 +03:00
alleks
6e45d27f95 add tizer add
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 21:23:54 +03:00
alleks
9421e614f8 add yandex metrika
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 19:52:11 +03:00
alleks
adccb1fb64 update
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 19:16:50 +03:00
alleks
d774e4868d update
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 19:10:23 +03:00
alleks
b3280e8d81 update
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-19 19:07:30 +03:00
alleks
c2f6f674b0 update
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-19 18:53:58 +03:00
alleks
d67e7b66e4 update
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-19 18:07:20 +03:00
alleks
daa9eafe47 github
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:24:55 +03:00
alleks
be3c627b53 гзвфеу
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:15:48 +03:00
alleks
bf50fa3cbf github
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:10:24 +03:00
alleks
47c68fbcf6 github
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:07:53 +03:00
alleks
7df5fb3bbc edit gitignore
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:01:00 +03:00
alleks
7875f1f10b edit gitignore
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 02:00:38 +03:00
alleks
0f2ce49711 edit config
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 01:48:10 +03:00
alleks
62bbf2ea84 edit config
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 01:32:28 +03:00
alleks
73d1541964 add drone files
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 01:21:37 +03:00
alleks
3f62a1d379 add drone files
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 01:13:59 +03:00
alleks
65660e28ff add drone files
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2023-01-23 01:12:46 +03:00
alleks
f16f3f3b67 add drone files
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 00:58:23 +03:00
alleks
d5967b9b27 add drone files
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 00:52:21 +03:00
alleks
3c4e20c278 add drone files
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 00:31:21 +03:00
alleks
9f8cdc1e08 add drone files
Some checks failed
continuous-integration/drone/push Build is failing
2023-01-23 00:27:54 +03:00
alleks
f741f71d48 add drone files
Some checks failed
continuous-integration/drone/push Build is failing
2023-01-23 00:26:11 +03:00
alleks
5f67e530ca add drone files
Some checks failed
continuous-integration/drone/push Build is failing
2023-01-23 00:24:36 +03:00
alleks
ae0dc7c60e add drone files
Some checks failed
continuous-integration/drone/push Build is failing
2023-01-23 00:20:17 +03:00
alleks
1480ba764a add drone files
Some checks failed
continuous-integration/drone/push Build is failing
2023-01-23 00:17:45 +03:00
alleks
0d50488be9 add drone files
Some checks failed
continuous-integration/drone Build is failing
2023-01-23 00:15:25 +03:00
aleks
5367cb98aa update 2023-01-20 19:31:12 +03:00
aleks
4180e196a7 update 2023-01-20 19:07:42 +03:00
Eric Shen
aa8f962b96
Merge pull request #161 from MHG-LAB/master
remove: mv
2022-09-03 14:12:42 +08:00
MHuiG
f5c57c26a4
remove: mv 2022-08-21 15:46:57 +08:00
Eric Shen
4c6353ef4f
Merge pull request #157 from shrimp509/fix-google-analytics
fix: update google analytics
2022-05-27 22:47:34 +08:00
UncleSam
ac48e4b5d7 fix: update google analytics 2022-05-23 16:36:09 +08:00
shenyu
f3932d682c 1.9.7-0 2022-02-24 17:18:36 +08:00
shenyu
07f3f29b6a 2022-02-24 17:13:48 +08:00
shenyu
47c56cc364 1.9.6 2022-02-24 11:27:13 +08:00
shenyu
bf2f718d73 Merge branch 'master' of github.com:Shen-Yu/hexo-theme-ayer 2022-02-24 11:21:56 +08:00
shenyu
550ab8a68d ️ update CDN 2022-02-24 11:21:40 +08:00
Eric Shen
15b16e79ce
Update README.md 2022-02-23 17:45:58 +08:00
Eric Shen
84bca19471
Merge pull request #151 from eigeen/fix-new-miit-url
fix: new miit url
2022-01-07 18:14:23 +08:00
Eigeen
313752c594 fix: new miit url 2022-01-06 14:38:12 +08:00
shenyu
7ef6c7c618 📝 2021-08-13 10:43:37 +08:00
shenyu
31b38391de 1.9.5 2021-08-03 17:01:15 +08:00
shenyu
9c53a603f3 1.9.5-0 2021-08-03 17:01:02 +08:00
shenyu
a9db32d0cb 🐛 fix: blank space on firefox 2021-08-03 16:59:39 +08:00
shenyu
3ff73f9805 1.9.4-0 2021-07-29 14:26:46 +08:00
shenyu
5969d1a456 1.9.3 2021-07-23 13:46:11 +08:00
shenyu
219bb6db37 🎨 style: code format 2021-07-23 13:45:50 +08:00
shenyu
e0f4461fe5 🗑️ remove jquery-2.0.3.min.js 2021-07-23 13:28:34 +08:00
shenyu
20332ad8f2 ⬆️ chore: upgrade jquery 2021-07-23 13:26:32 +08:00
shenyu
8229b7436f 1.9.2 2021-07-23 11:49:13 +08:00
shenyu
c24db5e371 feat: Encrypt 2021-07-23 11:47:30 +08:00
75 changed files with 11338 additions and 1221 deletions

58
.drone.yml Normal file
View File

@ -0,0 +1,58 @@
kind: pipeline
steps:
- name: restore-cache
image: meltwater/drone-cache:dev
environment:
AWS_ACCESS_KEY_ID:
from_secret: aws_acces
AWS_SECRET_ACCESS_KEY:
from_secret: aws_key
pull: true
settings:
debug: false
cache_key: '{{ arch }}_{{ os }}_{{ checksum "package-lock.json" }}'
archive_format: "gzip"
endpoint: storage.yandexcloud.net
restore: true
bucket: drone-cache
region: ru-central1
mount: 'node_modules'
- name: run-sh
image: node:alpine
commands:
- chmod +x ./bin/run.sh
- ./bin/run.sh
- name: update-site
image: plugins/downstream
settings:
server: https://drone.lp76.ru
token:
from_secret: drone_token
fork: false
repositories:
- aleks/site
- name: rebuild-cache
image: meltwater/drone-cache:dev
environment:
AWS_ACCESS_KEY_ID:
from_secret: aws_acces
AWS_SECRET_ACCESS_KEY:
from_secret: aws_key
pull: true
settings:
debug: false
cache_key: '{{ arch }}_{{ os }}_{{ checksum "package-lock.json" }}'
archive_format: "gzip"
endpoint: storage.yandexcloud.net
rebuild: true
bucket: drone-cache
region: ru-central1
mount: 'node_modules'
- name: telegram
image: appleboy/drone-telegram
settings:
token:
from_secret: token_telegramm
to:
from_secret: to_telegram_user
message: #success {{build.status}}

16
.github/FUNDING.yml vendored
View File

@ -1,16 +0,0 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: ayer # 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
custom:
[
"https://shen-yu.gitee.io/images/wechat.jpg",
"https://shen-yu.gitee.io/images/alipay.jpg",
]

View File

@ -1,70 +0,0 @@
---
name: Bug Report
about: Something isn't working as expected
title: ""
labels: Bug
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this issue: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Environment Information
### Node.js and NPM Information
<!-- Paste output from `node -v && npm -v` (粘贴 `node -v && npm -v` 输出的信息) -->
```
```
### Package dependencies Information
<!-- Paste output from `npm ls --depth 0` (粘贴 `npm ls --depth 0` 输出的信息) -->
```
```
### HTML Configuration
<!-- Paste configuration from HTML (粘贴 HTML 配置 中的内容) -->
```
```
### MiniValine Configuration
<!-- Paste configuration from MiniValine (粘贴 MiniValine 配置 中的内容) -->
```
```
## Other Information <!-- (Like Browser, System, Screenshots) -->

View File

@ -1,36 +0,0 @@
---
name: Feature Request
about: Suggest an idea for this project
title: ""
labels: Feature Request
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this feature: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Other Information <!-- Like Browser, System, Screenshots -->

View File

@ -1,21 +0,0 @@
---
name: Other
about: Not a question, feature request or bug report
title: ""
labels: ""
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Other Information <!-- Like Browser, System, Screenshots -->

View File

@ -1,70 +0,0 @@
---
name: Question
about: I have a question for Ayer
title: ""
labels: Question
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this issue: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Environment Information
### Node.js and NPM Information
<!-- Paste output from `node -v && npm -v` (粘贴 `node -v && npm -v` 输出的信息) -->
```
```
### Package dependencies Information
<!-- Paste output from `npm ls --depth 0` (粘贴 `npm ls --depth 0` 输出的信息) -->
```
```
### HTML Configuration
<!-- Paste configuration from HTML (粘贴 HTML 配置 中的内容) -->
```
```
### Ayer Configuration
<!-- Paste configuration from Ayer (粘贴 Ayer 配置 中的内容) -->
```
```
## Other Information <!-- (Like Browser, System, Screenshots) -->

12
.github/config.yml vendored
View File

@ -1,12 +0,0 @@
# =============================================================================================== #
# Configuration for welcome - https://github.com/behaviorbot/welcome
# Comment to be posted to on first time issues
newIssueWelcomeComment: >
Thanks for opening this issue, maintainers will get back to you as soon as possible!
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: >
Thanks so much for opening your first PR here!
# Comment to be posted to on pull requests merged by a first time user
firstPRMergeComment: >
Congrats on merging your first pull request here! :tada: How awesome!

31
.github/workflows/node.yml vendored Normal file
View File

@ -0,0 +1,31 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
name: Node.js CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x, 18.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test

View File

@ -1,21 +0,0 @@
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
name: Node.js Package
on:
release:
types: [created]
jobs:
publish-npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}

2
.gitignore vendored
View File

@ -2,8 +2,6 @@
.idea/
*.log
*.iml
yarn.lock
package-lock.json
node_modules/
.cache
.history

View File

@ -1,10 +0,0 @@
language: node_js
node_js: node
cache:
npm: true
install: npm install
script: npm run test

37
LICENSE
View File

@ -1,37 +0,0 @@
The Star And Thank Author License (SATA)
Copyright © 2019 Shen-Yu(shenyu@hotmail.com)
Project Url: https://github.com/Shen-Yu/hexo-theme-ayer
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.
And wait, the most important, you shall star/+1/like the project(s) in project url
section above first, and then thank the author(s) in Copyright section.
Here are some suggested ways:
- Email the authors a thank-you letter, and make friends with him/her/them.
- Report bugs or issues.
- Tell friends what a wonderful project this is.
- And, sure, you can just express thanks in your mind without telling the world.
Contributors of this project by forking have the option to add his/her name and
forked project url at copyright and project url sections, but shall not delete
or modify anything else in these two sections.
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.

View File

@ -1,48 +1,3 @@
<p align="center"><a href="https://shen-yu.gitee.io" target="_blank" rel="noopener noreferrer"><img width="100" src="logo.png" alt="ayer logo"></a></p>
<h3 align="center">一个安静且优雅的 Hexo 主题</h3>
<p align="center">
<a href="https://travis-ci.org/Shen-Yu/hexo-theme-ayer?branch=master" target="_blank" rel="noopener noreferrer">
<img alt="travis-ci" src="https://travis-ci.org/Shen-Yu/hexo-theme-ayer.svg?branch=master">
</a>
<a href="http://standardjs.com" target="_blank" rel="noopener noreferrer">
<img alt="js-standard-style" src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg">
</a>
<br>
<a href="https://www.npmjs.com/package/hexo-theme-ayer" target="_blank" rel="noopener noreferrer">
<img alt="npm" src="https://img.shields.io/npm/dt/hexo-theme-ayer">
</a>
<a href="https://shen-yu.gitee.io" target="_blank" rel="noopener noreferrer">
<img alt="platform" src="https://img.shields.io/badge/platform-PC--ios--android-ff69b4.svg">
</a>
<a href="https://gitter.im/hexo-theme-ayer/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge" target="_blank" rel="noopener noreferrer">
<img alt="Gitter" src="https://badges.gitter.im/Join%20Chat.svg">
</a>
<br>
<a href="https://www.npmjs.com/package/hexo-theme-ayer" target="_blank" rel="noopener noreferrer">
<img alt="npm version" src="https://img.shields.io/npm/v/hexo-theme-ayer">
</a>
<img alt="language" src="https://img.shields.io/badge/language-ejs--stylus-green.svg">
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer">
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/Shen-Yu/hexo-theme-ayer?color=b37feb">
</a>
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE" target="_blank" rel="noopener noreferrer"><img alt="LICENSE" src="https://img.shields.io/badge/LICENSE-SATA-6ccab8">
</a>
</p>
---
:ocean: Ayer is a clean and elegant theme for Hexo, also fast, powerful and responsive. It contains many awesome features, It's perfect for your blog, "Ayer" means "water" in Malaysian and "yesterday" in Spanish. If you have any queries or advice during the process of using, Please contact me! shenyu@hotmail.com
<b>注:收藏本主题请点右上角 Star谢谢~~ </b>
<b>如果你想给主题添砖加瓦,可以点右上角 Fork然后给此仓库提交 PR</b>
### [Preview 预览](https://shen-yu.gitee.io)
### [中文说明](https://shen-yu.gitee.io/2019/ayer/)
### [国内镜像](https://gitee.com/shen-yu/hexo-theme-ayer)
![Screenshot](screenshots/hexo-theme-ayer.png)
@ -240,9 +195,6 @@ katex:
# since year
since: 2019
# pageFooter (Set true can let more people know this theme, Thanks!)
pageFooter: true
# only for chinese website
# ICP
icp:
@ -305,11 +257,6 @@ twikoo:
enable: false
envId: #
# 4、MiniValine
# See: https://github.com/MiniValine/MiniValine
minivaline:
enable: false
serverURL: https://minivaline.your-domain.com
# advertisement
# if there is an "ad" word in photo or urlit may blocked by adblock or any other browser extensions
@ -324,6 +271,11 @@ ads:
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_2.jpg
url: https://curl.qcloud.com/kvO7hb43
width: 300
# encrypt settings
lock:
enable: false
password: 123456
```
## Plugins
@ -442,30 +394,3 @@ Use Tocbot to parse the title tags (h1~h6) in the content and insert the directo
---
<br/>
## Code Contributors
This project exists thanks to all the people who contribute.
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/graphs/contributors"><img src="https://opencollective.com/ayer/contributors.svg?width=890&button=false" /></a>
## Stargazers over time
[![Stargazers over time](https://starchart.cc/Shen-Yu/hexo-theme-ayer.svg)](https://starchart.cc/Shen-Yu/hexo-theme-ayer)
## License
<a src="https://github.com/Shen-Yu/hexo-theme-ayer">Ayer</a> by <a href="https://github.com/Shen-Yu">Eric-Shen</a> is licensed under <a rel="license" href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE">SATA-License</a>.
The basic idea is, whenever using a project using SATA license, people shall star/like/+1 that project and thank the author. Just imagine Google stared your project and send you a thank-you letter because they used your project in github!
<br>
本项目采用<a rel="license" href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE">SATA</a>开源协议,在遵守 MIT 许可证的前提下,你应该马不停蹄的给这个开源项目“点个赞”,比如 github 右上角的 star然后你应该感谢这个开源项目的作者作者信息可以在许可证头部的版权声明部分找到。<br>
下面是几条 SATA 作者推荐的感谢途径,也是 SATA 包含的内容:
- 给你使用的开源项目的作者发个 Email和他交个朋友
- 提出你在使用过程中发现的 BUG 或者提一些建设性的意见
- 告诉你的朋友们这是一个多棒的开源项目
- 当然,你也可以只是在心里默默的感激,不用让全世界都知道

View File

@ -1,21 +1,17 @@
# 侧边栏菜单
menu:
主页: /
归档: /archives
分类: /categories
标签: /tags
旅行: /tags/旅行/
摄影: http://shenyu-vip.lofter.com
友链: /friends
关于我: /2019/about
Главная: /
Архивы: /archives
Категории: /categories
Теги: /tags
# 站点次标题和打字动效
# https://github.com/mattboldt/typed.js
subtitle:
enable: true # 是否开启动效
text: 面朝大海,春暖花开 # 显示的文字
text2: 愿你一生努力,一生被爱 # 滚动播放,如果不需要可以留空
text3: 想要的都拥有,得不到的都释怀 # 最多支持三段文字
text: # 显示的文字
text2: # 滚动播放,如果不需要可以留空
text3: # 最多支持三段文字
startDelay: 0 # 延迟时间
typeSpeed: 200 # 打字速度
loop: true # 是否循环
@ -38,13 +34,13 @@ progressBar: true
# 告示板模块
broadcast:
enable: true # true开启false关闭
enable: false # true开启false关闭
type: 2 # 1自定义输入2一言api(https://hitokoto.cn/)
text: 一个安静优雅的hexo主题快速且响应式。 # type为1时有效
text: енен # type为1时有效
# 文章配置
# 文章太长,截断按钮文字(在需要截断的行增加此标记:<!--more-->)
excerpt_link: 阅读更多...
excerpt_link: false
# 如果你嫌每篇文章手动加more标记比较麻烦又不想在首页全文显示可以把excerpt_all设置成true这样首页只会显示文章归档
excerpt_all: false
@ -53,16 +49,16 @@ copy_btn: true
# 是否开启文章分享按钮
share_enable: true
# 国内的社交平台(If you are not in China, maybe you prefer to set:false)
share_china: true
share_china: false
# 文章分享文字
share_text: 分享
share_text: Поделится
# 分页文字
nav_text:
page_prev: 上一页
page_next: 下一页
post_prev: 上一篇
post_next: 下一篇
page_prev: Страница назад
page_next: Страница вперед
post_prev: Предыдущая запись
post_next: Следующая запись
# 文章页是否显示目录
toc: true
@ -82,11 +78,11 @@ word_count:
# 打赏type设定0-关闭打赏; 1-文章对应的md文件里有reward:true属性才有打赏 2-所有文章均有打赏
reward_type: 2
# 打赏wording
reward_wording: "请我喝杯咖啡吧~"
reward_wording: "wording"
# 支付宝二维码图片地址跟你设置logo的方式一样。比如/images/alipay.jpg
alipay: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/alipay.jpg
alipay: /images/alipay.jpg
# 微信二维码图片地址
weixin: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/wechat.jpg
weixin: /images/wechat.jpg
# 版权声明
# 版权声明type设定0-关闭版权声明; 1-文章对应的md文件里有copyright: true属性才有版权声明 2-所有文章均有版权声明
@ -123,7 +119,7 @@ layout:
github:
# (关闭请设置为false)
enable: true
url: https://github.com/Shen-Yu/hexo-theme-ayer
url: https://github.com/alkyl1978/hexo-theme-ayer
# 网易云音乐插件
music:
@ -135,11 +131,11 @@ music:
# 访问量统计(不蒜子)
busuanzi:
enable: true
enable: false
# 友盟cnzz统计(url填js代码src链接)
cnzz:
enable: true
enable: false
url: https://s9.cnzz.com/z_stat.php?id=1278069914&web_id=1278069914
# Google Analytics
@ -147,32 +143,31 @@ google_analytics: ""
# 百度统计
baidu_analytics: ""
yandex_analytics: true
# Mathjax数学公式
mathjax: false
# Katex数学公式(allpost设置为false时只有头部设置math:true的文章才开启)
# 需要更换hexo渲染器npm un hexo-renderer-marked -S && npm i hexo-renderer-markdown-it-katex -S
katex:
enable: false # true
enable: true # true
allpost: true
copy_tex: false
# mermaid流程图 三个选项缺一不可(https://mermaid-js.github.io/mermaid/)
mermaid:
enable: false
cdn: https://cdn.jsdelivr.net/npm/mermaid@8.9.2/dist/mermaid.min.js
enable: true
cdn: https://cdn.staticfile.org/mermaid/8.14.0/mermaid.min.js
theme: forest
# 网站成立年份(默认为 2019若填入年份小于当前年份则显示为 2018-2019 类似的格式)
since: 2015
# 是否显示页脚信息(建议保留)
pageFooter: true
since: 2023
# ICP备案信息尾部显示
icp:
enable: false
url: "http://www.beian.miit.gov.cn/" # 备案链接
url: "https://beian.miit.gov.cn/" # 备案链接
text: "浙ICP备88888888" # 备案信息
# 公安备案信息尾部显示
gongan:
@ -185,69 +180,35 @@ gongan:
friends_link:
Ayer主题: #网站名称
#网站地址
url: https://github.com/Shen-Yu/hexo-theme-ayer
url: https://github.com/alkyl1978/hexo-theme-ayer
#网站图片(可忽略不写)
img: /images/ayer.png
GitHub:
url: https://github.com/Shen-Yu
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/github.png
url: https://github.com/alkyl1978
img: /images/github.png
码云:
url: https://gitee.com/shen-yu
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/gitee.png
url: https://lp76.ru
img: /images/gitee.png
Hexo官网:
url: https://hexo.io
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/hexo.png
Hexo图表插件:
url: https://github.com/Shen-Yu/hexo-tag-chart
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/hexo-tag-chart.png
# 评论1、Valine(推荐)2、Gitalk3、Twikoo; 4.MiniValine
# 1、Valine[一款快速、简洁且高效的无后端评论系统](https://github.com/xCss/Valine)
# 启用Valine必须先创建leancloud应用 获取 id|key 填入即可
leancloud:
enable: true
app_id: #
app_key: #
# Valine配置
valine:
enable: true # 是否启用
avatar: monsterid # 头像样式(https://valine.js.org/avatar.html)
placeholder: 给我的文章加点评论吧~ # placeholder
# 2、Gitalk(https://github.com/gitalk/gitalk)
gitalk:
enable: false # true
clientID: # GitHub Application Client ID
clientSecret: # Client Secret
repo: # Repository name
owner: # GitHub ID
admin: # GitHub ID
# 3、Twikoo(https://github.com/imaegoo/twikoo)
twikoo:
enable: false
envId: #
# 4、MiniValine
# See: https://github.com/MiniValine/MiniValine
minivaline:
enable: false
# 更多选项 https://minivaline.js.org/docs/cn/#/Options 按照yml格式继续填写即可 (除了 [el] 选项)
# emoticonUrl 等列表选项 可参考 https://github.com/MiniValine/hexo-next-minivaline
# 下面是一个例子:
serverURL: https://minivaline.your-domain.com
img: /images/hexo.png
# 评论1、Valine(推荐)2、Gitalk3、Twikoo;
# 首页广告配置
# 可以根据需要自行增加ad_3ad_4...留空则不显示建议图片和url不要带ad等关键词否则可能会被adblock等插件屏蔽
ads:
ad_1:
title: 云服务器限时秒杀
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_1.jpg
url: https://curl.qcloud.com/kvO7hb43
width: 300
ad_2:
title: vultr优惠vps
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/vultr.png
url: https://www.vultr.com/?ref=8630075
width: 300
#ads:
# ad_1:
# title: 云服务器限时秒杀
# img: https://pic.imgdb.cn/item/62174b452ab3f51d912a5ccc.jpg
# url: https://curl.qcloud.com/kvO7hb43
# width: 300
# ad_2:
# title: vultr优惠vps
# img: https://pic.imgdb.cn/item/62174b452ab3f51d912a5cd7.png
# url: https://www.vultr.com/?ref=8630075
# width: 300
# 网站开启加密访问,密码可设置任何字符
lock:
enable: true
password: 123456

6
bin/run.sh Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh
set -x
set -e
npm i
npm run build

View File

@ -1,32 +0,0 @@
categories: Kategorien
search: Suche
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: zurück
next: weiter
comment: Kommentare
archive_a: Archiv
archive_b: "Archive: %s"
page: Seite %d
recent_posts: letzter Beitrag
newer: Neuer
older: Älter
share: Teilen
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: Kategorie
tag: Tag
site_visitors: Visitors
page_views: Views
friends: Freunde
post:
word_count: Wortzahl
read_time: Lesezeit
minutes: Minuten
reward: Belohnung
sticky: Oben
copyright_title: Copyright-Hinweis
copyright_content: Sofern nicht anders angegeben, liegt das Urheberrecht aller Artikel in diesem Blog beim Autor. Nachdruck bitte Quelle angeben!

View File

@ -30,3 +30,9 @@ post:
sticky: Sticky
copyright_title: Copyright
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -30,3 +30,9 @@ post:
sticky: Sticky
copyright_title: Copyright
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -1,32 +0,0 @@
categories: Categorías
search: Buscar
tags: Tags
tagcloud: Nube de Tags
tweets: Tweets
prev: Previo
next: Siguiente
comment: Comentarios
archive_a: Archivos
archive_b: "Archivos: %s"
page: Página %d
recent_posts: Posts recientes
newer: Nuevo
older: Viejo
share: Compartir
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS
category: Categoría
tag: Tag
site_visitors: Visitors
page_views: Views
friends: Amigos
post:
word_count: El recuento de palabras
read_time: Tiempo de lectura
minutes: minutos
reward: Recompensa
sticky: Arriba
copyright_title: Derechos de autor
copyright_content: Los derechos de autor son propiedad del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.

View File

@ -30,3 +30,9 @@ post:
sticky: Haut
copyright_title: Avis de copyright
copyright_content: Le droit d'auteur appartient à l'auteur. Pour les réimpressions commerciales, veuillez contacter l'auteur pour autorisation. Pour les réimpressions non commerciales, veuillez indiquer la source.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -1,32 +0,0 @@
categories: カテゴリ
search: 検索
tags: タグ
tagcloud: タグクラウド
tweets: ツイート
prev: 戻る
next: 次へ
comment: コメント
archive_a: アーカイブ
archive_b: "アーカイブ: %s"
page: ページ %d
recent_posts: 最近の投稿
newer: 次の記事
older: 前の記事
share: 共有
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSSフィード
category: カテゴリ
tag: タグ
site_visitors: Visitors
page_views: Views
friends: 友達
post:
word_count: 単語数
read_time: 読書の時間
minutes:
reward: 報酬
sticky: 上へ
copyright_title: 著作権表示
copyright_content: 著作権は著者が所有しています。商業版の複製については、承認について著者に連絡してください。非商業版の複製については、出典を明記してください。

View File

@ -1,32 +0,0 @@
categories: 카테고리
search: 검색
tags: 태그
tagcloud: 태그 클라우드
tweets: 트윗
prev: 이전
next: 다음
comment: 댓글
archive_a: 아카이브
archive_b: "아카이브: %s"
page: 페이지 %d
recent_posts: 최근 포스트
newer: 최신
older: 이전
share: 공유
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: 카테고리
tag: 태그
site_visitors: Visitors
page_views: Views
friends: 친구 들
post:
word_count: 단어 수
read_time: 독서 시간
minutes:
reward: 보상
sticky:
copyright_title: 저작권 고지
copyright_content: 저작권은 저자가 소유합니다. 상업용 재 인쇄의 경우 승인을 위해 저자에게 문의하십시오. 비상업적 재 인쇄의 경우 출처를 명시하십시오.

View File

@ -30,3 +30,9 @@ post:
sticky: Sticky
copyright_title: Copyright melding
copyright_content: Copyright is eigendom van de auteur. Neem voor commerciële herdrukken contact op met de auteur voor autorisatie. Geef de bron aan voor niet-commerciële herdrukken.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -30,3 +30,9 @@ post:
sticky: Sticky
copyright_title: Opphavsrett
copyright_content: Opphavsrett eies av forfatteren. For kommersielle opptrykk, vennligst kontakt forfatteren for godkjenning. For ikke-kommersiell uttrykk, vennligst oppgi kilden.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -1,32 +0,0 @@
categories: Categorias
search: Buscar
tags: Tags
tagcloud: Nuvem de Tags
tweets: Tweets
prev: Anterior
next: Próximo
comment: Comentários
archive_a: Arquivos
archive_b: "Arquivos: %s"
page: Página %d
recent_posts: Postagens Recentes
newer: Mais Recente
older: Mais Antigo
share: Compartilhar
powered_by: Powered by %s
theme: Theme - %s
rss_feed: Feed RSS
category: Categoria
tag: Tag
site_visitors: Visitors
page_views: Views
friends: Amigos
post:
word_count: Word count
read_time: Reading time
minutes: min
reward: Donate
sticky: Sticky
copyright_title: direito autoral
copyright_content: Os direitos autorais são de propriedade do autor. Para reimpressões comerciais, entre em contato com o autor para obter autorização. Para reimpressões não comerciais, indique a fonte.

View File

@ -30,3 +30,9 @@ post:
sticky: липкий
copyright_title: Авторские права
copyright_content: Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
lock:
lock_info: Please enter password
lock_error: Incorrect password, please try again
confirm_text: Ok
cancel_text: Cancel

View File

@ -1,32 +0,0 @@
categories: Thể loại
search: Tìm Kiếm
tags: thẻ
tagcloud: thẻ đám mây
tweets: Tweets
prev: trước
next: kế tiếp
comment: bình luận
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Bài viết gần đây
newer: mới hơn
older: lớn hơn
share: chia sẻ
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: Thể loại
tag: thẻ
site_visitors: Visitors
page_views: Views
friends: Bạn
post:
word_count: Đếm từ
read_time: Thời gian đọc
minutes: min
reward: tặng
sticky: dính
copyright_title: Bản quyền
copyright_content: Bản quyền thuộc sở hữu của tác giả. Đối với tái bản thương mại, xin vui lòng liên hệ với tác giả cho phép. Đối với tái bản phi thương mại, xin vui lòng cho biết nguồn.

View File

@ -1,32 +0,0 @@
categories: 分类
search: 搜索
tags: 标签
tagcloud: 标签云
tweets: 推文
prev: 上一页
next: 下一页
comment: 留言
archive_a: 归档
archive_b: 归档:%s
page: 第 %d 页
recent_posts: 最新文章
newer: Newer
older: Older
share: 分享
powered_by: 由 %s 强力驱动
theme: 主题 - %s
rss_feed: RSS Feed
category: Category
tag: Tag
site_visitors: 访问人数
page_views: 浏览次数
friends: 友情链接
post:
word_count: 字数统计
read_time: 阅读时长
minutes: 分钟
reward: 打赏
sticky: 置顶
copyright_title: 版权声明
copyright_content: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

View File

@ -1,32 +0,0 @@
categories: 分類
search: 搜尋
tags: 標籤
tagcloud: 標籤雲
tweets: 推文
prev: 上一頁
next: 下一頁
comment: 留言
archive_a: 彙整
archive_b: 彙整:%s
page: 第 %d 頁
recent_posts: 最新文章
newer: Newer
older: Older
share: Share
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: Category
tag: Tag
site_visitors: Visitors
page_views: Views
friends: 友情鏈接
post:
word_count: 字數統計
read_time: 閱讀時長
minutes: 分鐘
reward: 打賞
sticky: 置頂
copyright_title: 版權聲明
copyright_content: 本博客所有文章除特別聲明外,著作權歸作者所有。轉載請註明出處!

View File

@ -1,4 +1,4 @@
<%- js('/js/jquery-2.0.3.min') %> <%- js('/js/lazyload.min') %>
<%- js('/js/jquery-3.6.0.min') %> <%- js('/js/lazyload.min') %>
<!-- Tocbot -->
<% if (theme.toc && is_post() && !page.no_toc){ %> <%- js('/js/tocbot.min') %>
<script>
@ -15,12 +15,12 @@
});
</script>
<% } %>
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
<script src="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.js"></script>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css"
href="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.css"
/>
<script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js"></script>
<script src="https://cdn.staticfile.org/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js"></script>
<%- js('dist/main') %>
<!-- ImageViewer -->
<% if (theme.image_viewer){ %> <%- partial('viewer') %> <% } %>
@ -41,7 +41,7 @@ js('/js/busuanzi-2.3.pure.min') %> <% } %>
<% if (theme.click_effect===1){ %> <%- js('/js/clickLove') %> <% } %>
<!-- ClickBoom1 -->
<% if (theme.click_effect===2){ %>
<script src="https://cdn.jsdelivr.net/npm/animejs@latest/anime.min.js"></script>
<script src="https://cdn.staticfile.org/animejs/3.2.1/anime.min.js"></script>
<%- js('/js/clickBoom1') %> <% } %>
<!-- ClickBoom2 -->
<% if (theme.click_effect===3){ %> <%- js('/js/clickBoom2') %> <% } %>

View File

@ -39,7 +39,6 @@
<% } %>
</div>
<% } %>
<!-- copyright -->
<% if (((theme.copyright_type === 2) || (theme.copyright_type === 1 &&
post.copyright)) && !index){ %>
@ -66,7 +65,5 @@
<% if (!index){ %> <%- partial('post/nav') %> <% } %> <% if (theme.valine &&
theme.valine.enable && !post.no_valine){ %> <%- partial('post/valine', { key:
post.slug, title: post.title, url: config.url+url_for(post.path) }) %> <% } %>
<% if (is_post()) { %> <%- partial('post/gitalk') %> <% } %> <% if
(theme.minivaline && theme.minivaline.enable && !post.no_minivaline){ %> <%-
partial('post/minivaline') %> <% } %> <% if (is_post()) { %> <%- partial('post/twikoo') %> <% } %>
</article>

View File

@ -37,7 +37,7 @@
<% } %>
<% if (theme.subtitle.enable){ %>
<script src="https://cdn.jsdelivr.net/npm/typed.js@2.0.11/lib/typed.min.js"></script>
<script src="https://cdn.staticfile.org/typed.js/2.0.12/typed.min.js"></script>
<% } %>
<!-- Subtitle -->

View File

@ -11,43 +11,12 @@
<li>
<% if (theme.pageFooter){ %>
<% var hexoLink = '<a href="https://hexo.io" target="_blank">Hexo</a>'; %>
<% var themeLink = '<a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
<% var themeLink = '<a href="https://github.com/alkyl1978/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
<%- __('powered_by', hexoLink) %>
<span class="division">|</span>
<%- __('theme', themeLink) %>
<% } %>
</li>
</ul>
<ul>
<li>
<% if (theme.busuanzi && theme.busuanzi.enable){ %>
<%# "不蒜子统计" %>
<%- partial('post/busuanzi') %>
<% } %>
</li>
</ul>
<ul>
<% if (theme.icp&&theme.icp.enable){ %>
<li>
<a href="<%= theme.icp.url %>" target="_black" rel="nofollow"><%= theme.icp.text %></a>
</li>
<% } %>
</ul>
<ul>
<% if (theme.gongan&&theme.gongan.enable){ %>
<li>
<img src="<%= theme.gongan.img %>"></img>
<a href="<%= theme.gongan.url %>" target="_black" rel="nofollow"><%= theme.gongan.text %></a>
</li>
<% } %>
</ul>
<ul>
<li>
<!-- cnzz统计 -->
<% if (theme.cnzz&&theme.cnzz.enable){ %>
<script type="text/javascript" src='<%= theme.cnzz.url%>'></script>
<% } %>
</li>
</ul>
</div>
</footer>

View File

@ -1,14 +1,10 @@
<% if (theme.google_analytics){ %>
<%# "Google Analytics" %>
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '<%= theme.google_analytics %>', 'auto');
ga('send', 'pageview');
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= theme.google_analytics %>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= theme.google_analytics %>');
</script>
<%# "End Google Analytics" %>
<% } %>

View File

@ -5,7 +5,6 @@
<% } else { %>
<html lang="en">
<% }%>
<head>
<meta charset="utf-8" />
<% var title = page.title; if (is_archive()) { title = __('archive_a'); if
@ -32,18 +31,28 @@
<% if (theme.favicon){ %>
<link rel="shortcut icon" href="<%- theme.favicon %>" />
<% } %> <%- css('dist/main') %>
<%- css('css/fonts/remixicon') %>
<%- css('css/custom') %> <% if (theme.progressBar){ %>
<script src="https://cdn.staticfile.org/pace/1.2.4/pace.min.js"></script>
<% } %>
<%- partial('google-analytics') %>
<%- partial('baidu-analytics') %>
<%- partial('yandex-analytics') %>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/css/remixicon.min.css"
href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
/>
<%- css('css/custom') %> <% if (theme.progressBar){ %>
<script src="https://cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
<% } %> <%- partial('google-analytics') %> <%- partial('baidu-analytics')
%>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>
<!-- mermaid -->
<% if (theme.mermaid.enable) { %>
<script src="<%= theme.mermaid.cdn %>"></script>
<% } %>
<style>
.swal2-styled.swal2-confirm {
font-size: 1.6rem;
}
</style>
</head>
</html>
</html>

View File

@ -1,11 +1,11 @@
<% if ( theme.katex.enable ) { %>
<% if( theme.katex.allpost || page.math ) { %>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css">
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js"></script>
<link rel="stylesheet" href="https://cdn.staticfile.org/KaTeX/0.15.1/katex.min.css">
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/katex.min.js"></script>
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/auto-render.min.js"></script>
<% if ( theme.katex.copy_tex ) { %>
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.css">
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/copy-tex.min.js"></script>
<link rel="stylesheet" href="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/copy-tex.min.css">
<% } %>
<% } %>
<% } %>

37
layout/_partial/lock.ejs Normal file
View File

@ -0,0 +1,37 @@
<% if (theme.lock.enable){ %>
<script>
const password = "<%= theme.lock.password %>";
const lock_password = window.sessionStorage.getItem("lock_password");
console.log(password, lock_password);
if (lock_password !== password) {
Swal.fire({
title: "<%= __('lock.lock_info') %>",
input: "text",
inputAttributes: {
autocapitalize: "off",
},
showCancelButton: false,
showLoaderOnConfirm: true,
allowOutsideClick: false,
confirmButtonText: "<%= __('lock.confirm_text') %>",
}).then((result) => {
console.log(result);
if (result.isConfirmed) {
console.log(password);
if (result.value === password) {
window.sessionStorage.setItem("lock_password", result.value);
} else {
Swal.fire({
icon: "error",
title: "<%= __('lock.lock_error') %>",
confirmButtonText: "<%= __('lock.confirm_text') %>",
allowOutsideClick: false,
}).then(() => {
window.location.reload();
});
}
}
});
}
</script>
<% } %>

View File

@ -15,4 +15,5 @@
});
</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.6/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="https://cdn.staticfile.org/mathjax/2.7.7/MathJax.js"></script>
<script src="https://cdn.staticfile.org/mathjax/2.7.7/config/TeX-AMS-MML_HTMLorMML-full.js"></script>

View File

@ -1,16 +0,0 @@
<div id="music">
<%# "bottom:120px; left:auto;position:fixed; width:85%" %>
<% var defaultHeight = theme.music.type == 1 ? '32' : '66'; %>
<% var defaultIframeHeight = theme.music.type == 1 ? '52' : '86'; %>
<iframe frameborder="no" border="1" marginwidth="0" marginheight="0" width="200" height="<%=defaultIframeHeight%>"
src="//music.163.com/outchain/player?type=2&id=<%=theme.music.id||22707008%>&auto=<%=theme.music.autoPlay?1:0%>&height=<%=defaultHeight%>"></iframe>
</div>
<style>
#music {
position: fixed;
right: 15px;
bottom: 0;
z-index: 998;
}
</style>

View File

@ -1,4 +1,4 @@
<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
<script src="https://cdn.staticfile.org/clipboard.js/2.0.10/clipboard.min.js"></script>
<script>
function wait(callback, seconds) {
var timelag = null;

View File

@ -1,21 +0,0 @@
<% if (theme.gitalk.enable && post.comments) { %>
<div class="gitalk" id="gitalk-container"></div>
<%- css('https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css') %>
<%- js('https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js') %>
<%- js('https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js') %>
<script type="text/javascript">
var gitalk = new Gitalk({
clientID: '<%- theme.gitalk.clientID %>',
clientSecret: '<%- theme.gitalk.clientSecret %>',
repo: '<%- theme.gitalk.repo %>',
owner: '<%- theme.gitalk.owner %>',
admin: ['<%- theme.gitalk.admin %>'],
// id: location.pathname, // Ensure uniqueness and length less than 50
id: md5(location.pathname),
distractionFreeMode: false, // Facebook-like distraction free mode
pagerDirection: 'last'
})
gitalk.render('gitalk-container')
</script>
<% } %>

View File

@ -1,47 +0,0 @@
<% if (!index && post.comments){ %>
<!-- minivaline评论 -->
<div id="mvcomments-box">
<div id="mvcomments"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/minivaline@6"></script>
<script>
new MiniValine(Object.assign(<%- JSON.stringify(theme.minivaline) %>, {
el: '#mvcomments',
}));
const infoEle = document.querySelector('#mvcomments .info');
if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
infoEle.childNodes.forEach(function (item) {
item.parentNode.removeChild(item);
});
}
</script>
<style>
#mvcomments-box {
padding: 5px 30px;
}
@media screen and (max-width: 800px) {
#mvcomments-box {
padding: 5px 0px;
}
}
:root .darkmode {
--ohhho-color-p: #bbb;
--ohhho-color-text: #fff;
--ohhho-color-card: #252d38;
--ohhho-color-block: rgba(68, 68, 68, 0.65);
--ohhho-expand-before-background: linear-gradient(
180deg,
rgba(246, 246, 246, 0),
rgba(0, 0, 0, 0.9)
);
--ohhho-expand-after-background: rgba(0, 0, 0, 0.9);
}
.darkmode .ohhho pre {
background: #888;
border: 1px solid var(--ohhho-color-block);
}
.darkmode .ohhho .vlist .vcard .vcomment-body .vhead {
filter: brightness(85%);
}
</style>
<% } %>

View File

@ -27,6 +27,7 @@
<i class="icon icon-qzone"></i>
</a> -->
<% } %>
<% if( theme.share_eng ) { %>
<a class="facebook share-sns" href="javascript:;" data-type="facebook">
<i class="ri-facebook-circle-fill"></i>
</a>
@ -36,16 +37,16 @@
<a class="google share-sns" href="javascript:;" data-type="google">
<i class="ri-google-fill"></i>
</a>
<% } %>
</div>
</div>
</div>
<div class="wx-share-modal">
<!--
<div class="wx-share-modal">
<a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
<p>扫一扫分享到微信</p>
<div class="wx-qrcode">
<img src="<%- 'qrcode' in locals ? qrcode(sUrl) : '//api.qrserver.com/v1/create-qr-code/?size=150x150&data=' + sUrl %>" alt="微信分享二维码">
</div>
</div>
-->
<div id="share-mask"></div>

View File

@ -4,3 +4,5 @@
class: 'article-tag'
}) %>
<% } %>
<!-- реклама-->
<div id="v9NMhvNxS5mPbQZeytTmfkhUc0UNVLw"></div>

View File

@ -1,5 +1,5 @@
<% if (!index && theme.twikoo && theme.twikoo.enable){ %>
<script src="https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js"></script>
<script src="https://cdn.staticfile.org/twikoo/1.4.18/twikoo.all.min.js"></script>
<div id="twikoo" class="twikoo"></div>
<script>
twikoo.init({

View File

@ -4,7 +4,7 @@
<div id="vcomments"></div>
</div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/valine@1.4.14/dist/Valine.min.js"></script>
<script src="https://cdn.staticfile.org/valine/1.4.16/Valine.min.js"></script>
<script>
new Valine({
el: "#vcomments",

View File

@ -65,10 +65,10 @@
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.min.css">
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"></script>
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/default-skin/default-skin.min.css">
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.js"></script>
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script>
<script>
function viewer_init() {

View File

@ -0,0 +1,18 @@
<% if (theme.yandex_analytics){ %>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88722337, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88722337" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<% } %>

View File

@ -21,20 +21,18 @@
<main class="content on">
<%- body %>
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
<div class="float_btns">
<%- partial('_partial/totop') %>
</div>
</main>
<div class="float_btns">
<%- partial('_partial/float-btns') %>
</div>
<aside class="sidebar on">
<%- partial('_partial/sidebar') %>
</aside>
<%- partial('_partial/modal') %>
<%- partial('_partial/after-footer') %>
<% if (theme.music&&theme.music.enable){ %>
<%- partial('_partial/music') %>
<% } %>
<%- partial('_partial/lock') %>
</div>
<script src="//bbckdl.mfcewkrob.com/v/9NMhvNxS5mPbQZeytTmfkhUc0UNVLw" charset="utf-8" type="text/javascript" async></script>
</body>
</html>

3586
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,16 @@
{
"name": "hexo-theme-ayer",
"version": "1.9.2-0",
"version": "1.9.7-0",
"description": "a clean and elegant theme for hexo.",
"scripts": {
"dev": "rollup -c -w",
"build": "rollup -c",
"postinstall": "node ./move_config.js",
"test": "stylint source-src/css/style.styl -c .stylintrc"
},
"source": "source-src/main.js",
"repository": {
"type": "git",
"url": "git+https://github.com/Shen-Yu/hexo-theme-ayer.git"
"url": "git+https://git.lp76.ru/aleks/hexo-theme-ayer.git"
},
"keywords": [
"hexo",
@ -19,18 +18,15 @@
"blog",
"ayer"
],
"author": "Shen-Yu <shenyu@hotmail.com>",
"license": "SATA",
"bugs": {
"url": "https://github.com/Shen-Yu/hexo-theme-ayer/issues",
"email": "shenyu@hotmail.com"
},
"homepage": "https://shen-yu.gitee.io/",
"author": "alkyl1978 <alkyl1978@yandex.ru>",
"homepage": "https://lp76.ru/",
"devDependencies": {
"autoprefixer": "^9.8.6",
"rollup": "^2.50.2",
"rollup-plugin-styles": "^3.14.1",
"autoprefixer": "^10.4.13",
"rollup": "^2.63.0",
"rollup-plugin-styles": "^4.0.0",
"rollup-plugin-terser": "^7.0.2",
"stylint": "^2.0.0"
"stylint": "^2.0.0",
"stylus": "^0.59.0",
"stylus-loader": "^7.1.0"
}
}

View File

@ -1,24 +1,6 @@
"use strict";
module.exports = (hexo) => {
const isZh = hexo.theme.i18n.languages[0].search(/zh-CN/i) !== -1;
if (isZh) {
hexo.log.info(`
------------------------------------------------
| |
| __ ________ _____ |
| /\\\\ \\ / / ____| __ \\ |
| / \\\\ \\_/ /| |__ | |__) | |
| / /\\ \\\\ / | __| | _ / |
| / ____ \\| | | |____| | \\ \\ |
| /_/ \\_\\_| |______|_| \\_\\ |
| |
| 感谢使用 Ayer 主题 ! |
| 文档: https://shen-yu.gitee.io/2019/ayer/ |
| |
------------------------------------------------
`);
} else {
hexo.log.info(`
----------------------------------------------------
| |
@ -34,5 +16,4 @@ module.exports = (hexo) => {
| |
----------------------------------------------------
`);
}
};
};

View File

@ -4,7 +4,6 @@ const objUtil = require("../../utils/object");
const { isNotEmptyObject } = require("../../utils/object");
module.exports = (hexo) => {
const isZh = hexo.theme.i18n.languages[0].search(/zh-CN/i) !== -1;
if (isNotEmptyObject(hexo.config.theme_config)) {
hexo.theme.config = objUtil.merge(
@ -12,15 +11,10 @@ module.exports = (hexo) => {
hexo.theme.config,
hexo.config.theme_config
);
if (isZh) {
hexo.log.info("[Ayer] 读取 _config.yml 中 theme_config 配置项覆盖配置");
} else {
hexo.log.info(
"[Ayer] Merge theme config from theme_config in _config.yml"
);
}
}
hexo.log.debug(
"[Ayer] Output theme config:\n",
JSON.stringify(hexo.theme.config, undefined, 2)

View File

@ -10,7 +10,7 @@
*/
// variables
remixicon-font-path = 'https://cdn.jsdelivr.net/npm/remixicon@2.1.0/fonts/' !default;
remixicon-font-path = './remixicon/fonts/' !default;
@font-face
font-family: remixicon;

View File

@ -1,6 +1,5 @@
@import "_variables"
@import "_mixins"
@import "_remixicon"
@import "_normalize"
@import "_darkmode"

View File

@ -15,7 +15,7 @@
}, searchAnimDuration);
};
$(".nav-item-search").click(() => {
$(".nav-item-search").on("click", () => {
if (isSearchAnim) return;
startSearchAnim();
$searchWrap.addClass("on");
@ -24,7 +24,7 @@
});
});
$(document).mouseup((e) => {
$(document).on("mouseup", (e) => {
const _con = $(".local-search");
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
$searchWrap.removeClass("on");
@ -32,7 +32,7 @@
});
// Not recommended in mobile, /search.xml is actually large.
if ($(".local-search").size()) {
if ($(".local-search").length) {
$.getScript("/js/search.js", function () {
searchFunc("/search.xml", "local-search-input", "local-search-result");
});
@ -67,7 +67,7 @@
};
// Share
$(".share-outer").click(() => $(".share-wrap").fadeToggle());
$(".share-outer").on("click", () => $(".share-wrap").fadeToggle());
// Lazyload
$("img.lazy").lazyload({
@ -82,7 +82,7 @@
// ScrollDown
$(document).ready(function ($) {
$(".anchor").click(function (e) {
$(".anchor").on("click", function (e) {
e.preventDefault();
$("main").animate({ scrollTop: $(".cover").height() }, "smooth");
});
@ -102,7 +102,7 @@
// Show and hide the scroll to top link based on scroll position
scrollElem.hide();
$(".content").scroll(function () {
$(".content").on("scroll", () => {
const scrollTop = $(".content").scrollTop();
if (scrollTop > upperLimit) {
$(scrollElem).stop().fadeTo(200, 0.6); // fade back in
@ -112,7 +112,7 @@
});
// Scroll to top animation on click
$(scrollElem).click(function () {
$(scrollElem).on("click", () => {
$(".content").animate({ scrollTop: 0 }, scrollSpeed);
return false;
});
@ -135,18 +135,18 @@
const $content = $(".content"),
$sidebar = $(".sidebar");
$(".navbar-toggle").on("click", function () {
$(".navbar-toggle").on("click", () => {
$(".content,.sidebar").addClass("anim");
$content.toggleClass("on");
$sidebar.toggleClass("on");
});
// Reward
$("#reward-btn").click(() => {
$("#reward-btn").on("click", () => {
$("#reward").fadeIn(150);
$("#mask").fadeIn(150);
});
$("#reward .close, #mask").click(() => {
$("#reward .close, #mask").on("click", () => {
$("#mask").fadeOut(100);
$("#reward").fadeOut(100);
});
@ -159,7 +159,7 @@
$("body").removeClass("darkmode");
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
}
$("#todark").click(() => {
$("#todark").on("click", () => {
if (sessionStorage.getItem("darkmode") == 1) {
$("body").removeClass("darkmode");
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
@ -172,8 +172,8 @@
});
// ShowThemeInConsole
const ayerInfo = "主题不错⭐star 支持一下 ->";
const ayerURL = "https://github.com/Shen-Yu/hexo-theme-ayer";
const ayerInfo = ""
const ayerURL = "https://github.com/alkyl1978/hexo-theme-ayer";
const ayerNameStr =
"\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n";
const ayerInfoStyle =

View File

@ -18,24 +18,9 @@ function hideWX() {
}
function handleClick(type, opts) {
if (type === 'weibo') {
generate('http://service.weibo.com/share/share.php?url=<%-sUrl%>&title=<%-sTitle%>&pic=<%-sPic%>', opts)
} else if (type === 'qq') {
generate('http://connect.qq.com/widget/shareqq/index.html?url=<%-sUrl%>&title=<%-sTitle%>&source=<%-sDesc%>', opts)
} else if (type === 'douban') {
generate('https://www.douban.com/share/service?image=<%-sPic%>&href=<%-sUrl%>&name=<%-sTitle%>&text=<%-sDesc%>', opts)
} else if (type === 'qzone') {
generate('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%-sUrl%>&title=<%-sTitle%>&pics=<%-sPic%>&summary=<%-sDesc%>', opts)
} else if (type === 'facebook') {
generate('https://www.facebook.com/sharer/sharer.php?u=<%-sUrl%>', opts)
} else if (type === 'twitter') {
generate('https://twitter.com/intent/tweet?text=<%-sTitle%>&url=<%-sUrl%>', opts)
} else if (type === 'google') {
} if (type === 'google') {
generate('https://plus.google.com/share?url=<%-sUrl%>', opts)
} else if (type === 'weixin') {
showWX();
}
}
const share_init = () => {
let $sns = document.querySelectorAll('.share-sns');

View File

@ -63,16 +63,15 @@
<h3>
Please check it, Maybe you should read
<a href="https://hexo.io/docs/">Hexo</a> and
<a href="https://shen-yu.gitee.io/2019/ayer/">Ayer</a> Docs
<a href="https://github.com/Shen-Yu/hexo-theme-ayer">Ayer</a> Docs
carefully.
</h3>
<h3>
获取不到该路径的页面呢请检查一下哦可能你还需要仔细阅读
<a href="https://hexo.io/docs/">Hexo</a>
<a href="https://shen-yu.gitee.io/2019/ayer/">Ayer</a> ~
</h3>
</figcaption>
<img src="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/404.jpg" />
<img src="https://tvax4.sinaimg.cn/large/9156bd04ly1gzofhomcm4j20zk0p5jrw.jpg" />
</figure>
</div>
</body>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 868 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

2
source/dist/main.js vendored
View File

@ -1 +1 @@
!function(){"use strict";var e;function t(e,t){e=e.replace(/<%-sUrl%>/g,encodeURIComponent(t.sUrl)).replace(/<%-sTitle%>/g,encodeURIComponent(t.sTitle)).replace(/<%-sDesc%>/g,encodeURIComponent(t.sDesc)).replace(/<%-sPic%>/g,encodeURIComponent(t.sPic));window.open(e)}function o(){$(".wx-share-modal").removeClass("in ready"),$("#share-mask").hide()}function s(e,o){"weibo"===e?t("http://service.weibo.com/share/share.php?url=<%-sUrl%>&title=<%-sTitle%>&pic=<%-sPic%>",o):"qq"===e?t("http://connect.qq.com/widget/shareqq/index.html?url=<%-sUrl%>&title=<%-sTitle%>&source=<%-sDesc%>",o):"douban"===e?t("https://www.douban.com/share/service?image=<%-sPic%>&href=<%-sUrl%>&name=<%-sTitle%>&text=<%-sDesc%>",o):"qzone"===e?t("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%-sUrl%>&title=<%-sTitle%>&pics=<%-sPic%>&summary=<%-sDesc%>",o):"facebook"===e?t("https://www.facebook.com/sharer/sharer.php?u=<%-sUrl%>",o):"twitter"===e?t("https://twitter.com/intent/tweet?text=<%-sTitle%>&url=<%-sUrl%>",o):"google"===e?t("https://plus.google.com/share?url=<%-sUrl%>",o):"weixin"===e&&($(".wx-share-modal").addClass("in ready"),$("#share-mask").show())}!function(e){let t=e(".search-form-wrap"),o=!1;e(".nav-item-search").click((()=>{var s;o||(o=!0,t.addClass("on"),s=function(){e(".local-search-input").focus()},setTimeout((function(){o=!1,s&&s()}),200))})),e(document).mouseup((o=>{const s=e(".local-search");s.is(o.target)||0!==s.has(o.target).length||t.removeClass("on")})),e(".local-search").size()&&e.getScript("/js/search.js",(function(){searchFunc("/search.xml","local-search-input","local-search-result")})),e(".share-outer").click((()=>e(".share-wrap").fadeToggle())),e("img.lazy").lazyload({effect:"fadeIn"}),e("#gallery").justifiedGallery({rowHeight:200,margins:5}),e(document).ready((function(e){e(".anchor").click((function(t){t.preventDefault(),e("main").animate({scrollTop:e(".cover").height()},"smooth")}))})),(()=>{const t=e("#totop");t.hide(),e(".content").scroll((function(){e(".content").scrollTop()>1e3?e(t).stop().fadeTo(200,.6):e(t).stop().fadeTo(200,0)})),e(t).click((function(){return e(".content").animate({scrollTop:0},1e3),!1}))})(),e(".article-entry").each((function(t){e(this).find("img").each((function(){if(e(this).parent().is("a"))return;const{alt:t}=this;t&&e(this).after('<span class="caption">'+t+"</span>")}))}));const s=e(".content"),r=e(".sidebar");e(".navbar-toggle").on("click",(function(){e(".content,.sidebar").addClass("anim"),s.toggleClass("on"),r.toggleClass("on")})),e("#reward-btn").click((()=>{e("#reward").fadeIn(150),e("#mask").fadeIn(150)})),e("#reward .close, #mask").click((()=>{e("#mask").fadeOut(100),e("#reward").fadeOut(100)})),1==sessionStorage.getItem("darkmode")?(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line")):(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line")),e("#todark").click((()=>{1==sessionStorage.getItem("darkmode")?(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line"),sessionStorage.removeItem("darkmode")):(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line"),sessionStorage.setItem("darkmode",1))}));console.log("%c%s%c%s%c%s","background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;","主题不错⭐star 支持一下 ->","background-color: #ffbca2; padding: 8px; font-size: 14px;","https://github.com/Shen-Yu/hexo-theme-ayer","background-color: #eaf8ff;","\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n")}(jQuery),e={id:"JGjrOr2rebvP6q2a",ck:"JGjrOr2rebvP6q2a"},function(t){var o=window,s=document,r=e,a="".concat("https:"===s.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),n=s.createElement("script"),c=s.getElementsByTagName("script")[0];n.type="text/javascript",n.setAttribute("charset","UTF-8"),n.async=!0,n.src=a,n.id="LA_COLLECT",r.d=n;var i=function(){o.LA.ids.push(r)};o.LA?o.LA.ids&&i():(o.LA=e,o.LA.ids=[],i()),c.parentNode.insertBefore(n,c)}();(()=>{let e=document.querySelectorAll(".share-sns");if(!e||0===e.length)return;let t=window.location.href,r=document.querySelector("title").innerHTML,a=document.querySelectorAll(".article-entry img").length?document.querySelector(".article-entry img").getAttribute("src"):"";""===a||/^(http:|https:)?\/\//.test(a)||(a=window.location.origin+a),e.forEach((e=>{e.onclick=o=>{s(e.getAttribute("data-type"),{sUrl:t,sPic:a,sTitle:r,sDesc:r})}})),document.querySelector("#mask").onclick=o,document.querySelector(".modal-close").onclick=o})()}();
!function(){"use strict";var e;function o(){$(".wx-share-modal").removeClass("in ready"),$("#share-mask").hide()}!function(e){let o=e(".search-form-wrap"),t=!1;e(".nav-item-search").on("click",(()=>{var n;t||(t=!0,o.addClass("on"),n=function(){e(".local-search-input").focus()},setTimeout((function(){t=!1,n&&n()}),200))})),e(document).on("mouseup",(t=>{const n=e(".local-search");n.is(t.target)||0!==n.has(t.target).length||o.removeClass("on")})),e(".local-search").length&&e.getScript("/js/search.js",(function(){searchFunc("/search.xml","local-search-input","local-search-result")})),e(".share-outer").on("click",(()=>e(".share-wrap").fadeToggle())),e("img.lazy").lazyload({effect:"fadeIn"}),e("#gallery").justifiedGallery({rowHeight:200,margins:5}),e(document).ready((function(e){e(".anchor").on("click",(function(o){o.preventDefault(),e("main").animate({scrollTop:e(".cover").height()},"smooth")}))})),(()=>{const o=e("#totop");o.hide(),e(".content").on("scroll",(()=>{e(".content").scrollTop()>1e3?e(o).stop().fadeTo(200,.6):e(o).stop().fadeTo(200,0)})),e(o).on("click",(()=>(e(".content").animate({scrollTop:0},1e3),!1)))})(),e(".article-entry").each((function(o){e(this).find("img").each((function(){if(e(this).parent().is("a"))return;const{alt:o}=this;o&&e(this).after('<span class="caption">'+o+"</span>")}))}));const n=e(".content"),a=e(".sidebar");e(".navbar-toggle").on("click",(()=>{e(".content,.sidebar").addClass("anim"),n.toggleClass("on"),a.toggleClass("on")})),e("#reward-btn").on("click",(()=>{e("#reward").fadeIn(150),e("#mask").fadeIn(150)})),e("#reward .close, #mask").on("click",(()=>{e("#mask").fadeOut(100),e("#reward").fadeOut(100)})),1==sessionStorage.getItem("darkmode")?(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line")):(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line")),e("#todark").on("click",(()=>{1==sessionStorage.getItem("darkmode")?(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line"),sessionStorage.removeItem("darkmode")):(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line"),sessionStorage.setItem("darkmode",1))}));console.log("%c%s%c%s%c%s","background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;","","background-color: #ffbca2; padding: 8px; font-size: 14px;","https://github.com/alkyl1978/hexo-theme-ayer","background-color: #eaf8ff;","\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n")}(jQuery),e={id:"JGjrOr2rebvP6q2a",ck:"JGjrOr2rebvP6q2a"},function(o){var t=window,n=document,a=e,s="".concat("https:"===n.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),r=n.createElement("script"),c=n.getElementsByTagName("script")[0];r.type="text/javascript",r.setAttribute("charset","UTF-8"),r.async=!0,r.src=s,r.id="LA_COLLECT",a.d=r;var l=function(){t.LA.ids.push(a)};t.LA?t.LA.ids&&l():(t.LA=e,t.LA.ids=[],l()),c.parentNode.insertBefore(r,c)}(),"google"===type&&function(e,o){e=e.replace(/<%-sUrl%>/g,encodeURIComponent(o.sUrl)).replace(/<%-sTitle%>/g,encodeURIComponent(o.sTitle)).replace(/<%-sDesc%>/g,encodeURIComponent(o.sDesc)).replace(/<%-sPic%>/g,encodeURIComponent(o.sPic)),window.open(e)}("https://plus.google.com/share?url=<%-sUrl%>",opts);(()=>{let e=document.querySelectorAll(".share-sns");if(!e||0===e.length)return;document.querySelector("title").innerHTML;let t=document.querySelectorAll(".article-entry img").length?document.querySelector(".article-entry img").getAttribute("src"):"";""===t||/^(http:|https:)?\/\//.test(t)||(t=window.location.origin+t),e.forEach((e=>{e.onclick=o=>{e.getAttribute("data-type")}})),document.querySelector("#mask").onclick=o,document.querySelector(".modal-close").onclick=o})()}();

BIN
source/images/gitee.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
source/images/github.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
source/images/hexo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -43,7 +43,7 @@ function setParticuleDirection(p) {
let radius = [-1, 1][anime.random(0, 1)] * value;
return {
x: p.x + radius * Math.cos(angle),
y: p.y + radius * Math.sin(angle)
y: p.y + radius * Math.sin(angle),
};
}
@ -113,7 +113,7 @@ function animateParticules(x, y) {
radius: 0.1,
duration: anime.random(minAnimeDuration, maxAnimeDuration),
easing: "easeOutExpo",
update: renderParticule
update: renderParticule,
})
.add({
targets: circle,
@ -122,12 +122,12 @@ function animateParticules(x, y) {
alpha: {
value: 0,
easing: "linear",
duration: anime.random(600, 800)
duration: anime.random(600, 800),
},
duration: anime.random(1200, 1800),
easing: "easeOutExpo",
update: renderParticule,
offset: 0
offset: 0,
});
}
@ -135,7 +135,7 @@ let render = anime({
duration: Infinity,
update: function () {
ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);
}
},
});
document.addEventListener(

View File

@ -1,96 +1,110 @@
class Circle {
constructor({ origin, speed, color, angle, context }) {
this.origin = origin
this.position = { ...this.origin }
this.color = color
this.speed = speed
this.angle = angle
this.context = context
this.renderCount = 0
this.origin = origin;
this.position = { ...this.origin };
this.color = color;
this.speed = speed;
this.angle = angle;
this.context = context;
this.renderCount = 0;
}
draw() {
this.context.fillStyle = this.color
this.context.beginPath()
this.context.arc(this.position.x, this.position.y, 2, 0, Math.PI * 2)
this.context.fill()
this.context.fillStyle = this.color;
this.context.beginPath();
this.context.arc(this.position.x, this.position.y, 2, 0, Math.PI * 2);
this.context.fill();
}
move() {
this.position.x = (Math.sin(this.angle) * this.speed) + this.position.x
this.position.y = (Math.cos(this.angle) * this.speed) + this.position.y + (this.renderCount * 0.3)
this.renderCount++
}
this.position.x = Math.sin(this.angle) * this.speed + this.position.x;
this.position.y =
Math.cos(this.angle) * this.speed +
this.position.y +
this.renderCount * 0.3;
this.renderCount++;
}
}
class Boom {
constructor ({ origin, context, circleCount = 10, area }) {
this.origin = origin
this.context = context
this.circleCount = circleCount
this.area = area
this.stop = false
this.circles = []
class Boom {
constructor({ origin, context, circleCount = 10, area }) {
this.origin = origin;
this.context = context;
this.circleCount = circleCount;
this.area = area;
this.stop = false;
this.circles = [];
}
randomArray(range) {
const length = range.length
const randomIndex = Math.floor(length * Math.random())
return range[randomIndex]
const length = range.length;
const randomIndex = Math.floor(length * Math.random());
return range[randomIndex];
}
randomColor() {
const range = ['8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
return '#' + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range)
const range = ["8", "9", "A", "B", "C", "D", "E", "F"];
return (
"#" +
this.randomArray(range) +
this.randomArray(range) +
this.randomArray(range) +
this.randomArray(range) +
this.randomArray(range) +
this.randomArray(range)
);
}
randomRange(start, end) {
return (end - start) * Math.random() + start
return (end - start) * Math.random() + start;
}
init() {
for(let i = 0; i < this.circleCount; i++) {
for (let i = 0; i < this.circleCount; i++) {
const circle = new Circle({
context: this.context,
origin: this.origin,
color: this.randomColor(),
angle: this.randomRange(Math.PI - 1, Math.PI + 1),
speed: this.randomRange(1, 6)
})
this.circles.push(circle)
speed: this.randomRange(1, 6),
});
this.circles.push(circle);
}
}
move() {
this.circles.forEach((circle, index) => {
if (circle.position.x > this.area.width || circle.position.y > this.area.height) {
return this.circles.splice(index, 1)
if (
circle.position.x > this.area.width ||
circle.position.y > this.area.height
) {
return this.circles.splice(index, 1);
}
circle.move()
})
circle.move();
});
if (this.circles.length == 0) {
this.stop = true
this.stop = true;
}
}
draw() {
this.circles.forEach(circle => circle.draw())
}
this.circles.forEach((circle) => circle.draw());
}
}
class CursorSpecialEffects {
class CursorSpecialEffects {
constructor() {
this.computerCanvas = document.createElement('canvas')
this.renderCanvas = document.createElement('canvas')
this.computerCanvas = document.createElement("canvas");
this.renderCanvas = document.createElement("canvas");
this.computerContext = this.computerCanvas.getContext('2d')
this.renderContext = this.renderCanvas.getContext('2d')
this.computerContext = this.computerCanvas.getContext("2d");
this.renderContext = this.renderCanvas.getContext("2d");
this.globalWidth = window.innerWidth
this.globalHeight = window.innerHeight
this.globalWidth = window.innerWidth;
this.globalHeight = window.innerHeight;
this.booms = []
this.running = false
this.booms = [];
this.running = false;
}
handleMouseDown(e) {
@ -99,56 +113,68 @@ class Circle {
context: this.computerContext,
area: {
width: this.globalWidth,
height: this.globalHeight
}
})
boom.init()
this.booms.push(boom)
this.running || this.run()
height: this.globalHeight,
},
});
boom.init();
this.booms.push(boom);
this.running || this.run();
}
handlePageHide() {
this.booms = []
this.running = false
this.booms = [];
this.running = false;
}
init() {
const style = this.renderCanvas.style
style.position = 'fixed'
style.top = style.left = 0
style.zIndex = '99999'
style.pointerEvents = 'none'
const style = this.renderCanvas.style;
style.position = "fixed";
style.top = style.left = 0;
style.zIndex = "99999";
style.pointerEvents = "none";
style.width = this.renderCanvas.width = this.computerCanvas.width = this.globalWidth
style.height = this.renderCanvas.height = this.computerCanvas.height = this.globalHeight
style.width =
this.renderCanvas.width =
this.computerCanvas.width =
this.globalWidth;
style.height =
this.renderCanvas.height =
this.computerCanvas.height =
this.globalHeight;
document.body.append(this.renderCanvas)
document.body.append(this.renderCanvas);
window.addEventListener('mousedown', this.handleMouseDown.bind(this))
window.addEventListener('pagehide', this.handlePageHide.bind(this))
window.addEventListener("mousedown", this.handleMouseDown.bind(this));
window.addEventListener("pagehide", this.handlePageHide.bind(this));
}
run() {
this.running = true
this.running = true;
if (this.booms.length == 0) {
return this.running = false
return (this.running = false);
}
requestAnimationFrame(this.run.bind(this))
requestAnimationFrame(this.run.bind(this));
this.computerContext.clearRect(0, 0, this.globalWidth, this.globalHeight)
this.renderContext.clearRect(0, 0, this.globalWidth, this.globalHeight)
this.computerContext.clearRect(0, 0, this.globalWidth, this.globalHeight);
this.renderContext.clearRect(0, 0, this.globalWidth, this.globalHeight);
this.booms.forEach((boom, index) => {
if (boom.stop) {
return this.booms.splice(index, 1)
}
boom.move()
boom.draw()
})
this.renderContext.drawImage(this.computerCanvas, 0, 0, this.globalWidth, this.globalHeight)
return this.booms.splice(index, 1);
}
boom.move();
boom.draw();
});
this.renderContext.drawImage(
this.computerCanvas,
0,
0,
this.globalWidth,
this.globalHeight
);
}
}
const cursorSpecialEffects = new CursorSpecialEffects()
cursorSpecialEffects.init()
const cursorSpecialEffects = new CursorSpecialEffects();
cursorSpecialEffects.init();

File diff suppressed because one or more lines are too long

2
source/js/jquery-3.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long