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>
<br>
<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>
<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">
@@ -58,7 +58,7 @@ git pull
### Configuration
let me know if you cant find something.
let me know if you cant find anything.
``` yml
# Menu-Sidebar
@@ -74,10 +74,10 @@ favicon: /favicon.ico
logo: /images/ayer-side.svg
# Cover Setting
# enable: [true|false]path: [background-image path]logo: [cover-logo path]
# enable: [true|false]path: [background-image]logo: [cover-logo-image]
cover:
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
# ProgressBar
@@ -100,11 +100,17 @@ nav_text:
# Catalog in article
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
# type0-close reward 1-only open in article which you have configured reward:true 2-open in all articles
reward_type: 2
# reward word
reward_wording: '请我喝杯咖啡吧~'
reward_wording: 'Buy me a cup of coffee~'
# qrcode image path
alipay: /images/alipay.jpg
# qrcode image path
@@ -113,7 +119,7 @@ weixin: /images/wechat.jpg
# Search
search: true
# RSS(npm i hexo-generator-feed)
# RSS
rss: /atom.xml
# Comment1、Valine (recommended)2、Gitalk
@@ -128,7 +134,7 @@ leancloud:
valine:
enable: true
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)
gitalk:
@@ -167,18 +173,18 @@ mathjax: true
# since year
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
```
### 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
$ 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
# Hexo-generator-search
@@ -188,13 +194,13 @@ pageFooter: true
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
$ 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
feed:
@@ -208,7 +214,7 @@ pageFooter: true
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
$ npm uninstall hexo-generator-index --save

View File

@@ -36,6 +36,14 @@ nav_text:
# 文章页是否显示目录
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-所有文章均有打赏
reward_type: 2

View File

@@ -19,6 +19,10 @@
positionFixedSelector: '.tocbot',
positionFixedClass: 'is-position-fixed',
fixedSidebarOffset: 'auto',
onClick: (e) => {
document.getElementById(e.target.innerText).scrollIntoView()
return false;
}
});
</script>
<% } %>

View File

@@ -9,8 +9,9 @@
else title = __('archive_a');
}
%>
<% if (pagination !== 2){ %>
<h1 class="page-type-title"><%- title %></h1>
<% } %>
<% if (pagination == 2){ %>
<% page.posts.each(function(post){ %>
<%- partial('article', {post: post, index: true}) %>

View File

@@ -12,6 +12,9 @@
<div class="article-meta">
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
<%- partial('post/category') %>
<% if(theme.word_count && theme.word_count.enable && !post.no_word_count){%>
<%- partial('post/word') %>
<% } %>
</div>
<% } %>
@@ -31,7 +34,7 @@
<%- 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>
@@ -49,7 +52,7 @@
<%- partial('post/nav') %>
<% } %>
<% if (theme.valine && theme.valine.enable){ %>
<% if (theme.valine && theme.valine.enable && !post.no_valine){ %>
<%- partial('post/valine', {
key: post.slug,
title: post.title,

View File

@@ -25,7 +25,7 @@
</div>
</div>
<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>
</section>
<% } %>

View File

@@ -8,9 +8,10 @@
</li>
<li>
<% if (theme.pageFooter){ %>
Powered by
<% 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>'; %>
<%- hexoLink %> Theme <%- themeLink %> by shenyu
<%- hexoLink %> Theme <%- themeLink %>
<% } %>
</li>
</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
border-bottom border-width border-color dotted
ul, ol, dl
margin 1.5rem 0
line-height line-height
margin 1.5rem 0 1.5rem 2rem
p, table, blockquote
margin 1.5rem 0

View File

@@ -53,7 +53,7 @@
.article-entry
font-size 110%
margin-top 1rem
margin-top .5rem
clearfix()
@extend $base-style
color body-color

View File

@@ -71,6 +71,12 @@
z-index 9998
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 (max-width: 768px)
.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-selection = #d6d6d6
highlight-foreground = #4d4d4c
highlight-selection = #000
highlight-foreground = #dedede
highlight-comment = #8e908c
highlight-red = #f2777a
highlight-orange = #f99157
@@ -23,12 +25,15 @@ $line-numbers
color highlight-comment
.article-entry
ol>li>ul
padding-inline-start: 2rem;
pre, code
font-family inherit
text-shadow none
code
background highlight-background
padding .25rem
color highlight-code-color
background highlight-code
padding .25rem .6rem
border-radius(.4rem)
pre
@extend $code-block
@@ -146,3 +151,4 @@ pre
.keyword
.javascript .function
color highlight-purple

View File

@@ -137,11 +137,11 @@
margins: 5
});
//
// scroll down
$(document).ready(function ($) {
$('.anchor').click(function (event) {
event.preventDefault();
$('main').animate({ scrollTop: $(this.hash).offset().top }, 'smooth');
$('.anchor').click(function (e) {
e.preventDefault();
$('main').animate({ scrollTop: $('.cover').height() }, 'smooth');
});
});