chore: v5.7.0

- Remove APlayer/Meting music player support
- Upgrade Artalk to 2.10.0 and add vote feature
- Cache plugins.yml to avoid re-rendering on every generate
- Add null safety for error_404 and highlight config
- Fix series date timestamp format
- Enhance shuoshuo mockPost compatibility and error handling
- Prevent scrollbar flicker when fancybox is open
- Update plugin versions (docsearch, katex, twikoo)
- Bump version to 5.7.0
This commit is contained in:
myw
2026-08-04 22:52:53 +08:00 Unverified
parent 85a1412b94
commit 51d36ef83a
20 changed files with 165 additions and 110 deletions
+5 -9
View File
@@ -69,18 +69,14 @@ hexo.extend.helper.register('aside_archives', function (options = {}) {
// Use template literal for better readability
const archiveHeader = `
<div class="item-headline">
<i class="fas fa-archive"></i>
<span>${_p('aside.card_archives')}</span>
${
data.length > limitedData.length
? `<a class="card-more-btn" href="${urlFor(archiveDir)}/"
<div class="item-headline"><i class="fas fa-archive"></i><span>${_p('aside.card_archives')}</span>${
data.length > limitedData.length
? `<a class="card-more-btn" href="${urlFor(archiveDir)}/"
title="${_p('aside.more_button')}">
<i class="fas fa-angle-right"></i>
</a>`
: ''
}
</div>
: ''
}</div>
`
// Use map for generating list items, join for performance
+1 -5
View File
@@ -89,11 +89,7 @@ hexo.extend.helper.register('aside_categories', function (categories, options =
<i class="fas fa-angle-right"></i></a>`
: ''
return `<div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>${this._p('aside.card_categories')}</span>
${moreButton}
</div>
return `<div class="item-headline"><i class="fas fa-folder-open"></i><span>${this._p('aside.card_categories')}</span>${moreButton}</div>
<ul class="card-category-list${isExpand && list.result ? ' expandBtn' : ''}" id="aside-cat-list">
${list.result}
</ul>`
+15 -2
View File
@@ -159,8 +159,21 @@ hexo.extend.helper.register('shuoshuoFN', (data, page) => {
item.date = moment.tz(parsed.format('YYYY-MM-DD HH:mm:ss'), timezone).format('YYYY-MM-DD HH:mm:ss')
// Render the content using Hexo's rendering engine to process any tags or markdown
const mockPost = { content: item.content }
hexo.execFilterSync('before_post_render', mockPost, { context: hexo })
const mockPost = {
content: item.content,
source: item.source || page.source || '',
full_source: page.full_source || '',
path: page.path || '',
layout: item.layout || page.layout || 'post',
raw: item.raw || item.content,
draft: false,
published: true
}
try {
hexo.execFilterSync('before_post_render', mockPost, { context: hexo })
} catch (e) {
// ignore third-party plugin errors, fallback to markdown-only rendering
}
item.content = mockPost.content
const codeBlocks = []