18 Commits
v1.1 ... v1.3

Author SHA1 Message Date
shenyu
a38c874bb4 feat: close reward and comments in md 2020-01-09 20:26:44 +08:00
shenyu
63497f1ad2 fix:arrow jump&styles 2020-01-09 19:55:59 +08:00
shenyu
42b387c94a fix: wordcount style 2020-01-07 20:13:38 +08:00
shenyu
11a4aaacf2 feat: WordCount 2020-01-07 19:44:35 +08:00
沈宇
ca99e5de86 feat: WordCount 2020-01-07 14:05:02 +08:00
沈宇
758b378e82 fix: change anchor jump to scrollIntoView 2020-01-07 13:12:44 +08:00
沈宇
a8b0534861 Update _extend.styl 2020-01-06 13:19:29 +08:00
shenyu
246cae5164 fix: footer.ejs 2020-01-02 19:35:23 +08:00
shenyu
4e57d75cb9 fix 2019-12-31 22:59:03 +08:00
shenyu
faef444acd fix: README.md 2019-12-31 22:53:01 +08:00
shenyu
38131011fc fix: README.md 2019-12-31 22:48:55 +08:00
shenyu
4367d51759 release: v1.2 2019-12-30 22:01:38 +08:00
shenyu
ffb7bcb2d9 fix: style 2019-12-30 22:00:24 +08:00
shenyu
feb9fe196e fix: markdown style 2019-12-30 21:47:25 +08:00
shenyu
f1c03a8f21 fix: markdown list style 2019-12-30 21:23:12 +08:00
shenyu
0bc4b48060 fix: README.md 2019-12-30 20:22:40 +08:00
shenyu
1dbbc6110f fix: footer 2019-12-29 16:44:12 +08:00
shenyu
c90f268255 release: v1.1 2019-12-29 11:02:30 +08:00
19 changed files with 201 additions and 36 deletions

View File

@@ -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.2-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">
@@ -58,7 +58,7 @@ git pull
### Configuration ### Configuration
let me know if you cant find something. let me know if you cant find anything.
``` yml ``` yml
# Menu-Sidebar # Menu-Sidebar
@@ -74,10 +74,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 +100,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
# type0-close reward 1-only open in article which you have configured reward:true 2-open in all articles # type0-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 +119,10 @@ weixin: /images/wechat.jpg
# Search # Search
search: true search: true
# RSS(npm i hexo-generator-feed) # RSS
rss: /atom.xml rss: /atom.xml
# Comment1、Valine(recommended)2、Gitalk # Comment1、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 +134,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 +173,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 +194,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,7 +214,7 @@ 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

View File

@@ -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

View File

@@ -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>
<% } %> <% } %>
@@ -40,4 +44,4 @@
<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script> <script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>

View File

@@ -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}) %>

View File

@@ -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,

View File

@@ -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>
<% } %> <% } %>

View File

@@ -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>

View 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">
&nbsp; | &nbsp;
<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>
<% } %>

View File

@@ -0,0 +1,8 @@
'use strict';
module.exports = {
// 生成meta `generator`
meta_generator: true
};

13
scripts/filters/index.js Normal file
View 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);

View 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;

View 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}`);
});

View 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
View 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);
});

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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');
}); });
}); });