mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-10 21:17:07 +08:00
feat: 更新 lazyload 配置,支持原生 lazyload 功能
feat: 代碼優化 feat: 優化 pageType 邏輯 fix: 修復解密文章後, chartjs 沒有加載的 bug
This commit is contained in:
@@ -11,7 +11,7 @@ div
|
|||||||
if theme.instantpage
|
if theme.instantpage
|
||||||
script(src=url_for(theme.asset.instantpage), type='module')
|
script(src=url_for(theme.asset.instantpage), type='module')
|
||||||
|
|
||||||
if theme.lazyload.enable
|
if theme.lazyload.enable && !theme.lazyload.native
|
||||||
script(src=url_for(theme.asset.lazyload))
|
script(src=url_for(theme.asset.lazyload))
|
||||||
|
|
||||||
if theme.snackbar.enable
|
if theme.snackbar.enable
|
||||||
@@ -33,7 +33,7 @@ div
|
|||||||
!= partial("includes/third-party/prismjs", {}, { cache: true })
|
!= partial("includes/third-party/prismjs", {}, { cache: true })
|
||||||
|
|
||||||
if theme.aside.enable && theme.aside.card_newest_comments.enable
|
if theme.aside.enable && theme.aside.card_newest_comments.enable
|
||||||
if theme.pjax.enable || (!is_post() && page.aside !== false)
|
if theme.pjax.enable || (globalPageType !== 'post' && page.aside !== false)
|
||||||
!= partial("includes/third-party/newest-comments/index", {}, { cache: true })
|
!= partial("includes/third-party/newest-comments/index", {}, { cache: true })
|
||||||
|
|
||||||
!= fragment_cache('injectBottom', function(){return injectHtml(theme.inject.bottom)})
|
!= fragment_cache('injectBottom', function(){return injectHtml(theme.inject.bottom)})
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
- var pageTitle
|
- var pageTitle
|
||||||
- is_archive() ? page.title = findArchivesTitle(page, theme.menu, date) : ''
|
- globalPageType === 'archive' ? page.title = findArchivesTitle(page, theme.menu, date) : ''
|
||||||
- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
|
case globalPageType
|
||||||
- else if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
|
when 'tag'
|
||||||
- else if (is_current('/404.html', [strict])) pageTitle = _p('error404')
|
- pageTitle = _p('page.tag') + ': ' + page.tag
|
||||||
- else pageTitle = page.title || config.title || ''
|
when 'category'
|
||||||
|
- pageTitle = _p('page.category') + ': ' + page.category
|
||||||
|
when '404'
|
||||||
|
- pageTitle = _p('error404')
|
||||||
|
default
|
||||||
|
- pageTitle = page.title || config.title || ''
|
||||||
|
|
||||||
|
|
||||||
- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : ''
|
- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : ''
|
||||||
- var tabTitle = is_home() || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title
|
- var tabTitle = globalPageType === 'home' || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title
|
||||||
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
|
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
|
||||||
- var pageCopyright = config.copyright || config.author
|
- var pageCopyright = config.copyright || config.author
|
||||||
- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff'
|
- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ if theme.Open_Graph_meta.enable
|
|||||||
-
|
-
|
||||||
const coverVal = page.cover_type === 'img' ? page.cover : theme.avatar.img
|
const coverVal = page.cover_type === 'img' ? page.cover : theme.avatar.img
|
||||||
let ogOption = Object.assign({
|
let ogOption = Object.assign({
|
||||||
type: is_post() ? 'article' : 'website',
|
type: globalPageType === 'post' ? 'article' : 'website',
|
||||||
image: coverVal ? full_url_for(coverVal) : '',
|
image: coverVal ? full_url_for(coverVal) : '',
|
||||||
fb_admins: theme.facebook_comments.user_id || '',
|
fb_admins: theme.facebook_comments.user_id || '',
|
||||||
fb_app_id: theme.facebook_comments.app_id || '',
|
fb_app_id: theme.facebook_comments.app_id || '',
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ script.
|
|||||||
buttonText: '!{_p("load_more")}'
|
buttonText: '!{_p("load_more")}'
|
||||||
},
|
},
|
||||||
isPhotoFigcaption: !{theme.photofigcaption},
|
isPhotoFigcaption: !{theme.photofigcaption},
|
||||||
islazyload: !{theme.lazyload.enable},
|
islazyloadPlugin: !{theme.lazyload.enable && !theme.lazyload.native},
|
||||||
isAnchor: !{theme.anchor.auto_update || false},
|
isAnchor: !{theme.anchor.auto_update || false},
|
||||||
percent: {
|
percent: {
|
||||||
toc: !{theme.toc.scroll_percent},
|
toc: !{theme.toc.scroll_percent},
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
var showToc = false
|
var showToc = false
|
||||||
if (theme.aside.enable && page.aside !== false) {
|
if (theme.aside.enable && page.aside !== false) {
|
||||||
let tocEnable = false
|
let tocEnable = false
|
||||||
if (is_post() && theme.toc.post) tocEnable = true
|
if (globalPageType === 'post' && theme.toc.post) tocEnable = true
|
||||||
else if (is_page() && theme.toc.page) tocEnable = true
|
else if (globalPageType === 'page' && theme.toc.page) tocEnable = true
|
||||||
const pageToc = typeof page.toc === 'boolean' ? page.toc : tocEnable
|
const pageToc = typeof page.toc === 'boolean' ? page.toc : tocEnable
|
||||||
showToc = pageToc && (toc(page.content) !== '' || page.encrypt === true)
|
showToc = pageToc && (toc(page.content) !== '' || page.encrypt === true)
|
||||||
}
|
}
|
||||||
@@ -19,9 +19,7 @@
|
|||||||
script#config-diff.
|
script#config-diff.
|
||||||
var GLOBAL_CONFIG_SITE = {
|
var GLOBAL_CONFIG_SITE = {
|
||||||
title: '!{titleVal}',
|
title: '!{titleVal}',
|
||||||
isPost: !{is_post()},
|
|
||||||
isHome: !{is_home()},
|
|
||||||
isHighlightShrink: !{isHighlightShrink},
|
isHighlightShrink: !{isHighlightShrink},
|
||||||
isToc: !{showToc},
|
isToc: !{showToc},
|
||||||
isShuoshuo: !{page.type == 'shuoshuo'}
|
pageType: '!{page.type == 'shuoshuo' ? 'shuoshuo' : globalPageType}'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,33 +6,32 @@
|
|||||||
var bg_img = ''
|
var bg_img = ''
|
||||||
|
|
||||||
if !theme.disable_top_img && page.top_img !== false
|
if !theme.disable_top_img && page.top_img !== false
|
||||||
if is_post()
|
case globalPageType
|
||||||
- top_img = page.top_img || page.cover || theme.default_top_img
|
when 'post'
|
||||||
else if is_page()
|
- top_img = page.top_img || page.cover || theme.default_top_img
|
||||||
- top_img = page.top_img || theme.default_top_img
|
when 'page'
|
||||||
else if is_tag()
|
- top_img = page.top_img || theme.default_top_img
|
||||||
- top_img = theme.tag_per_img && theme.tag_per_img[page.tag]
|
when 'tag'
|
||||||
- top_img = top_img || returnTopImg(theme.tag_img)
|
- top_img = theme.tag_per_img && theme.tag_per_img[page.tag] || returnTopImg(theme.tag_img)
|
||||||
else if is_category()
|
when 'category'
|
||||||
- top_img = theme.category_per_img && theme.category_per_img[page.category]
|
- top_img = theme.category_per_img && theme.category_per_img[page.category] || returnTopImg(theme.category_img)
|
||||||
- top_img = top_img || returnTopImg(theme.category_img)
|
when 'home'
|
||||||
else if is_home()
|
- top_img = returnTopImg(theme.index_img)
|
||||||
- top_img = returnTopImg(theme.index_img)
|
when 'archive'
|
||||||
else if is_archive()
|
- top_img = returnTopImg(theme.archive_img)
|
||||||
- top_img = returnTopImg(theme.archive_img)
|
default
|
||||||
else
|
- top_img = page.top_img || theme.default_top_img
|
||||||
- top_img = page.top_img || theme.default_top_img
|
|
||||||
|
|
||||||
if top_img !== false
|
if top_img !== false
|
||||||
- bg_img = getBgPath(top_img)
|
- bg_img = getBgPath(top_img)
|
||||||
- headerClassName = is_home() ? 'full_page' : is_post() ? 'post-bg' : 'not-home-page'
|
- headerClassName = globalPageType === 'home' ? 'full_page' : globalPageType === 'post' ? 'post-bg' : 'not-home-page'
|
||||||
|
|
||||||
header#page-header(class=`${headerClassName + isFixedClass}` style=bg_img)
|
header#page-header(class=`${headerClassName + isFixedClass}` style=bg_img)
|
||||||
include ./nav.pug
|
include ./nav.pug
|
||||||
if top_img !== false
|
if top_img !== false
|
||||||
if is_post()
|
if globalPageType === 'post'
|
||||||
include ./post-info.pug
|
include ./post-info.pug
|
||||||
else if is_home()
|
else if globalPageType === 'home'
|
||||||
#site-info
|
#site-info
|
||||||
h1#site-title=config.title
|
h1#site-title=config.title
|
||||||
if theme.subtitle.enable
|
if theme.subtitle.enable
|
||||||
@@ -48,6 +47,6 @@ header#page-header(class=`${headerClassName + isFixedClass}` style=bg_img)
|
|||||||
#page-site-info
|
#page-site-info
|
||||||
h1#site-title=page.title || page.tag || page.category
|
h1#site-title=page.title || page.tag || page.category
|
||||||
else
|
else
|
||||||
//- improvement seo
|
//- improve seo
|
||||||
if !is_post()
|
if globalPageType !== 'post'
|
||||||
h1.title-seo=page.title || page.tag || page.category || config.title
|
h1.title-seo=page.title || page.tag || page.category || config.title
|
||||||
@@ -5,7 +5,7 @@ nav#nav
|
|||||||
img.site-icon(src=url_for(theme.nav.logo) alt='Logo')
|
img.site-icon(src=url_for(theme.nav.logo) alt='Logo')
|
||||||
if theme.nav.display_title
|
if theme.nav.display_title
|
||||||
span.site-name=config.title
|
span.site-name=config.title
|
||||||
if is_post()
|
if globalPageType === 'post'
|
||||||
a.nav-page-title(href=url_for('/'))
|
a.nav-page-title(href=url_for('/'))
|
||||||
span.site-name=(page.title || config.title)
|
span.site-name=(page.title || config.title)
|
||||||
#menus
|
#menus
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
- var globalPageType = getPageType(page, is_home)
|
||||||
- var htmlClassHideAside = theme.aside.enable && theme.aside.hide ? 'hide-aside' : ''
|
- var htmlClassHideAside = theme.aside.enable && theme.aside.hide ? 'hide-aside' : ''
|
||||||
- page.aside = is_archive() ? theme.aside.display.archive: is_category() ? theme.aside.display.category : is_tag() ? theme.aside.display.tag : page.aside
|
- page.aside = globalPageType === 'archive' ? theme.aside.display.archive: globalPageType === 'category' ? theme.aside.display.category : globalPageType === 'tag' ? theme.aside.display.tag : page.aside
|
||||||
- var hideAside = !theme.aside.enable || page.aside === false ? 'hide-aside' : ''
|
- var hideAside = !theme.aside.enable || page.aside === false ? 'hide-aside' : ''
|
||||||
- var pageType = is_post() ? 'post' : 'page'
|
- var pageType = globalPageType === 'post' ? 'post' : 'page'
|
||||||
- pageType = page.type ? pageType + ' type-' + page.type : pageType
|
- pageType = page.type ? pageType + ' type-' + page.type : pageType
|
||||||
|
|
||||||
doctype html
|
doctype html
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ mixin indexPostUI()
|
|||||||
div.post-bg(style=`background: ${post_cover}`)
|
div.post-bg(style=`background: ${post_cover}`)
|
||||||
.recent-post-info(class=no_cover)
|
.recent-post-info(class=no_cover)
|
||||||
a.article-title(href=url_for(link) title=title)
|
a.article-title(href=url_for(link) title=title)
|
||||||
if is_home() && (article.top || article.sticky > 0)
|
if globalPageType === 'home' && (article.top || article.sticky > 0)
|
||||||
i.fas.fa-thumbtack.sticky
|
i.fas.fa-thumbtack.sticky
|
||||||
= title
|
= title
|
||||||
.article-meta-wrap
|
.article-meta-wrap
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
escape: false
|
escape: false
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_post()
|
if globalPageType === 'post'
|
||||||
- let paginationOrder = theme.post_pagination === 1 ? { prev: page.prev, next: page.next } : { prev: page.next, next: page.prev }
|
- let paginationOrder = theme.post_pagination === 1 ? { prev: page.prev, next: page.next } : { prev: page.next, next: page.prev }
|
||||||
|
|
||||||
nav#pagination.pagination-post
|
nav#pagination.pagination-post
|
||||||
@@ -32,6 +32,6 @@ if is_post()
|
|||||||
else
|
else
|
||||||
nav#pagination
|
nav#pagination
|
||||||
.pagination
|
.pagination
|
||||||
if is_home()
|
if globalPageType === 'home'
|
||||||
- options.format = 'page/%d/#content-inner'
|
- options.format = 'page/%d/#content-inner'
|
||||||
!=paginator(options)
|
!=paginator(options)
|
||||||
@@ -3,7 +3,7 @@ mixin rightsideItem(array)
|
|||||||
each item in array
|
each item in array
|
||||||
case item
|
case item
|
||||||
when 'readmode'
|
when 'readmode'
|
||||||
if is_post() && readmode
|
if globalPageType === 'post' && readmode
|
||||||
button#readmode(type="button" title=_p('rightside.readmode_title'))
|
button#readmode(type="button" title=_p('rightside.readmode_title'))
|
||||||
i.fas.fa-book-open
|
i.fas.fa-book-open
|
||||||
when 'translate'
|
when 'translate'
|
||||||
@@ -45,7 +45,7 @@ mixin rightsideItem(array)
|
|||||||
button#rightside-config(type="button" title=_p("rightside.setting"))
|
button#rightside-config(type="button" title=_p("rightside.setting"))
|
||||||
i.fas.fa-cog.fa-spin
|
i.fas.fa-cog.fa-spin
|
||||||
else
|
else
|
||||||
if is_post()
|
if globalPageType === 'post'
|
||||||
if (readmode || translate.enable || (darkmode.enable && darkmode.button))
|
if (readmode || translate.enable || (darkmode.enable && darkmode.button))
|
||||||
button#rightside-config(type="button" title=_p("rightside.setting"))
|
button#rightside-config(type="button" title=_p("rightside.setting"))
|
||||||
i.fas.fa-cog.fa-spin
|
i.fas.fa-cog.fa-spin
|
||||||
|
|||||||
5
layout/includes/third-party/abcjs/index.pug
vendored
5
layout/includes/third-party/abcjs/index.pug
vendored
@@ -1,6 +1,3 @@
|
|||||||
if theme.abcjs.enable
|
if theme.abcjs.enable
|
||||||
if theme.abcjs.per_page
|
if theme.abcjs.per_page && (['post','page'].includes(globalPageType)) || page.abcjs
|
||||||
if is_post() || is_page()
|
|
||||||
include ./abcjs.pug
|
|
||||||
else if page.abcjs
|
|
||||||
include ./abcjs.pug
|
include ./abcjs.pug
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ script.
|
|||||||
(() => {
|
(() => {
|
||||||
let artalkItem = null
|
let artalkItem = null
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
|
|
||||||
const destroyArtalk = () => {
|
const destroyArtalk = () => {
|
||||||
if (artalkItem) {
|
if (artalkItem) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
|
|
||||||
const disqusReset = conf => {
|
const disqusReset = conf => {
|
||||||
window.DISQUS && window.DISQUS.reset({
|
window.DISQUS && window.DISQUS.reset({
|
||||||
@@ -72,7 +72,7 @@ script.
|
|||||||
if (!{lazyload}) btf.loadComment(document.getElementById('disqus_thread'), loadDisqus)
|
if (!{lazyload}) btf.loadComment(document.getElementById('disqus_thread'), loadDisqus)
|
||||||
else {
|
else {
|
||||||
loadDisqus()
|
loadDisqus()
|
||||||
!{ count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : '' }
|
!{ count ? `GLOBAL_CONFIG_SITE.pageType === 'post' && getCount()` : '' }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
window.loadOtherComment = loadDisqus
|
window.loadOtherComment = loadDisqus
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'== 'shuoshuo'
|
||||||
const dqOption = !{JSON.stringify(dqOption)}
|
const dqOption = !{JSON.stringify(dqOption)}
|
||||||
|
|
||||||
const destroyDisqusjs = () => {
|
const destroyDisqusjs = () => {
|
||||||
@@ -79,7 +79,7 @@ script.
|
|||||||
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('disqusjs-wrap'), loadDisqusjs)
|
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('disqusjs-wrap'), loadDisqusjs)
|
||||||
else {
|
else {
|
||||||
loadDisqusjs()
|
loadDisqusjs()
|
||||||
!{ theme.comments.count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : '' }
|
!{ theme.comments.count ? `GLOBAL_CONFIG_SITE.pageType === 'post' && getCount()` : '' }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
window.loadOtherComment = loadDisqusjs
|
window.loadOtherComment = loadDisqusjs
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(()=>{
|
(()=>{
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'== 'shuoshuo'
|
||||||
|
|
||||||
const loadFBComment = (el = document, path) => {
|
const loadFBComment = (el = document, path) => {
|
||||||
if (isShuoshuo) {
|
if (isShuoshuo) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const getGiscusTheme = theme => theme === 'dark' ? '!{dark_theme}' : '!{light_theme}'
|
const getGiscusTheme = theme => theme === 'dark' ? '!{dark_theme}' : '!{light_theme}'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const commentCount = n => {
|
const commentCount = n => {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
|
|
||||||
const loadLivere = (el, path) => {
|
const loadLivere = (el, path) => {
|
||||||
window.livereOptions = {
|
window.livereOptions = {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const loadScript = src => {
|
const loadScript = src => {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const getCount = () => {
|
const getCount = () => {
|
||||||
@@ -33,7 +33,7 @@ script.
|
|||||||
path: isShuoshuo ? path : (option && option.path) || path
|
path: isShuoshuo ? path : (option && option.path) || path
|
||||||
})
|
})
|
||||||
|
|
||||||
!{count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : ''}
|
!{count ? `GLOBAL_CONFIG_SITE.pageType === 'post' && getCount()` : ''}
|
||||||
|
|
||||||
isShuoshuo && (window.shuoshuoComment.destroyTwikoo = () => {
|
isShuoshuo && (window.shuoshuoComment.destroyTwikoo = () => {
|
||||||
if (el.children.length) {
|
if (el.children.length) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
const getUtterancesTheme = theme => theme === 'dark' ? '#{dark_theme}' : '#{light_theme}'
|
const getUtterancesTheme = theme => theme === 'dark' ? '#{dark_theme}' : '#{light_theme}'
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ if site.data.valine
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const initValine = (el, path) => {
|
const initValine = (el, path) => {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
let initFn = window.walineFn || null
|
let initFn = window.walineFn || null
|
||||||
const isShuoshuo = GLOBAL_CONFIG_SITE.isShuoshuo
|
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
|
||||||
const option = !{JSON.stringify(option)}
|
const option = !{JSON.stringify(option)}
|
||||||
|
|
||||||
const destroyWaline = ele => ele.destroy()
|
const destroyWaline = ele => ele.destroy()
|
||||||
|
|||||||
16
layout/includes/third-party/math/chartjs.pug
vendored
16
layout/includes/third-party/math/chartjs.pug
vendored
@@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
script.
|
script.
|
||||||
(() => {
|
(() => {
|
||||||
const $chartjs = document.querySelectorAll('#article-container .chartjs-container')
|
|
||||||
if ($chartjs.length === 0) return
|
|
||||||
|
|
||||||
const applyThemeDefaultsConfig = theme => {
|
const applyThemeDefaultsConfig = theme => {
|
||||||
if (theme === 'dark-mode') {
|
if (theme === 'dark-mode') {
|
||||||
Chart.defaults.color = "!{fontColor.dark}"
|
Chart.defaults.color = "!{fontColor.dark}"
|
||||||
@@ -35,10 +32,10 @@ script.
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const runChartJS = () => {
|
const runChartJS = ele => {
|
||||||
window.loadChartJS = true
|
window.loadChartJS = true
|
||||||
|
|
||||||
Array.from($chartjs).forEach((item, index) => {
|
Array.from(ele).forEach((item, index) => {
|
||||||
const chartSrc = item.firstElementChild
|
const chartSrc = item.firstElementChild
|
||||||
const chartID = item.getAttribute('data-chartjs-id') || ('chartjs-' + index) // Use custom ID or default ID
|
const chartID = item.getAttribute('data-chartjs-id') || ('chartjs-' + index) // Use custom ID or default ID
|
||||||
const width = item.getAttribute('data-width')
|
const width = item.getAttribute('data-width')
|
||||||
@@ -80,12 +77,15 @@ script.
|
|||||||
}
|
}
|
||||||
|
|
||||||
const loadChartJS = () => {
|
const loadChartJS = () => {
|
||||||
window.loadChartJS ? runChartJS() : btf.getScript('!{url_for(theme.asset.chartjs)}').then(runChartJS)
|
const chartJSEle = document.querySelectorAll('#article-container .chartjs-container')
|
||||||
|
if (chartJSEle.length === 0) return
|
||||||
|
|
||||||
|
window.loadChartJS ? runChartJS(chartJSEle) : btf.getScript('!{url_for(theme.asset.chartjs)}').then(() => runChartJS(chartJSEle))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Listen for theme change events
|
// Listen for theme change events
|
||||||
btf.addGlobalFn('themeChange', runChartJS, 'chartjs')
|
btf.addGlobalFn('themeChange', loadChartJS, 'chartjs')
|
||||||
btf.addGlobalFn('encrypt', runChartJS, 'chartjs')
|
btf.addGlobalFn('encrypt', loadChartJS, 'chartjs')
|
||||||
|
|
||||||
window.pjax ? loadChartJS() : document.addEventListener('DOMContentLoaded', loadChartJS)
|
window.pjax ? loadChartJS() : document.addEventListener('DOMContentLoaded', loadChartJS)
|
||||||
})()
|
})()
|
||||||
|
|||||||
4
layout/includes/third-party/math/index.pug
vendored
4
layout/includes/third-party/math/index.pug
vendored
@@ -1,10 +1,10 @@
|
|||||||
case theme.math.use
|
case theme.math.use
|
||||||
when 'mathjax'
|
when 'mathjax'
|
||||||
if (theme.math.per_page && (is_post() || is_page())) || page.mathjax
|
if (theme.math.per_page && (['post','page'].includes(globalPageType))) || page.mathjax
|
||||||
include ./mathjax.pug
|
include ./mathjax.pug
|
||||||
|
|
||||||
when 'katex'
|
when 'katex'
|
||||||
if (theme.math.per_page && (is_post() || is_page())) || page.katex
|
if (theme.math.per_page && (['post','page'].includes(globalPageType))) || page.katex
|
||||||
include ./katex.pug
|
include ./katex.pug
|
||||||
|
|
||||||
if theme.mermaid.enable
|
if theme.mermaid.enable
|
||||||
|
|||||||
@@ -23,8 +23,9 @@ script.
|
|||||||
result += '<div class="aside-list-item">'
|
result += '<div class="aside-list-item">'
|
||||||
|
|
||||||
if (!{theme.aside.card_newest_comments.avatar} && array[i].avatar) {
|
if (!{theme.aside.card_newest_comments.avatar} && array[i].avatar) {
|
||||||
const imgAttr = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}'
|
const imgAttr = '!{theme.lazyload.enable && !theme.lazyload.native ? "data-lazy-src" : "src"}'
|
||||||
result += `<a href="${array[i].url}" class="thumbnail"><img ${imgAttr}="${array[i].avatar}" alt="${array[i].nick}"></a>`
|
const lazyloadNative = '!{theme.lazyload.enable && theme.lazyload.native ? "loading=\"lazy\"" : ""}'
|
||||||
|
result += `<a href="${array[i].url}" class="thumbnail"><img ${imgAttr}="${array[i].avatar}" alt="${array[i].nick}" ${lazyloadNative}></a>`
|
||||||
}
|
}
|
||||||
|
|
||||||
result += `<div class="content">
|
result += `<div class="content">
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ script.
|
|||||||
|
|
||||||
const insertData = async () => {
|
const insertData = async () => {
|
||||||
try {
|
try {
|
||||||
if (GLOBAL_CONFIG_SITE.isPost && config.page_pv) {
|
if (GLOBAL_CONFIG_SITE.pageType === 'post' && config.page_pv) {
|
||||||
const pagePV = document.getElementById('umamiPV')
|
const pagePV = document.getElementById('umamiPV')
|
||||||
if (pagePV) {
|
if (pagePV) {
|
||||||
const data = await getData(true)
|
const data = await getData(true)
|
||||||
|
|||||||
@@ -12,4 +12,3 @@
|
|||||||
.toc-content.toc-div-class(class=tocExpandClass style="display:none")!=toc(page.origin, {list_number: tocNumber})
|
.toc-content.toc-div-class(class=tocExpandClass style="display:none")!=toc(page.origin, {list_number: tocNumber})
|
||||||
else
|
else
|
||||||
.toc-content(class=tocExpandClass)!=toc(page.content, {list_number: tocNumber})
|
.toc-content(class=tocExpandClass)!=toc(page.content, {list_number: tocNumber})
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#aside-content.aside-content
|
#aside-content.aside-content
|
||||||
//- post
|
//- post
|
||||||
if is_post()
|
if globalPageType === 'post'
|
||||||
- const tocStyle = page.toc_style_simple
|
- const tocStyle = page.toc_style_simple
|
||||||
- const tocStyleVal = tocStyle === true || tocStyle === false ? tocStyle : theme.toc.style_simple
|
- const tocStyleVal = tocStyle === true || tocStyle === false ? tocStyle : theme.toc.style_simple
|
||||||
if showToc && tocStyleVal
|
if showToc && tocStyleVal
|
||||||
|
|||||||
@@ -33,4 +33,3 @@ block content
|
|||||||
if page.comments !== false && theme.comments.use
|
if page.comments !== false && theme.comments.use
|
||||||
- var commentsJsLoad = true
|
- var commentsJsLoad = true
|
||||||
!=partial('includes/third-party/comments/index', {}, {cache: true})
|
!=partial('includes/third-party/comments/index', {}, {cache: true})
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hexo-theme-butterfly",
|
"name": "hexo-theme-butterfly",
|
||||||
"version": "5.3.0-b1",
|
"version": "5.3.0-b2",
|
||||||
"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": {
|
||||||
|
|||||||
@@ -547,6 +547,7 @@ hexo.extend.filter.register('before_generate', () => {
|
|||||||
instantpage: false,
|
instantpage: false,
|
||||||
lazyload: {
|
lazyload: {
|
||||||
enable: false,
|
enable: false,
|
||||||
|
native: false,
|
||||||
field: 'site',
|
field: 'site',
|
||||||
placeholder: null,
|
placeholder: null,
|
||||||
blur: false
|
blur: false
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
const urlFor = require('hexo-util').url_for.bind(hexo)
|
const urlFor = require('hexo-util').url_for.bind(hexo)
|
||||||
|
|
||||||
const lazyload = htmlContent => {
|
const lazyload = htmlContent => {
|
||||||
|
if (hexo.theme.config.lazyload.native) {
|
||||||
|
return htmlContent.replace(/(<img.*?)(>)/ig, '$1 loading=\'lazy\'$2')
|
||||||
|
}
|
||||||
|
|
||||||
const bg = hexo.theme.config.lazyload.placeholder ? urlFor(hexo.theme.config.lazyload.placeholder) : 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
|
const bg = hexo.theme.config.lazyload.placeholder ? urlFor(hexo.theme.config.lazyload.placeholder) : 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
|
||||||
return htmlContent.replace(/(<img.*? src=)/ig, `$1 "${bg}" data-lazy-src=`)
|
return htmlContent.replace(/(<img.*? src=)/ig, `$1 "${bg}" data-lazy-src=`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,3 +131,17 @@ hexo.extend.helper.register('shuoshuoFN', (data, page) => {
|
|||||||
|
|
||||||
return finalResult
|
return finalResult
|
||||||
})
|
})
|
||||||
|
|
||||||
|
hexo.extend.helper.register('getPageType', (page, isHome) => {
|
||||||
|
const { layout, tag, category, type, archive } = page
|
||||||
|
if (layout) return layout
|
||||||
|
if (tag) return 'tag'
|
||||||
|
if (category) return 'category'
|
||||||
|
if (archive) return 'archive'
|
||||||
|
if (type) {
|
||||||
|
if (type === 'tags' || type === 'categories') return type
|
||||||
|
else return 'page'
|
||||||
|
}
|
||||||
|
if (isHome) return 'home'
|
||||||
|
return 'post'
|
||||||
|
})
|
||||||
|
|||||||
@@ -16,48 +16,35 @@
|
|||||||
|
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const parseArgs = args => {
|
const parseArgs = args => args.join(' ').split(',')
|
||||||
return args.join(' ').split(',')
|
|
||||||
}
|
|
||||||
|
|
||||||
const generateStyle = (bg, color) => {
|
const generateStyle = (bg, color) => {
|
||||||
let style = 'style="'
|
let style = 'style="'
|
||||||
if (bg) {
|
if (bg) style += `background-color: ${bg};`
|
||||||
style += `background-color: ${bg};`
|
if (color) style += `color: ${color}`
|
||||||
}
|
|
||||||
if (color) {
|
|
||||||
style += `color: ${color}`
|
|
||||||
}
|
|
||||||
style += '"'
|
style += '"'
|
||||||
return style
|
return style
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideInline = args => {
|
const hideInline = args => {
|
||||||
const [content, display = 'Click', bg = false, color = false] = parseArgs(args)
|
const [content, display = 'Click', bg = false, color = false] = parseArgs(args)
|
||||||
const group = generateStyle(bg, color)
|
const style = generateStyle(bg, color)
|
||||||
|
return `<span class="hide-inline"><button type="button" class="hide-button" ${style}>${display}</button><span class="hide-content">${content}</span></span>`
|
||||||
return `<span class="hide-inline"><button type="button" class="hide-button" ${group}>${display}
|
|
||||||
</button><span class="hide-content">${content}</span></span>`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideBlock = (args, content) => {
|
const hideBlock = (args, content) => {
|
||||||
const [display = 'Click', bg = false, color = false] = parseArgs(args)
|
const [display = 'Click', bg = false, color = false] = parseArgs(args)
|
||||||
const group = generateStyle(bg, color)
|
const style = generateStyle(bg, color)
|
||||||
|
const renderedContent = hexo.render.renderSync({ text: content, engine: 'markdown' })
|
||||||
return `<div class="hide-block"><button type="button" class="hide-button" ${group}>${display}
|
return `<div class="hide-block"><button type="button" class="hide-button" ${style}>${display}</button><div class="hide-content">${renderedContent}</div></div>`
|
||||||
</button><div class="hide-content">${hexo.render.renderSync({ text: content, engine: 'markdown' })}</div></div>`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideToggle = (args, content) => {
|
const hideToggle = (args, content) => {
|
||||||
const [display, bg = false, color = false] = parseArgs(args)
|
const [display, bg = false, color = false] = parseArgs(args)
|
||||||
const group = generateStyle(bg, color)
|
const style = generateStyle(bg, color)
|
||||||
let border = ''
|
const border = bg ? `style="border: 1px solid ${bg}"` : ''
|
||||||
|
const renderedContent = hexo.render.renderSync({ text: content, engine: 'markdown' })
|
||||||
if (bg) {
|
return `<details class="toggle" ${border}><summary class="toggle-button" ${style}>${display}</summary><div class="toggle-content">${renderedContent}</div></details>`
|
||||||
border = `style="border: 1px solid ${bg}"`
|
|
||||||
}
|
|
||||||
|
|
||||||
return `<details class="toggle" ${border}><summary class="toggle-button" ${group}>${display}</summary><div class="toggle-content">${hexo.render.renderSync({ text: content, engine: 'markdown' })}</div></details>`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hexo.extend.tag.register('hideInline', hideInline)
|
hexo.extend.tag.register('hideInline', hideInline)
|
||||||
|
|||||||
@@ -864,7 +864,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
menuMask && menuMask.addEventListener('click', () => { sidebarFn.close() })
|
menuMask && menuMask.addEventListener('click', () => { sidebarFn.close() })
|
||||||
|
|
||||||
clickFnOfSubMenu()
|
clickFnOfSubMenu()
|
||||||
GLOBAL_CONFIG.islazyload && lazyloadImg()
|
GLOBAL_CONFIG.islazyloadPlugin && lazyloadImg()
|
||||||
GLOBAL_CONFIG.copyright !== undefined && addCopyright()
|
GLOBAL_CONFIG.copyright !== undefined && addCopyright()
|
||||||
|
|
||||||
if (GLOBAL_CONFIG.autoDarkmode) {
|
if (GLOBAL_CONFIG.autoDarkmode) {
|
||||||
@@ -890,7 +890,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
initAdjust()
|
initAdjust()
|
||||||
justifiedIndexPostUI()
|
justifiedIndexPostUI()
|
||||||
|
|
||||||
if (GLOBAL_CONFIG_SITE.isPost) {
|
if (GLOBAL_CONFIG_SITE.pageType === 'post') {
|
||||||
addPostOutdateNotice()
|
addPostOutdateNotice()
|
||||||
GLOBAL_CONFIG.relativeDate.post && relativeDate(document.querySelectorAll('#post-meta time'))
|
GLOBAL_CONFIG.relativeDate.post && relativeDate(document.querySelectorAll('#post-meta time'))
|
||||||
} else {
|
} else {
|
||||||
@@ -900,11 +900,11 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
toggleCardCategory()
|
toggleCardCategory()
|
||||||
}
|
}
|
||||||
|
|
||||||
GLOBAL_CONFIG_SITE.isHome && scrollDownInIndex()
|
GLOBAL_CONFIG_SITE.pageType === 'home' && scrollDownInIndex()
|
||||||
scrollFn()
|
scrollFn()
|
||||||
|
|
||||||
forPostFn()
|
forPostFn()
|
||||||
!GLOBAL_CONFIG_SITE.isShuoshuo && btf.switchComments(document)
|
GLOBAL_CONFIG_SITE.pageType !== 'shuoshuo' && btf.switchComments(document)
|
||||||
openMobileMenu()
|
openMobileMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user