mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-10 21:17:07 +08:00
feat: 移除 katex copy-tex.css
feat: CDN可配置 cdnjs feat: cdn可設置 version 和 custom format feat: 點擊歸檔日期跳轉到頁面,標題顯示日期而不是‘歸檔’二字 closed #925 fix: Algolia搜索沒有結果 closed #923
This commit is contained in:
12
_config.yml
12
_config.yml
@@ -843,13 +843,18 @@ inject:
|
|||||||
# 非必要請不要修改
|
# 非必要請不要修改
|
||||||
CDN:
|
CDN:
|
||||||
# The CDN provider of internal scripts (主題內部 js 的 cdn 配置)
|
# The CDN provider of internal scripts (主題內部 js 的 cdn 配置)
|
||||||
# option: local/jsdelivr/unpkg
|
# option: local/jsdelivr/unpkg/cdnjs/custom
|
||||||
# Dev version cannot choose jsdelivr/unpkg (dev版的主題不能設置為 jsdelivr/unpkg)
|
# Dev version can only choose. ( dev版的主題只能設置為 local )
|
||||||
internal_provider: local
|
internal_provider: local
|
||||||
# The CDN provider of third party scripts (第三方 js 的 cdn 配置)
|
# The CDN provider of third party scripts (第三方 js 的 cdn 配置)
|
||||||
# option: local/jsdelivr/unpkg
|
# option: local/jsdelivr/unpkg/cdnjs/custom
|
||||||
# when set it to local, you need to install hexo-butterfly-extjs
|
# when set it to local, you need to install hexo-butterfly-extjs
|
||||||
third_party_provider: jsdelivr
|
third_party_provider: jsdelivr
|
||||||
|
# Custom format
|
||||||
|
# For example: https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file}
|
||||||
|
custom_format:
|
||||||
|
# Add version number to CDN, true or false
|
||||||
|
version: false
|
||||||
option:
|
option:
|
||||||
# main_css:
|
# main_css:
|
||||||
# main:
|
# main:
|
||||||
@@ -874,7 +879,6 @@ CDN:
|
|||||||
# mathjax:
|
# mathjax:
|
||||||
# katex:
|
# katex:
|
||||||
# katex_copytex:
|
# katex_copytex:
|
||||||
# katex_copytex_css:
|
|
||||||
# mermaid:
|
# mermaid:
|
||||||
# canvas_ribbon:
|
# canvas_ribbon:
|
||||||
# canvas_fluttering_ribbon:
|
# canvas_fluttering_ribbon:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ if !theme.disable_top_img && page.top_img !== false
|
|||||||
if top_img !== false
|
if top_img !== false
|
||||||
- var imgSource = top_img && top_img.indexOf('/') !== -1 ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}`
|
- var imgSource = top_img && top_img.indexOf('/') !== -1 ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}`
|
||||||
- var bg_img = top_img ? imgSource : ''
|
- var bg_img = top_img ? imgSource : ''
|
||||||
- var site_title = is_archive() ? fragment_cache('findArchivesTitle', function(){return findArchivesTitle(theme.menu);}) : page.title || page.tag || page.category || config.title
|
- var site_title = is_archive() ? findArchivesTitle(page, theme.menu, date) : page.title || page.tag || page.category || config.title
|
||||||
- var isHomeClass = is_home() ? 'full_page' : 'not-home-page'
|
- var isHomeClass = is_home() ? 'full_page' : 'not-home-page'
|
||||||
- is_post() ? isHomeClass = 'post-bg' : isHomeClass
|
- is_post() ? isHomeClass = 'post-bg' : isHomeClass
|
||||||
else
|
else
|
||||||
|
|||||||
1
layout/includes/third-party/math/katex.pug
vendored
1
layout/includes/third-party/math/katex.pug
vendored
@@ -1,6 +1,5 @@
|
|||||||
link(rel="stylesheet" type="text/css" href=url_for(theme.asset.katex))
|
link(rel="stylesheet" type="text/css" href=url_for(theme.asset.katex))
|
||||||
script(src=url_for(theme.asset.katex_copytex))
|
script(src=url_for(theme.asset.katex_copytex))
|
||||||
link(rel="stylesheet" type="text/css" href=url_for(theme.asset.katex_copytex_css))
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
document.querySelectorAll('#article-container span.katex-display').forEach(item => {
|
document.querySelectorAll('#article-container span.katex-display').forEach(item => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hexo-theme-butterfly",
|
"name": "hexo-theme-butterfly",
|
||||||
"version": "4.3.0-b2",
|
"version": "4.3.0-b3",
|
||||||
"description": "A Simple and Card UI Design theme for Hexo",
|
"description": "A Simple and Card UI Design theme for Hexo",
|
||||||
"main": "package.json",
|
"main": "package.json",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"email": "my@crazywong.com"
|
"email": "my@crazywong.com"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"hexo-renderer-stylus": "^2.0.1",
|
"hexo-renderer-stylus": "^2.1.0",
|
||||||
"hexo-renderer-pug": "^3.0.0"
|
"hexo-renderer-pug": "^3.0.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://butterfly.js.org/",
|
"homepage": "https://butterfly.js.org/",
|
||||||
|
|||||||
180
plugins.yml
Normal file
180
plugins.yml
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
algolia_search_v4:
|
||||||
|
name: algoliasearch
|
||||||
|
file: dist/algoliasearch-lite.umd.js
|
||||||
|
version: 4.13.1
|
||||||
|
instantsearch_v4:
|
||||||
|
name: instantsearch.js
|
||||||
|
file: dist/instantsearch.production.min.js
|
||||||
|
version: 4.41.0
|
||||||
|
pjax:
|
||||||
|
name: pjax
|
||||||
|
file: pjax.min.js
|
||||||
|
version: 0.2.8
|
||||||
|
gitalk:
|
||||||
|
name: gitalk
|
||||||
|
file: dist/gitalk.min.js
|
||||||
|
version: 1.7.2
|
||||||
|
gitalk_css:
|
||||||
|
name: gitalk
|
||||||
|
file: dist/gitalk.css
|
||||||
|
version: 1.7.2
|
||||||
|
blueimp_md5:
|
||||||
|
name: blueimp-md5
|
||||||
|
file: js/md5.min.js
|
||||||
|
version: 2.19.0
|
||||||
|
valine:
|
||||||
|
name: valine
|
||||||
|
file: dist/Valine.min.js
|
||||||
|
version: 1.4.18
|
||||||
|
disqusjs:
|
||||||
|
name: disqusjs
|
||||||
|
file: dist/browser/disqusjs.es2015.umd.min.js
|
||||||
|
version: 3.0.1
|
||||||
|
disqusjs_css:
|
||||||
|
name: disqusjs
|
||||||
|
file: dist/browser/styles/disqusjs.css
|
||||||
|
version: 3.0.1
|
||||||
|
twikoo:
|
||||||
|
name: twikoo
|
||||||
|
file: dist/twikoo.all.min.js
|
||||||
|
version: 1.5.11
|
||||||
|
waline_js:
|
||||||
|
name: '@waline/client'
|
||||||
|
file: dist/waline.js
|
||||||
|
other_name: waline
|
||||||
|
version: 2.5.1
|
||||||
|
waline_css:
|
||||||
|
name: '@waline/client'
|
||||||
|
file: dist/waline.css
|
||||||
|
other_name: waline
|
||||||
|
version: 2.5.1
|
||||||
|
sharejs:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: sharejs/dist/js/social-share.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
sharejs_css:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: sharejs/dist/css/share.min.css
|
||||||
|
version: 1.1.3
|
||||||
|
mathjax:
|
||||||
|
name: mathjax
|
||||||
|
file: es5/tex-mml-chtml.js
|
||||||
|
version: 3.2.2
|
||||||
|
katex:
|
||||||
|
name: katex
|
||||||
|
file: dist/katex.min.css
|
||||||
|
other_name: KaTeX
|
||||||
|
version: 0.16.0
|
||||||
|
katex_copytex:
|
||||||
|
name: katex
|
||||||
|
file: dist/contrib/copy-tex.min.js
|
||||||
|
other_name: KaTeX
|
||||||
|
version: 0.16.0
|
||||||
|
mermaid:
|
||||||
|
name: mermaid
|
||||||
|
file: dist/mermaid.min.js
|
||||||
|
version: 9.1.1
|
||||||
|
canvas_ribbon:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/canvas-ribbon.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
canvas_fluttering_ribbon:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/canvas-fluttering-ribbon.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
canvas_nest:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/canvas-nest.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
activate_power_mode:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/activate-power-mode.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
fireworks:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/fireworks.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
click_heart:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/click-heart.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
ClickShowText:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: dist/click-show-text.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
lazyload:
|
||||||
|
name: vanilla-lazyload
|
||||||
|
file: dist/lazyload.iife.min.js
|
||||||
|
version: 17.8.2
|
||||||
|
instantpage:
|
||||||
|
name: instant.page
|
||||||
|
file: instantpage.js
|
||||||
|
version: 5.1.0
|
||||||
|
typed:
|
||||||
|
name: typed.js
|
||||||
|
file: lib/typed.min.js
|
||||||
|
version: 2.0.12
|
||||||
|
pangu:
|
||||||
|
name: pangu
|
||||||
|
file: dist/browser/pangu.min.js
|
||||||
|
version: 4.0.7
|
||||||
|
fancybox_css_v4:
|
||||||
|
name: '@fancyapps/ui'
|
||||||
|
file: dist/fancybox.css
|
||||||
|
version: 4.0.27
|
||||||
|
fancybox_v4:
|
||||||
|
name: '@fancyapps/ui'
|
||||||
|
file: dist/fancybox.umd.js
|
||||||
|
version: 4.0.27
|
||||||
|
medium_zoom:
|
||||||
|
name: medium-zoom
|
||||||
|
file: dist/medium-zoom.min.js
|
||||||
|
version: 1.0.6
|
||||||
|
snackbar_css:
|
||||||
|
name: node-snackbar
|
||||||
|
file: dist/snackbar.min.css
|
||||||
|
version: 0.1.16
|
||||||
|
snackbar:
|
||||||
|
name: node-snackbar
|
||||||
|
file: dist/snackbar.min.js
|
||||||
|
version: 0.1.16
|
||||||
|
fontawesomeV6:
|
||||||
|
name: '@fortawesome/fontawesome-free'
|
||||||
|
file: css/all.min.css
|
||||||
|
other_name: font-awesome
|
||||||
|
version: 6.1.1
|
||||||
|
flickr_justified_gallery_js:
|
||||||
|
name: flickr-justified-gallery
|
||||||
|
file: dist/fjGallery.min.js
|
||||||
|
version: 2.0.0
|
||||||
|
flickr_justified_gallery_css:
|
||||||
|
name: flickr-justified-gallery
|
||||||
|
file: dist/fjGallery.css
|
||||||
|
version: 2.0.0
|
||||||
|
aplayer_css:
|
||||||
|
name: aplayer
|
||||||
|
file: dist/APlayer.min.css
|
||||||
|
version: 1.10.1
|
||||||
|
aplayer_js:
|
||||||
|
name: aplayer
|
||||||
|
file: dist/APlayer.min.js
|
||||||
|
version: 1.10.1
|
||||||
|
meting_js:
|
||||||
|
name: butterfly-extsrc
|
||||||
|
file: metingjs/dist/Meting.min.js
|
||||||
|
version: 1.1.3
|
||||||
|
prismjs_js:
|
||||||
|
name: prismjs
|
||||||
|
file: prism.js
|
||||||
|
other_name: prism
|
||||||
|
version: 1.28.0
|
||||||
|
prismjs_lineNumber_js:
|
||||||
|
name: prismjs
|
||||||
|
file: plugins/line-numbers/prism-line-numbers.min.js
|
||||||
|
other_name: prism
|
||||||
|
version: 1.28.0
|
||||||
|
prismjs_autoloader:
|
||||||
|
name: prismjs
|
||||||
|
file: plugins/autoloader/prism-autoloader.min.js
|
||||||
|
other_name: prism
|
||||||
|
version: 1.28.0
|
||||||
94
scripts/events/cdn.js
Normal file
94
scripts/events/cdn.js
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/**
|
||||||
|
* Butterfly
|
||||||
|
* Merge CDN
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const { version } = require('../../package.json')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
hexo.extend.filter.register('before_generate', () => {
|
||||||
|
const themeConfig = hexo.theme.config
|
||||||
|
const { CDN } = themeConfig
|
||||||
|
|
||||||
|
const thirdPartySrc = hexo.render.renderSync({ path: path.join(hexo.theme_dir,'/plugins.yml'), engine: 'yaml'})
|
||||||
|
const internalSrc = {
|
||||||
|
main: {
|
||||||
|
name: 'hexo-theme-butterfly',
|
||||||
|
file: 'js/main.js',
|
||||||
|
version
|
||||||
|
},
|
||||||
|
utils: {
|
||||||
|
name: 'hexo-theme-butterfly',
|
||||||
|
file: 'js/utils.js',
|
||||||
|
version
|
||||||
|
},
|
||||||
|
translate: {
|
||||||
|
name: 'hexo-theme-butterfly',
|
||||||
|
file: 'js/tw_cn.js',
|
||||||
|
version
|
||||||
|
},
|
||||||
|
local_search: {
|
||||||
|
name: 'hexo-theme-butterfly',
|
||||||
|
file: 'js/search/local-search.js',
|
||||||
|
version
|
||||||
|
},
|
||||||
|
algolia_js: {
|
||||||
|
name: 'hexo-theme-butterfly',
|
||||||
|
file: 'js/search/algolia.js',
|
||||||
|
version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const minFile = (file) => {
|
||||||
|
return file.replace(/(?<!\.min)\.(js|css)$/g, ext => '.min' + ext)
|
||||||
|
}
|
||||||
|
|
||||||
|
const createCDNLink = (data, type, cond = '') => {
|
||||||
|
Object.keys(data).map(key => {
|
||||||
|
let { name, version, file, other_name } = data[key]
|
||||||
|
|
||||||
|
const min_file = minFile(file)
|
||||||
|
const cdnjs_name = other_name || name
|
||||||
|
const cdnjs_file = file.replace(/^[lib|dist]*\/|browser\//g, '')
|
||||||
|
const min_cdnjs_file = minFile(cdnjs_file)
|
||||||
|
if (cond === 'internal') file = `source/${file}`
|
||||||
|
const verType = CDN.version ? `@${version}` : ''
|
||||||
|
|
||||||
|
const value = {
|
||||||
|
version,
|
||||||
|
name,
|
||||||
|
file,
|
||||||
|
cdnjs_file,
|
||||||
|
min_file,
|
||||||
|
min_cdnjs_file,
|
||||||
|
cdnjs_name
|
||||||
|
}
|
||||||
|
const cdnSource = {
|
||||||
|
local: cond === 'internal' ? cdnjs_file : `/pluginsSrc/${name}/${file}`,
|
||||||
|
jsdelivr: `https://cdn.jsdelivr.net/npm/${name}${verType}/${min_file}`,
|
||||||
|
unpkg: `https://unpkg.com/${name}${verType}/${file}`,
|
||||||
|
cdnjs: `https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${min_cdnjs_file}`,
|
||||||
|
custom: (CDN.custom_format || '').replace(/\$\{(.+?)\}/g, (match, $1) => value[$1])
|
||||||
|
}
|
||||||
|
|
||||||
|
data[key] = cdnSource[type]
|
||||||
|
})
|
||||||
|
|
||||||
|
if (cond === 'internal') data['main_css'] = 'css/index.css'
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete null value
|
||||||
|
const deleteNullValue = obj => {
|
||||||
|
if (!obj) return
|
||||||
|
for (const i in obj) {
|
||||||
|
obj[i] === null && delete obj[i]
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
themeConfig.asset = Object.assign(createCDNLink(internalSrc,CDN.internal_provider,'internal'),
|
||||||
|
createCDNLink(thirdPartySrc,CDN.third_party_provider), deleteNullValue(CDN.option))
|
||||||
|
})
|
||||||
14
scripts/events/comment.js
Normal file
14
scripts/events/comment.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Capitalize the first letter of comment name
|
||||||
|
*/
|
||||||
|
|
||||||
|
hexo.extend.filter.register('before_generate', () => {
|
||||||
|
const themeConfig = hexo.theme.config
|
||||||
|
let { use } = themeConfig.comments
|
||||||
|
if (!use) return
|
||||||
|
if (typeof use === 'string') {
|
||||||
|
use = use.split(',')
|
||||||
|
}
|
||||||
|
const newArray = use.map(item => item.toLowerCase().replace(/\b[a-z]/g, s => s.toUpperCase()))
|
||||||
|
themeConfig.comments.use = newArray
|
||||||
|
})
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
/**
|
|
||||||
* Butterfly
|
|
||||||
* 1. Merge CDN
|
|
||||||
* 2. Capitalize the first letter of comment name
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { version } = require('../../package.json')
|
|
||||||
const path = require('path')
|
|
||||||
|
|
||||||
hexo.extend.filter.register('before_generate', () => {
|
|
||||||
const themeConfig = hexo.theme.config
|
|
||||||
const { CDN, comments } = themeConfig
|
|
||||||
const jsdelivr = 'https://cdn.jsdelivr.net/npm/'
|
|
||||||
const unpkg = 'https://unpkg.com/'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Merge CDN
|
|
||||||
*/
|
|
||||||
|
|
||||||
const internalSrcCDN = (pre) => {
|
|
||||||
return {
|
|
||||||
main_css: '/css/index.css',
|
|
||||||
main: `${pre}hexo-theme-butterfly@${version}/source/js/main.js`,
|
|
||||||
utils: `${pre}hexo-theme-butterfly@${version}/source/js/utils.js`,
|
|
||||||
translate: `${pre}hexo-theme-butterfly@${version}/source/js/tw_cn.js`,
|
|
||||||
local_search: `${pre}hexo-theme-butterfly@${version}/source/js/search/local-search.js`,
|
|
||||||
algolia_js: `${pre}hexo-theme-butterfly@${version}/source/js/search/algolia.js`,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const internalSrcLocal = {
|
|
||||||
main_css: '/css/index.css',
|
|
||||||
main: '/js/main.js',
|
|
||||||
utils: '/js/utils.js',
|
|
||||||
translate: '/js/tw_cn.js',
|
|
||||||
local_search: '/js/search/local-search.js',
|
|
||||||
algolia_js: '/js/search/algolia.js',
|
|
||||||
}
|
|
||||||
|
|
||||||
const thirdPartySrcCDN = (pre) => {
|
|
||||||
return {
|
|
||||||
algolia_search_v4: `${pre}algoliasearch@4/dist/algoliasearch-lite.umd.js`,
|
|
||||||
instantsearch_v4: `${pre}instantsearch.js@4/dist/instantsearch.production.min.js`,
|
|
||||||
pjax: `${pre}pjax/pjax.min.js`,
|
|
||||||
gitalk: `${pre}gitalk@latest/dist/gitalk.min.js`,
|
|
||||||
gitalk_css: `${pre}gitalk/dist/gitalk.css`,
|
|
||||||
blueimp_md5: `${pre}blueimp-md5/js/md5.min.js`,
|
|
||||||
valine: `${pre}valine/dist/Valine.min.js`,
|
|
||||||
disqusjs: `${pre}disqusjs@3/dist/browser/disqusjs.es2015.umd.min.js`,
|
|
||||||
disqusjs_css: `${pre}disqusjs@3/dist/browser/styles/disqusjs.css`,
|
|
||||||
twikoo: `${pre}twikoo@1/dist/twikoo.all.min.js`,
|
|
||||||
waline_js: `${pre}@waline/client/dist/waline.js`,
|
|
||||||
waline_css: `${pre}@waline/client/dist/waline.css`,
|
|
||||||
sharejs: `${pre}butterfly-extsrc@1/ShareJS/dist/js/social-share.min.js`,
|
|
||||||
sharejs_css: `${pre}butterfly-extsrc@1/ShareJS/dist/css/share.min.css`,
|
|
||||||
mathjax: `${pre}mathjax@3/es5/tex-mml-chtml.js`,
|
|
||||||
katex: `${pre}katex@latest/dist/katex.min.css`,
|
|
||||||
katex_copytex: `${pre}katex@latest/dist/contrib/copy-tex.min.js`,
|
|
||||||
katex_copytex_css: `${pre}katex@latest/dist/contrib/copy-tex.css`,
|
|
||||||
mermaid: `${pre}mermaid/dist/mermaid.min.js`,
|
|
||||||
canvas_ribbon: `${pre}butterfly-extsrc@1/dist/canvas-ribbon.min.js`,
|
|
||||||
canvas_fluttering_ribbon: `${pre}butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js`,
|
|
||||||
canvas_nest: `${pre}butterfly-extsrc@1/dist/canvas-nest.min.js`,
|
|
||||||
activate_power_mode: `${pre}butterfly-extsrc@1/dist/activate-power-mode.min.js`,
|
|
||||||
fireworks: `${pre}butterfly-extsrc@1/dist/fireworks.min.js`,
|
|
||||||
click_heart: `${pre}butterfly-extsrc@1/dist/click-heart.min.js`,
|
|
||||||
ClickShowText: `${pre}butterfly-extsrc@1/dist/click-show-text.min.js`,
|
|
||||||
lazyload: `${pre}vanilla-lazyload/dist/lazyload.iife.min.js`,
|
|
||||||
instantpage: `${pre}instant.page@5/instantpage.js`,
|
|
||||||
typed: `${pre}typed.js/lib/typed.min.js`,
|
|
||||||
pangu: `${pre}pangu@4/dist/browser/pangu.min.js`,
|
|
||||||
fancybox_css_v4: `${pre}@fancyapps/ui/dist/fancybox.css`,
|
|
||||||
fancybox_v4: `${pre}@fancyapps/ui/dist/fancybox.umd.js`,
|
|
||||||
medium_zoom: `${pre}medium-zoom/dist/medium-zoom.min.js`,
|
|
||||||
snackbar_css: `${pre}node-snackbar/dist/snackbar.min.css`,
|
|
||||||
snackbar: `${pre}node-snackbar/dist/snackbar.min.js`,
|
|
||||||
fontawesomeV6: `${pre}@fortawesome/fontawesome-free@6/css/all.min.css`,
|
|
||||||
flickr_justified_gallery_js: `${pre}flickr-justified-gallery@2/dist/fjGallery.min.js`,
|
|
||||||
flickr_justified_gallery_css: `${pre}flickr-justified-gallery@2/dist/fjGallery.css`,
|
|
||||||
aplayer_css: `${pre}aplayer@1/dist/APlayer.min.css`,
|
|
||||||
aplayer_js: `${pre}aplayer@1/dist/APlayer.min.js`,
|
|
||||||
meting_js: `${pre}butterfly-extsrc@1/MetingJS/dist/Meting.min.js`,
|
|
||||||
prismjs_js: `${pre}prismjs@1/prism.js`,
|
|
||||||
prismjs_lineNumber_js: `${pre}prismjs@1/plugins/line-numbers/prism-line-numbers.min.js`,
|
|
||||||
prismjs_autoloader: `${pre}prismjs@1/plugins/autoloader/prism-autoloader.min.js`,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete null value
|
|
||||||
const deleteNullValue = obj => {
|
|
||||||
if (!obj) return
|
|
||||||
for (const i in obj) {
|
|
||||||
obj[i] === null && delete obj[i]
|
|
||||||
}
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
|
|
||||||
const defaultVal = (obj, choose) => {
|
|
||||||
if (obj === 'internal') {
|
|
||||||
if (choose === 'local') return internalSrcLocal
|
|
||||||
else if (choose === 'unpkg') return internalSrcCDN(unpkg)
|
|
||||||
else return internalSrcCDN(jsdelivr)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj === 'external') {
|
|
||||||
if (choose === 'local') {
|
|
||||||
let result = {}
|
|
||||||
try {
|
|
||||||
const data = path.join(hexo.plugin_dir,'hexo-butterfly-extjs/plugins.yml')
|
|
||||||
result = hexo.render.renderSync({ path: data, engine: 'yaml'})
|
|
||||||
Object.keys(result).map(key => {
|
|
||||||
result[key] = '/pluginsSrc/' + result[key]
|
|
||||||
})
|
|
||||||
} catch (e) {}
|
|
||||||
return result
|
|
||||||
} else if (choose === 'unpkg') return thirdPartySrcCDN(unpkg)
|
|
||||||
else return thirdPartySrcCDN(jsdelivr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
themeConfig.asset = Object.assign(defaultVal('internal', CDN.internal_provider),
|
|
||||||
defaultVal('external', CDN.third_party_provider), deleteNullValue(CDN.option))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Capitalize the first letter of comment name
|
|
||||||
*/
|
|
||||||
|
|
||||||
let { use } = comments
|
|
||||||
|
|
||||||
if (!use) return
|
|
||||||
|
|
||||||
if (typeof use === 'string') {
|
|
||||||
use = use.split(',')
|
|
||||||
}
|
|
||||||
|
|
||||||
const newArray = use.map(item => item.toLowerCase().replace(/\b[a-z]/g, s => s.toUpperCase()))
|
|
||||||
|
|
||||||
themeConfig.comments.use = newArray
|
|
||||||
})
|
|
||||||
@@ -71,7 +71,13 @@ hexo.extend.helper.register('injectHtml', function (data) {
|
|||||||
return result
|
return result
|
||||||
})
|
})
|
||||||
|
|
||||||
hexo.extend.helper.register('findArchivesTitle', function (menu) {
|
hexo.extend.helper.register('findArchivesTitle', function (page, menu, date) {
|
||||||
|
if (page.year) {
|
||||||
|
const dateStr = page.month ? `${page.year}-${page.month}` : `${page.year}`
|
||||||
|
const date_format = page.month ? hexo.theme.config.aside.card_archives.format : 'YYYY'
|
||||||
|
return date(dateStr, date_format)
|
||||||
|
}
|
||||||
|
|
||||||
const defaultTitle = this._p('page.archives')
|
const defaultTitle = this._p('page.archives')
|
||||||
if (!menu) return defaultTitle
|
if (!menu) return defaultTitle
|
||||||
|
|
||||||
|
|||||||
@@ -91,11 +91,19 @@ window.addEventListener('load', () => {
|
|||||||
templates: {
|
templates: {
|
||||||
item(data) {
|
item(data) {
|
||||||
const link = data.permalink ? data.permalink : (GLOBAL_CONFIG.root + data.path)
|
const link = data.permalink ? data.permalink : (GLOBAL_CONFIG.root + data.path)
|
||||||
|
const result = data._highlightResult
|
||||||
|
const content = result.contentStripTruncate
|
||||||
|
? cutContent(result.contentStripTruncate.value)
|
||||||
|
: result.contentStrip
|
||||||
|
? cutContent(result.contentStrip.value)
|
||||||
|
: result.content
|
||||||
|
? cutContent(result.content.value)
|
||||||
|
: ''
|
||||||
return `
|
return `
|
||||||
<a href="${link}" class="algolia-hit-item-link">
|
<a href="${link}" class="algolia-hit-item-link">
|
||||||
${data._highlightResult.title.value || 'no-title'}
|
${result.title.value || 'no-title'}
|
||||||
</a>
|
</a>
|
||||||
<p class="algolia-hit-item-content">${cutContent(data._highlightResult.contentStripTruncate.value)}</p>`
|
<p class="algolia-hit-item-content">${content}</p>`
|
||||||
},
|
},
|
||||||
empty: function (data) {
|
empty: function (data) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user