Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8c7a957f6e | ||
|
7d408946e9 | ||
|
df2f61aad0 | ||
|
bffec8c8d9 | ||
|
380d4c6501 | ||
|
8f93d6494e | ||
|
f610f83e09 | ||
|
9dcd4aca7c | ||
|
77ecc930bd | ||
|
54216601f2 | ||
|
a38c874bb4 | ||
|
63497f1ad2 | ||
|
42b387c94a | ||
|
11a4aaacf2 | ||
|
ca99e5de86 | ||
|
758b378e82 | ||
|
a8b0534861 | ||
|
246cae5164 | ||
|
4e57d75cb9 | ||
|
faef444acd | ||
|
38131011fc | ||
|
4367d51759 | ||
|
ffb7bcb2d9 | ||
|
feb9fe196e | ||
|
f1c03a8f21 | ||
|
0bc4b48060 | ||
|
1dbbc6110f | ||
|
c90f268255 |
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# 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: # 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://pic.downk.cc/item/5e1c70bc2fb38b8c3c5b0a2f.png
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 沈宇
|
||||||
|
|
||||||
|
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.
|
53
README.md
53
README.md
@@ -1,6 +1,6 @@
|
|||||||
<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>
|
<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>
|
<h3 align="center">一个安静且优雅的 Hexo 主题</h3>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://travis-ci.org/Shen-Yu/hexo-theme-ayer?branch=master" target="_blank" rel="noopener noreferrer">
|
<a href="https://travis-ci.org/Shen-Yu/hexo-theme-ayer?branch=master" target="_blank" rel="noopener noreferrer">
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer">
|
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer">
|
||||||
<img alt="GitHub release" src="https://img.shields.io/badge/release-v1.0-blue.svg">
|
<img alt="GitHub release" src="https://img.shields.io/badge/release-v1.3-blue.svg">
|
||||||
</a>
|
</a>
|
||||||
<img alt="language" src="https://img.shields.io/badge/language-ejs--stylus-orange.svg">
|
<img alt="language" src="https://img.shields.io/badge/language-ejs--stylus-orange.svg">
|
||||||
<a href="https://hexo.io/zh-cn/" target="_blank" rel="noopener noreferrer">
|
<a href="https://hexo.io/zh-cn/" target="_blank" rel="noopener noreferrer">
|
||||||
@@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
### [中文说明](https://shen-yu.gitee.io/2019/ayer/)
|
### [中文说明](https://shen-yu.gitee.io/2019/ayer/)
|
||||||
|
|
||||||
|
### [国内镜像](https://gitee.com/shen-yu/hexo-theme-ayer)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Install
|
### Install
|
||||||
@@ -58,7 +60,7 @@ git pull
|
|||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
let me know if you can’t find something.
|
let me know if you can’t find anything.
|
||||||
|
|
||||||
``` yml
|
``` yml
|
||||||
# Menu-Sidebar
|
# Menu-Sidebar
|
||||||
@@ -74,10 +76,10 @@ favicon: /favicon.ico
|
|||||||
logo: /images/ayer-side.svg
|
logo: /images/ayer-side.svg
|
||||||
|
|
||||||
# Cover Setting
|
# Cover Setting
|
||||||
# enable: [true|false];path: [background-image path];logo: [cover-logo path]
|
# enable: [true|false];path: [background-image];logo: [cover-logo-image]
|
||||||
cover:
|
cover:
|
||||||
enable: true
|
enable: true
|
||||||
path: /images/cover1.jpg # images目录下附送多张美图,可更换
|
path: /images/cover1.jpg # there are some beautiful cover images in Ayer's directory: /source/images, choose your favorite image to replace it.
|
||||||
logo: /images/ayer.svg
|
logo: /images/ayer.svg
|
||||||
|
|
||||||
# ProgressBar
|
# ProgressBar
|
||||||
@@ -100,11 +102,17 @@ nav_text:
|
|||||||
# Catalog in article
|
# Catalog in article
|
||||||
toc: true
|
toc: true
|
||||||
|
|
||||||
|
# https://github.com/willin/hexo-wordcount
|
||||||
|
word_count:
|
||||||
|
enable: true
|
||||||
|
# only display in article page(not in index page)
|
||||||
|
only_article_visit: true
|
||||||
|
|
||||||
# Reward Setting
|
# Reward Setting
|
||||||
# type:0-close reward; 1-only open in article which you have configured reward:true; 2-open in all articles
|
# type:0-close reward; 1-only open in article which you have configured reward:true; 2-open in all articles
|
||||||
reward_type: 2
|
reward_type: 2
|
||||||
# reward word
|
# reward word
|
||||||
reward_wording: '请我喝杯咖啡吧~'
|
reward_wording: 'Buy me a cup of coffee~'
|
||||||
# qrcode image path
|
# qrcode image path
|
||||||
alipay: /images/alipay.jpg
|
alipay: /images/alipay.jpg
|
||||||
# qrcode image path
|
# qrcode image path
|
||||||
@@ -113,10 +121,10 @@ weixin: /images/wechat.jpg
|
|||||||
# Search
|
# Search
|
||||||
search: true
|
search: true
|
||||||
|
|
||||||
# RSS(npm i hexo-generator-feed)
|
# RSS
|
||||||
rss: /atom.xml
|
rss: /atom.xml
|
||||||
|
|
||||||
# Comment:1、Valine(recommended);2、Gitalk
|
# Comment:1、Valine (recommended);2、Gitalk
|
||||||
|
|
||||||
# 1、Valine [A fast, simple & powerful comment system](https://github.com/xCss/Valine)
|
# 1、Valine [A fast, simple & powerful comment system](https://github.com/xCss/Valine)
|
||||||
# You need create leancloud account first (https://console.leancloud.app), then put the id|key in below.
|
# You need create leancloud account first (https://console.leancloud.app), then put the id|key in below.
|
||||||
@@ -128,7 +136,7 @@ leancloud:
|
|||||||
valine:
|
valine:
|
||||||
enable: true
|
enable: true
|
||||||
avatar: mp # (https://valine.js.org/avatar.html)
|
avatar: mp # (https://valine.js.org/avatar.html)
|
||||||
placeholder: 给我的文章加点评论吧~ # placeholder
|
placeholder: Add some comments to my article~ # placeholder
|
||||||
|
|
||||||
# 2、Gitalk(https://github.com/gitalk/gitalk)
|
# 2、Gitalk(https://github.com/gitalk/gitalk)
|
||||||
gitalk:
|
gitalk:
|
||||||
@@ -167,18 +175,18 @@ mathjax: true
|
|||||||
# since year
|
# since year
|
||||||
since: 2019
|
since: 2019
|
||||||
|
|
||||||
# pageFooter (Set true and let more people know this theme, Thanks!)
|
# pageFooter (Set true can let more people know this theme, Thanks!)
|
||||||
pageFooter: true
|
pageFooter: true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Plugins
|
### Plugins
|
||||||
|
|
||||||
+ [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) Local search
|
+ [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) (for Local Search)
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
$ npm install hexo-generator-searchdb --save
|
$ npm install hexo-generator-searchdb --save
|
||||||
```
|
```
|
||||||
Then add the plugin configuration for hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
# Hexo-generator-search
|
# Hexo-generator-search
|
||||||
@@ -188,13 +196,13 @@ pageFooter: true
|
|||||||
format: html
|
format: html
|
||||||
```
|
```
|
||||||
|
|
||||||
+ [hexo-generate-feed](https://github.com/hexojs/hexo-generator-feed) RSS
|
+ [hexo-generate-feed](https://github.com/hexojs/hexo-generator-feed) (for RSS)
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
$ npm install hexo-generator-feed --save
|
$ npm install hexo-generator-feed --save
|
||||||
```
|
```
|
||||||
|
|
||||||
Then add the plugin configuration for hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
feed:
|
feed:
|
||||||
@@ -208,12 +216,27 @@ pageFooter: true
|
|||||||
order_by: -date
|
order_by: -date
|
||||||
```
|
```
|
||||||
|
|
||||||
+ [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top)
|
+ [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top) (for Sticky Post)
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
$ npm uninstall hexo-generator-index --save
|
$ npm uninstall hexo-generator-index --save
|
||||||
$ npm install hexo-generator-index-pin-top --save
|
$ npm install hexo-generator-index-pin-top --save
|
||||||
```
|
```
|
||||||
|
### Categories
|
||||||
|
``` bash
|
||||||
|
hexo new page categories
|
||||||
|
```
|
||||||
|
Then paste following codes to file: _posts/categories/index.md
|
||||||
|
``` md
|
||||||
|
---
|
||||||
|
title: categories
|
||||||
|
type: categories
|
||||||
|
layout: "categories"
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tags
|
||||||
|
Same as categories.
|
||||||
|
|
||||||
### Post poster
|
### Post poster
|
||||||
|
|
||||||
|
@@ -36,6 +36,14 @@ nav_text:
|
|||||||
# 文章页是否显示目录
|
# 文章页是否显示目录
|
||||||
toc: true
|
toc: true
|
||||||
|
|
||||||
|
# https://github.com/willin/hexo-wordcount
|
||||||
|
# 是否开启字数统计(关闭请设置enable为false)
|
||||||
|
# 也可以单独在md文件里Front-matter设置`no_word_count: true`属性,来自定义关闭字数统计
|
||||||
|
word_count:
|
||||||
|
enable: true
|
||||||
|
# 只在文章详情显示(不在首页显示)
|
||||||
|
only_article_visit: true
|
||||||
|
|
||||||
# 打赏
|
# 打赏
|
||||||
# 打赏type设定:0-关闭打赏; 1-文章对应的md文件里有reward:true属性,才有打赏; 2-所有文章均有打赏
|
# 打赏type设定:0-关闭打赏; 1-文章对应的md文件里有reward:true属性,才有打赏; 2-所有文章均有打赏
|
||||||
reward_type: 2
|
reward_type: 2
|
||||||
|
@@ -19,6 +19,10 @@
|
|||||||
positionFixedSelector: '.tocbot',
|
positionFixedSelector: '.tocbot',
|
||||||
positionFixedClass: 'is-position-fixed',
|
positionFixedClass: 'is-position-fixed',
|
||||||
fixedSidebarOffset: 'auto',
|
fixedSidebarOffset: 'auto',
|
||||||
|
onClick: (e) => {
|
||||||
|
document.getElementById(e.target.innerText).scrollIntoView()
|
||||||
|
return false;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
@@ -9,8 +9,9 @@
|
|||||||
else title = __('archive_a');
|
else title = __('archive_a');
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
|
<% if (pagination !== 2){ %>
|
||||||
<h1 class="page-type-title"><%- title %></h1>
|
<h1 class="page-type-title"><%- title %></h1>
|
||||||
|
<% } %>
|
||||||
<% if (pagination == 2){ %>
|
<% if (pagination == 2){ %>
|
||||||
<% page.posts.each(function(post){ %>
|
<% page.posts.each(function(post){ %>
|
||||||
<%- partial('article', {post: post, index: true}) %>
|
<%- partial('article', {post: post, index: true}) %>
|
||||||
|
@@ -12,6 +12,9 @@
|
|||||||
<div class="article-meta">
|
<div class="article-meta">
|
||||||
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
|
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
|
||||||
<%- partial('post/category') %>
|
<%- partial('post/category') %>
|
||||||
|
<% if(theme.word_count && theme.word_count.enable && !post.no_word_count){%>
|
||||||
|
<%- partial('post/word') %>
|
||||||
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
@@ -31,11 +34,11 @@
|
|||||||
<%- post.content %>
|
<%- post.content %>
|
||||||
<% } %>
|
<% } %>
|
||||||
<!-- 打赏 -->
|
<!-- 打赏 -->
|
||||||
<% if ((theme.reward_type === 2 || (theme.reward_type === 1 && post.reward)) && !index){ %>
|
<% if ((theme.reward_type === 2 || (theme.reward_type === 1 && post.reward)) && !index && !post.no_reward){ %>
|
||||||
<div id="reward-btn">
|
<div id="reward-btn">
|
||||||
打赏
|
打赏
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<footer class="article-footer">
|
<footer class="article-footer">
|
||||||
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>"
|
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>"
|
||||||
@@ -49,7 +52,7 @@
|
|||||||
<%- partial('post/nav') %>
|
<%- partial('post/nav') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<% if (theme.valine && theme.valine.enable){ %>
|
<% if (theme.valine && theme.valine.enable && !post.no_valine){ %>
|
||||||
<%- partial('post/valine', {
|
<%- partial('post/valine', {
|
||||||
key: post.slug,
|
key: post.slug,
|
||||||
title: post.title,
|
title: post.title,
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cover-learn-more">
|
<div class="cover-learn-more">
|
||||||
<a href="#main" class="anchor"><i class="ri-arrow-down-line"></i></a>
|
<a href="javascript:void(0)" class="anchor"><i class="ri-arrow-down-line"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<% } %>
|
<% } %>
|
@@ -8,9 +8,10 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<% if (theme.pageFooter){ %>
|
<% if (theme.pageFooter){ %>
|
||||||
|
Powered by
|
||||||
<% var hexoLink = '<a href="https://hexo.io" target="_blank">Hexo</a>'; %>
|
<% 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/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
|
||||||
<%- hexoLink %> Theme <%- themeLink %> by shenyu
|
<%- hexoLink %> Theme <%- themeLink %>
|
||||||
<% } %>
|
<% } %>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
20
layout/_partial/post/word.ejs
Normal file
20
layout/_partial/post/word.ejs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<% if (!theme.word_count.only_article_visit || (!index && theme.word_count.only_article_visit)){ %>
|
||||||
|
<div class="word_count">
|
||||||
|
<span class="post-time">
|
||||||
|
<span class="post-meta-item-icon">
|
||||||
|
<i class="ri-quill-pen-line"></i>
|
||||||
|
<span class="post-meta-item-text"> 字数统计:</span>
|
||||||
|
<span class="post-count"><%= wordcount(post.content) %>字</span>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="post-time">
|
||||||
|
|
|
||||||
|
<span class="post-meta-item-icon">
|
||||||
|
<i class="ri-book-open-line"></i>
|
||||||
|
<span class="post-meta-item-text"> 阅读时长≈</span>
|
||||||
|
<span class="post-count"><%= min2read(post.content) %>分钟</span>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
8
scripts/default_config.js
Normal file
8
scripts/default_config.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
// 生成meta `generator`
|
||||||
|
meta_generator: true
|
||||||
|
|
||||||
|
};
|
13
scripts/filters/index.js
Normal file
13
scripts/filters/index.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const metaGeneratorPath = './meta_generator';
|
||||||
|
|
||||||
|
module.exports = hexo => {
|
||||||
|
/* const {
|
||||||
|
filter
|
||||||
|
} = hexo.extend; */
|
||||||
|
// filter.register('after_render:html', require('./meta_generator'));
|
||||||
|
};
|
||||||
|
|
||||||
|
// 保持过滤器最先执行
|
||||||
|
hexo.extend.filter.register('after_render:html', require(metaGeneratorPath), 1);
|
17
scripts/filters/meta_generator.js
Normal file
17
scripts/filters/meta_generator.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const defaultConfig = require('../default_config');
|
||||||
|
|
||||||
|
function hexoMetaGeneratorInject(data) {
|
||||||
|
const config = defaultConfig;
|
||||||
|
if (!config.meta_generator || !data ||
|
||||||
|
data.match(/<meta\s+name=['|"]?generator['|"]?/i)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const hexoGeneratorTag = `\n <meta name="generator" content="hexo-theme-yilia-plus">`;
|
||||||
|
|
||||||
|
return data.replace('</title>', '</title>' + hexoGeneratorTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = hexoMetaGeneratorInject;
|
9
scripts/helpers/ayer-plus-vendors.js
Normal file
9
scripts/helpers/ayer-plus-vendors.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/* global hexo */
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/** 自定义链接生成 */
|
||||||
|
hexo.extend.helper.register('ayer_plus_vendors', function (url) {
|
||||||
|
if (url.startsWith('//')) return url;
|
||||||
|
return this.url_for(`${url}`);
|
||||||
|
});
|
39
scripts/helpers/wordcount.js
Normal file
39
scripts/helpers/wordcount.js
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
var util = require('hexo-util');
|
||||||
|
var stripHTML = util.stripHTML;
|
||||||
|
|
||||||
|
var counter = function (content) {
|
||||||
|
content = stripHTML(content);
|
||||||
|
const cn = (content.match(/[\u4E00-\u9FA5]/g) || []).length;
|
||||||
|
const en = (content.replace(/[\u4E00-\u9FA5]/g, '').match(/[a-zA-Z0-9_\u0392-\u03c9\u0400-\u04FF]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|[\u00E4\u00C4\u00E5\u00C5\u00F6\u00D6]+|\w+/g) || []).length;
|
||||||
|
return [cn, en];
|
||||||
|
};
|
||||||
|
|
||||||
|
hexo.extend.helper.register('min2read', function (content, {
|
||||||
|
cn = 300,
|
||||||
|
en = 160
|
||||||
|
} = {}) {
|
||||||
|
var len = counter(content);
|
||||||
|
var readingTime = len[0] / cn + len[1] / en;
|
||||||
|
return readingTime < 1 ? '1' : parseInt(readingTime, 10);
|
||||||
|
});
|
||||||
|
|
||||||
|
hexo.extend.helper.register('wordcount', function (content) {
|
||||||
|
var len = counter(content);
|
||||||
|
var count = len[0] + len[1];
|
||||||
|
if (count < 1000) {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
return Math.round(count / 100) / 10 + 'k';
|
||||||
|
});
|
||||||
|
|
||||||
|
hexo.extend.helper.register('totalcount', function (site) {
|
||||||
|
var count = 0;
|
||||||
|
site.posts.forEach(function (post) {
|
||||||
|
var len = counter(post.content);
|
||||||
|
count += len[0] + len[1];
|
||||||
|
});
|
||||||
|
if (count < 1000) {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
return Math.round(count / 100) / 10 + 'k';
|
||||||
|
});
|
25
scripts/lib/core.js
Normal file
25
scripts/lib/core.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/* global hexo */
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Hexo事件:https://hexo.io/zh-cn/api/events
|
||||||
|
|
||||||
|
/** 在静态文件生成前发布 */
|
||||||
|
hexo.on('generateBefore', () => {
|
||||||
|
// Merge config.
|
||||||
|
//require('./../filters/index')(hexo);
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 在文章文件建立后发布。该事件返回文章参数。 */
|
||||||
|
hexo.on('new', function (post) {
|
||||||
|
//console.log(post)
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 在文章开始渲染前执行 */
|
||||||
|
hexo.extend.filter.register('before_post_render', function (data) {
|
||||||
|
//var config = hexo.config;
|
||||||
|
//console.log(3);
|
||||||
|
//console.log(config);
|
||||||
|
//console.log(hexo.theme.config);
|
||||||
|
|
||||||
|
});
|
@@ -34,8 +34,7 @@ $base-style
|
|||||||
acronym, abbr
|
acronym, abbr
|
||||||
border-bottom border-width border-color dotted
|
border-bottom border-width border-color dotted
|
||||||
ul, ol, dl
|
ul, ol, dl
|
||||||
margin 1.5rem 0
|
margin 1.5rem 0 1.5rem 2rem
|
||||||
line-height line-height
|
|
||||||
|
|
||||||
p, table, blockquote
|
p, table, blockquote
|
||||||
margin 1.5rem 0
|
margin 1.5rem 0
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
padding-left 3rem
|
padding-left 3rem
|
||||||
.archive-article-title
|
.archive-article-title
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
font-size 1.5rem
|
font-size 1.8rem
|
||||||
|
|
||||||
.archive-article-footer
|
.archive-article-footer
|
||||||
margin-top: 1.5rem
|
margin-top: 1.5rem
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
@extend $block-caption
|
@extend $block-caption
|
||||||
&::before
|
&::before
|
||||||
content '\eaf2'
|
content '\eaf2'
|
||||||
margin-right .5rem
|
margin-right .15rem
|
||||||
font-family remixicon
|
font-family remixicon
|
||||||
opacity .5
|
opacity .5
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
&:before
|
&:before
|
||||||
content "\efde"
|
content "\efde"
|
||||||
font-family remixicon
|
font-family remixicon
|
||||||
margin-right .5rem
|
margin-right .15rem
|
||||||
opacity 0.6
|
opacity 0.6
|
||||||
.article-category-link
|
.article-category-link
|
||||||
@extend $block-caption
|
@extend $block-caption
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
.article-entry
|
.article-entry
|
||||||
font-size 110%
|
font-size 110%
|
||||||
margin-top 1rem
|
margin-top .5rem
|
||||||
clearfix()
|
clearfix()
|
||||||
@extend $base-style
|
@extend $base-style
|
||||||
color body-color
|
color body-color
|
||||||
|
@@ -71,6 +71,12 @@
|
|||||||
z-index 9998
|
z-index 9998
|
||||||
display none
|
display none
|
||||||
|
|
||||||
|
.word_count
|
||||||
|
margin-top 5px
|
||||||
|
color darken(gray,30%)
|
||||||
|
padding-bottom 1rem
|
||||||
|
border-bottom 1px solid darken(froth-light,2%)
|
||||||
|
|
||||||
// Media Query
|
// Media Query
|
||||||
@media (max-width: 768px)
|
@media (max-width: 768px)
|
||||||
.cover-inner
|
.cover-inner
|
||||||
|
@@ -4,10 +4,37 @@
|
|||||||
list-unstyled()
|
list-unstyled()
|
||||||
margin-right -.5rem
|
margin-right -.5rem
|
||||||
margin-left -.5rem
|
margin-left -.5rem
|
||||||
> .category-list-item
|
.category-list-item
|
||||||
display inline-block
|
margin: 10px 10px;
|
||||||
padding .5rem 1rem
|
padding: 0 14px;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
height: 38px;
|
||||||
|
min-width: 80px;
|
||||||
|
line-height: 38px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 500;
|
||||||
|
border-radius: 5px;
|
||||||
|
word-wrap: break-word;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: 0px 3px 5px rgba(0,0,0,0.08);
|
||||||
|
border: 1px solid #e7e7eb
|
||||||
&:before
|
&:before
|
||||||
content "\efde"
|
content "\efde"
|
||||||
font-family remixicon
|
font-family remixicon
|
||||||
margin-right .5rem
|
margin-right .5rem
|
||||||
|
display inline-block
|
||||||
|
vertical-align middle
|
||||||
|
&:hover
|
||||||
|
border: 1px solid darken(water,20%)
|
||||||
|
box-shadow: 0 3px 5px water
|
||||||
|
a
|
||||||
|
color: darken(water,30%);
|
||||||
|
&:before
|
||||||
|
color: darken(water,30%);
|
||||||
|
a
|
||||||
|
display inline-block
|
||||||
|
vertical-align middle
|
||||||
|
text-decoration: none
|
||||||
|
color: body-color
|
||||||
|
|
@@ -1,7 +1,9 @@
|
|||||||
highlight-background = #f6f8fa
|
highlight-background = #2d2d2d
|
||||||
|
highlight-code = #f2f2f2
|
||||||
|
highlight-code-color = #c7254e
|
||||||
highlight-current-line = #efefef
|
highlight-current-line = #efefef
|
||||||
highlight-selection = #d6d6d6
|
highlight-selection = #000
|
||||||
highlight-foreground = #4d4d4c
|
highlight-foreground = #dedede
|
||||||
highlight-comment = #8e908c
|
highlight-comment = #8e908c
|
||||||
highlight-red = #f2777a
|
highlight-red = #f2777a
|
||||||
highlight-orange = #f99157
|
highlight-orange = #f99157
|
||||||
@@ -23,12 +25,15 @@ $line-numbers
|
|||||||
color highlight-comment
|
color highlight-comment
|
||||||
|
|
||||||
.article-entry
|
.article-entry
|
||||||
|
ol>li>ul
|
||||||
|
padding-inline-start: 2rem;
|
||||||
pre, code
|
pre, code
|
||||||
font-family inherit
|
font-family inherit
|
||||||
text-shadow none
|
text-shadow none
|
||||||
code
|
code
|
||||||
background highlight-background
|
color highlight-code-color
|
||||||
padding .25rem
|
background highlight-code
|
||||||
|
padding .25rem .6rem
|
||||||
border-radius(.4rem)
|
border-radius(.4rem)
|
||||||
pre
|
pre
|
||||||
@extend $code-block
|
@extend $code-block
|
||||||
@@ -146,3 +151,4 @@ pre
|
|||||||
.keyword
|
.keyword
|
||||||
.javascript .function
|
.javascript .function
|
||||||
color highlight-purple
|
color highlight-purple
|
||||||
|
|
||||||
|
@@ -12,3 +12,21 @@
|
|||||||
content "\eec3"
|
content "\eec3"
|
||||||
font-family remixicon
|
font-family remixicon
|
||||||
margin-right .5rem
|
margin-right .5rem
|
||||||
|
display inline-block
|
||||||
|
vertical-align middle
|
||||||
|
color: tag-color
|
||||||
|
.tag-list-link
|
||||||
|
display inline-block
|
||||||
|
vertical-align middle
|
||||||
|
text-decoration: none
|
||||||
|
height 30px
|
||||||
|
line-height 30px
|
||||||
|
padding: 0 15px
|
||||||
|
font-size: 1.5rem
|
||||||
|
border-radius: 15px
|
||||||
|
background-color tag-color
|
||||||
|
color white
|
||||||
|
box-shadow: 0 3px 5px rgba(0,0,0,0.12)
|
||||||
|
transition: .2s
|
||||||
|
&:hover
|
||||||
|
transform: scale(1.1)
|
||||||
|
BIN
source/images/sponsor.jpg
Normal file
BIN
source/images/sponsor.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
@@ -137,11 +137,11 @@
|
|||||||
margins: 5
|
margins: 5
|
||||||
});
|
});
|
||||||
|
|
||||||
//
|
// scroll down
|
||||||
$(document).ready(function ($) {
|
$(document).ready(function ($) {
|
||||||
$('.anchor').click(function (event) {
|
$('.anchor').click(function (e) {
|
||||||
event.preventDefault();
|
e.preventDefault();
|
||||||
$('main').animate({ scrollTop: $(this.hash).offset().top }, 'smooth');
|
$('main').animate({ scrollTop: $('.cover').height() }, 'smooth');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user