Files
hexo-theme-butterfly/scripts/list_archives.js
Jerry 336e221de5 V2.0.0
Breaking change
1. 手機端界面卡片化,同時,手機端也可以顯示側邊欄的內容
2. 修復當menu過多時,header界面出現錯亂的bug。當menu過多時,會變為sidebar模式
3. 增加medium-zoom大圖查看模式
4. 增加鼠標點擊特效:文字和愛心 兩個點擊特效
5. 主頁subtitle可以調用第三方api(金山詞霸每日一句、一言網的一句話、一句網、今日詩詞)
6. 添加 snackbar 彈窗
7. 修改nightshift為darkmode,darkmode可隨系統設置而自動切換,可設置隨時間而切換darkmode
8. 修復hexo自帶的標籤外掛(Tag Plugins)顯示bug(Block Quote、Code Block With caption、Gist、Youtube、Vimeo)
9. 主題所需要的css和js可根據需要配置CDN
10. 更改darkmode的加載方式,網站設置dark mode後,現在進入網頁不會在'閃'一下
11. 背景特效和背景圖片在手機界面也會顯示
12. 增加justified-gallery圖片顯示(Tag Plugins)
Feature
1. 文章頁面,字數統計、閲讀時長和閲讀量前面添加icon
2. 更改懶加載js
3. 升級typed.js/instantpage.js到最新版
4. 搜索和右下角按鈕添加退出特效
Fixed
1. 修復在 Hexo 4.0.0下,一些按鈕點擊會跳出一個空白頁的bug
2. 修復在 Hexo 4.0.0下,分頁按鈕出現代碼的bug
3. 修復當沒有設置評論時,右下角依舊出現'直達評論'按鈕的bug
4. 優化sidebar的打開速度
5. 修復文章頁標題左右邊距不平等的bug
6. 修復keywords讀取的bug
7. 修復當post/page 內容為空時,footer位置錯亂的bug
8. 修復在手機safari,toc sidebar底部內容被遮擋的bug
9. 完善Dark mode,一些界面的配色
10. 修復 card-archives 查看更多 跳轉bug
Remove
1. 移除Gitment
2. 移除Gallery
2019-11-03 02:21:01 +08:00

133 lines
3.2 KiB
JavaScript

'use strict';
hexo.extend.helper.register('list_archives', function (options = {}) {
const {
config
} = this;
const archiveDir = config.archive_dir;
const {
timezone
} = config;
const lang = this.page.lang || this.page.language || config.language;
let {
format
} = options;
const type = options.type || 'monthly';
const {
style = 'list', transform, separator = ', '
} = options;
const showCount = Object.prototype.hasOwnProperty.call(options, 'show_count') ? options.show_count : true;
const className = options.class || 'archive';
const order = options.order || -1;
const limit = 8;
let result = '';
var more_button
if (lang === 'zh-CN') {
more_button = '查看更多';
} else if (lang === 'zh-TW') {
more_button = '查看更多';
} else {
more_button = 'More';
}
if (!format) {
format = type === 'monthly' ? 'MMMM YYYY' : 'YYYY';
}
const posts = this.site.posts.sort('date', order);
if (!posts.length) return result;
const data = [];
let length = 0;
posts.forEach(post => {
// Clone the date object to avoid pollution
let date = post.date.clone();
if (timezone) date = date.tz(timezone);
if (lang) date = date.locale(lang);
const year = date.year();
const month = date.month() + 1;
const name = date.format(format);
const lastData = data[length - 1];
if (!lastData || lastData.name !== name) {
length = data.push({
name,
year,
month,
count: 1
});
} else {
lastData.count++;
}
});
const link = item => {
let url = `${archiveDir}/${item.year}/`;
if (type === 'monthly') {
if (item.month < 10) url += '0';
url += `${item.month}/`;
}
return this.url_for(url);
};
if (style === 'list') {
result += `<ul class="${className}-list">`;
for (let i = 0, len = data.length; i < Math.min(len, limit); i++) {
const item = data[i];
result += `<li class="${className}-list-item">`;
result += `<a class="${className}-list-link" href="${link(item)}">`;
result += transform ? transform(item.name) : item.name;
if (showCount) {
result += `<span class="${className}-list-count">${item.count}</span>`;
}
result += '</a>';
result += '</li>';
}
if (data.length > limit) {
result += `<li class="${className}-list-item">`;
result += `<a class="${className}-list-link is_center" href="` + '/' + `${archiveDir}" >`;
result += more_button;
result += '</a>';
result += '</li>';
}
result += '</ul>';
} else {
for (let i = 0, len = data.length; i < Math.min(len, limit); i++) {
const item = data[i];
if (i) result += separator;
result += `<a class="${className}-link" href="${link(item)}">`;
result += transform ? transform(item.name) : item.name;
if (showCount) {
result += `<span class="${className}-count">${item.count}</span>`;
}
result += '</a>';
}
if (data.length > limit) {
result += `<a class="${className}-link" is_center" href="${archiveDir}" >`;
result += more_button;
result += '</a>';
}
}
return result;
})