mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-10 21:17:07 +08:00
1. 部分配置更改 feat: 1. 移除 messenger 聊天插件 2. 更新 fackbook 版本號 3. 增加 香港繁體、日文和韓語 4. 使用的新的複製api 代替舊的 5. 增加 umami 分析 6. 增加 umami 獲取訪問量/訪客數 7. snackbar 增加透明度 8. 文章頁下, nav fixed 下 顯示文章標題 improvement: 1. 代碼優化 2. 修改部分用語 3. 回復之前的相對時間邏輯 4. timeline tag 樣式優化 5. 優化 seo 6. 優化 artalk 的最新評論 fix: 1. tag-hide toggle 圓角問題 2. lazyload 為 false 時,artalk 無法正常加載評論的 bug 3. 修復 gallery 出現抖動的 bug
64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
/**
|
|
* series plugin
|
|
* Syntax:
|
|
* {% series [series name] %}
|
|
* Usage:
|
|
* {% series %}
|
|
* {% series series1 %}
|
|
*/
|
|
|
|
'use strict'
|
|
|
|
const urlFor = require('hexo-util').url_for.bind(hexo)
|
|
const groups = {}
|
|
|
|
hexo.extend.filter.register('before_post_render', data => {
|
|
if (!hexo.theme.config.series.enable) return data
|
|
|
|
const { layout, series } = data
|
|
if (layout === 'post' && series) {
|
|
if (!groups[series]) groups[series] = []
|
|
groups[series].push({
|
|
title: data.title,
|
|
path: data.path,
|
|
date: data.date.unix()
|
|
})
|
|
}
|
|
return data
|
|
})
|
|
|
|
function series (args) {
|
|
const { series } = hexo.theme.config
|
|
if (!series.enable) {
|
|
hexo.log.warn('Series plugin is disabled in the theme config')
|
|
return ''
|
|
}
|
|
|
|
const seriesArr = args.length ? groups[args[0]] : groups[this.series]
|
|
|
|
if (!seriesArr) {
|
|
hexo.log.warn(`There is no series named "${args[0]}"`)
|
|
return ''
|
|
}
|
|
|
|
const isAsc = (series.order || 1) === 1 // 1: asc, -1: desc
|
|
const isSortByTitle = series.orderBy === 'title'
|
|
|
|
const compareFn = (a, b) => {
|
|
const itemA = isSortByTitle ? a.title.toUpperCase() : a.date
|
|
const itemB = isSortByTitle ? b.title.toUpperCase() : b.date
|
|
|
|
return itemA < itemB ? (isAsc ? -1 : 1) : itemA > itemB ? (isAsc ? 1 : -1) : 0
|
|
}
|
|
|
|
seriesArr.sort(compareFn)
|
|
|
|
const listItems = seriesArr.map(ele =>
|
|
`<li><a href="${urlFor(ele.path)}" title="${ele.title}">${ele.title}</a></li>`
|
|
).join('')
|
|
|
|
return series.number ? `<ol class="series-items">${listItems}</ol>` : `<ul class="series-items">${listItems}</ul>`
|
|
}
|
|
|
|
hexo.extend.tag.register('series', series, { ends: false })
|