21 Commits
v1.2 ... v1.5

Author SHA1 Message Date
沈宇
8c7a957f6e Create LICENSE 2020-01-15 08:35:30 +08:00
shenyu
7d408946e9 fix: docs 2020-01-15 08:25:50 +08:00
shenyu
df2f61aad0 fix: style 2020-01-15 07:57:43 +08:00
shenyu
bffec8c8d9 fix: style 2020-01-13 22:02:19 +08:00
shenyu
380d4c6501 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-01-13 21:36:53 +08:00
shenyu
8f93d6494e fix: sponsor.jpg 2020-01-13 21:36:32 +08:00
沈宇
f610f83e09 Create FUNDING.yml 2020-01-13 21:30:21 +08:00
shenyu
9dcd4aca7c feat: sponsor 2020-01-13 21:25:44 +08:00
shenyu
77ecc930bd style: Categories,Tags 2020-01-13 20:58:07 +08:00
shenyu
54216601f2 release: v1.3 2020-01-09 21:32:48 +08:00
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
24 changed files with 280 additions and 27 deletions

12
.github/FUNDING.yml vendored Normal file
View 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
View 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.

View File

@@ -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.2-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)
![Screenshot](screenshots/hexo-theme-ayer.png) ![Screenshot](screenshots/hexo-theme-ayer.png)
### Install ### Install
@@ -100,6 +102,12 @@ 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
@@ -214,6 +222,21 @@ pageFooter: true
$ 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

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

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,7 +8,7 @@
</li> </li>
<li> <li>
<% if (theme.pageFooter){ %> <% if (theme.pageFooter){ %>
Power by 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 %> <%- hexoLink %> Theme <%- themeLink %>

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

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

View File

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

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

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

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