mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-16 20:20:53 +08:00
1. 更改手機頁面的menu和toc的顯示方式和顯示特效(ipad也能看TOC) 3. 可設置複製時,内容自動加上版權信息 4. 可修改tag的top_img 5. 可修改category的top_img 6. 可修改valine的背景 7. archives頁UI優化 8. ICP增加icon #37 9. 可設置主頁top_img的高度 10. 可設置主頁site-info的位置 11. category頁和tag頁的UI可以設置與主頁UI一樣 #31 12. 主頁subtitle可設置多個句子(不再限制2個) #37 13. 設置menu時,頭尾添加空格不受影響 14. 調整post頁的佈局 15. 书签添加icon 16. 公告icon效果 17. 首頁歸檔模塊,可設置數量限制,會顯示'查看更多'按鈕 18. 右下角按鈕調整。 19. 修复文章cover隨機图片生成,同一篇文章,不同地方的cover顯示不一样的bug 20. 修復gitalk語言設置無效的bug #35 21. 修復post頁面,當沒有設置word count時,閲讀量前有'|" 22. 修复sub-menu在safari的显示问题 23. 修复tags页评论居中问题 24. 修复header a hover 白色问题 25. 修復夜間模式下footer的顔色bug 26. 修復英文語言下,書簽英文顯示不完整的問題
133 lines
3.1 KiB
JavaScript
133 lines
3.1 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;
|
|
}) |