Fix: archive 归档页面排序错乱的 Bug

This commit is contained in:
XPoet 2020-03-27 20:45:27 +08:00
parent 3e701f05e6
commit b6cd295afe
6 changed files with 57 additions and 35 deletions

2
.gitignore vendored
View File

@ -42,3 +42,5 @@ testem.log
# System Files
.DS_Store
Thumbs.db
_config-test.yml

View File

@ -52,7 +52,7 @@ valine:
appkey: # your leancloud application appkey
notify: false # mail notifier, https://github.com/xCss/Valine/wiki
verify: false # Verification code
placeholder: 评论一下再走吧~
placeholder: Comment input placeholder
# Show PV/UV of the website/page with busuanzi.

View File

@ -1,29 +1,20 @@
<% const posts = is_archive() ? site.posts : page.posts %>
<%
const postList = createNewArchivePosts(is_archive() ? site.posts : page.posts)
%>
<div class="archive-container">
<% let last; %>
<% posts.each(function(post, i){ %>
<% let year = post.date.year(); %>
<% if (last != year) { %>
<% if (last != null){ %>
</div></section>
<% } %>
<% last = year; %>
<section class="archives-wrap">
<div class="archive-year">
<%= year %>
</div>
<div class="archive-article-list">
<% } %>
<div class="archive-article-item">
<a class="archive-article-title" href="<%- url_for(post.path) %>"><%= post.title %></a>
<span class="archive-article-date"> <%= date(post.date, 'MM-DD') %> </span>
</div>
<% postList.forEach(postYear => { %>
<section class="archive-item">
<div class="archive-year"><%= postYear.year %></div>
<ul class="article-list">
<% postYear.postList.forEach(post => { %>
<li class="article-item">
<a class="article-title"
href="<%- url_for(post.path) %>"
><%= post.title %></a>
<span class="article-date"><%= date(post.date, 'MM-DD') %></span>
</li>
<% }) %>
<% if (posts.length){ %>
</div>
</ul>
</section>
<% } %>
<% }) %>
</div>

View File

@ -5,3 +5,19 @@ hexo.extend.helper.register('isInHomePaging', function (pagePath, route) {
return false;
}
});
hexo.extend.helper.register('createNewArchivePosts', function (posts) {
const postList = [], postYearList = [];
posts.forEach(post => postYearList.push(post.date.year()));
Array.from(new Set(postYearList)).forEach(year => {
postList.push({
year: year,
postList: []
})
});
postList.forEach(item => {
posts.forEach(post => item.year === post.date.year() && item.postList.push(post))
});
postList.forEach(item => item.postList.sort((a, b) => a.date.unix() - b.date.unix()));
return postList;
});

View File

@ -6,7 +6,7 @@ $archive-article-date-font-size = 14px;
.archive-container {
.archives-wrap {
.archive-item {
margin-bottom: 20px;
.archive-year {
@ -15,14 +15,14 @@ $archive-article-date-font-size = 14px;
font-weight: 600;
}
.archive-article-list {
.article-list {
padding-left: 10px;
.archive-article-item {
.article-item {
margin: 10px 0;
font-size: $archive-article-item-title-font-size;
a.archive-article-title {
a.article-title {
color: $archive-article-title-color;
&:hover {
@ -30,7 +30,7 @@ $archive-article-date-font-size = 14px;
}
}
.archive-article-date {
.article-date {
font-size: $archive-article-date-font-size;
float: right;
}

View File

@ -85,3 +85,16 @@ a:hover, a:active {
transform: scaleX(1);
}
}
// Clearfix. http://nicolasgallagher.com/micro-clearfix-hack/
clearfix() {
&:before,
&:after {
content: " ";
display: table;
}
&:after {
clear: both;
}
}