feat: 不再支持 butterfly.yml 寫法

improvement: 文章頁標題改為h1(seo)
improvement: 改用hexo 內置的 injector 插入 inject 的代碼
improvement: canonical 改為hexo提供的函數生成
improvement: 優化手機toc 的特效和按鈕出現的時機
remove: 刪除搜索不必要的配置
remove: 移除豆瓣配置,如需配置,請使用 hexo-butterfly-douban
fix: 修復上一個版本導致的搜索按鈕在pjax下無法點擊的bugs close #387
fix: 修復上一個版本更新的toc z-index 過低的bugs
This commit is contained in:
Jerry
2020-10-15 00:14:38 +08:00
Unverified
parent 83b7232841
commit 8014ddb65e
34 changed files with 80 additions and 113 deletions
@@ -9,4 +9,13 @@ hexo.extend.filter.register('before_generate', () => {
logger.error('請把 Hexo 升級到 V5.0.0 或更高的版本!')
process.exit(-1)
}
if (hexo.locals.get) {
const data = hexo.locals.get('data')
if (data && data.butterfly) {
logger.error(" 'butterfly.yml' is deprecated. Please use '_config.butterfly.yml' ")
logger.error(" 'butterfly.yml' 已經棄用,請使用 '_config.butterfly.yml' ")
process.exit(-1)
}
}
})
-18
View File
@@ -1,18 +0,0 @@
/**
* Note: configs in _data/butterfly.yml will merge configs with hexo.theme.config.
*/
'use strict'
const { deepMerge } = require('hexo-util')
hexo.on('generateBefore', function () {
const rootConfig = hexo.config
if (hexo.locals.get) {
const data = hexo.locals.get('data')
if (data && data.butterfly) {
hexo.theme.config = deepMerge(hexo.theme.config, data.butterfly)
}
}
hexo.theme.config.rootConfig = rootConfig
})
+2 -1
View File
@@ -6,7 +6,8 @@
'use strict'
hexo.extend.filter.register('before_post_render', function (data) {
if (hexo.theme.config.rootConfig.post_asset_folder) {
const { config } = this
if (config.post_asset_folder) {
const imgTestReg = /\.(png|jpe?g|gif|svg|webp)(\?.*)?$/
const topImg = data.top_img
const cover = data.cover
+2 -17
View File
@@ -2,13 +2,12 @@
* Butterfly
* @example
* page_description()
* injectHtml(data)
* cloudTags(source, minfontsize, maxfontsize, limit)
*/
'use strict'
const { stripHTML, escapeHTML } = require('hexo-util')
const { stripHTML, escapeHTML, prettyUrls } = require('hexo-util')
const crypto = require('crypto')
hexo.extend.helper.register('page_description', function () {
@@ -23,15 +22,6 @@ hexo.extend.helper.register('page_description', function () {
}
})
hexo.extend.helper.register('injectHtml', function (data) {
let result = ''
if (!data) return ''
for (let i = 0; i < data.length; i++) {
result += data[i]
}
return result
})
hexo.extend.helper.register('cloudTags', function (options = {}) {
const env = this
let source = options.source
@@ -65,12 +55,7 @@ hexo.extend.helper.register('cloudTags', function (options = {}) {
})
hexo.extend.helper.register('urlNoIndex', function () {
const { permalink } = hexo.config
let url = this.url.replace(/index\.html$/, '')
if (!permalink.endsWith('.html')) {
url = url.replace(/\.html$/, '')
}
return url
return prettyUrls(this.url, { trailing_index: false, trailing_html: false })
})
hexo.extend.helper.register('md5', function (path) {
+1 -1
View File
@@ -35,7 +35,7 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) {
return ''
}
let result = ''
const hexoConfig = hexo.theme.config.rootConfig
const hexoConfig = hexo.config
const config = hexo.theme.config
const limitNum = config.related_post.limit || 6
+22
View File
@@ -0,0 +1,22 @@
// Injector
'use strict'
hexo.extend.injector.register('head_end', function () {
const data = hexo.config.theme_config && hexo.config.theme_config.inject.head
return genResult(data)
})
hexo.extend.injector.register('body_end', () => {
const data = hexo.config.theme_config && hexo.config.theme_config.inject.bottom
return genResult(data)
})
function genResult (data) {
let result = ''
if (!data) return ''
for (let i = 0; i < data.length; i++) {
result += data[i]
}
return result
}