From 4b381350a19591bb456771bfc22e4b62f16ec66d Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 22 Mar 2021 16:56:15 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=BE=A9=20github-issues?= =?UTF-8?q?=20=E6=9C=80=E6=96=B0=E8=A9=95=E8=AB=96=20=E7=8D=B2=E5=8F=96?= =?UTF-8?q?=E7=9A=84url=E6=A0=BC=E5=BC=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third-party/newest-comments/github-issues.pug | 8 +++----- package.json | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/layout/includes/third-party/newest-comments/github-issues.pug b/layout/includes/third-party/newest-comments/github-issues.pug index e561f95f3..4b3930804 100644 --- a/layout/includes/third-party/newest-comments/github-issues.pug +++ b/layout/includes/third-party/newest-comments/github-issues.pug @@ -15,15 +15,13 @@ script. } const findTrueUrl = (array) => { - let url = '' Promise.all(array.map(item => fetch(item.url).then(resp => resp.json()).then(data => { + const urlArray = data.body.match(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/ig) if (data.user.login === 'utterances-bot') { - url = data.body.match(/https?\:\/\/[^\" ]+/ig).slice(-1) - return url[0] + return urlArray.pop() } else { - url = data.body.match(/https?\:\/\/[^\" ]+/i) - return url[0] + return urlArray.shift() } }) )).then(res => { diff --git a/package.json b/package.json index ac48e905f..8260e35ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.0", + "version": "3.7.1-b1", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { From 6057297f44595d90de9c75cc291a01a0ddc1e857 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 24 Mar 2021 21:57:30 +0800 Subject: [PATCH 2/8] =?UTF-8?q?Breaking=20Changes:=20lazyload=20=E5=84=AA?= =?UTF-8?q?=E5=8C=96=20(=E5=A2=9E=E5=8A=A0=E9=AB=98=E6=96=AF=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E9=81=8E=E5=BA=A6=E7=89=B9=E6=95=88=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=85=8D=E7=BD=AE=20lazyload=20=E7=AF=84=E5=9C=8D?= =?UTF-8?q?=EF=BC=8C=E4=BD=94=E4=BD=8D=E5=9C=96=E6=87=89=E7=94=A8=E5=88=B0?= =?UTF-8?q?=E5=85=A8=E7=AB=99)=20Breaking=20Changes:=20site=5Fverification?= =?UTF-8?q?=20=E5=84=AA=E5=8C=96=EF=BC=8C=E9=9C=80=E8=87=AA=E8=A1=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 30 ++++++-------------- layout/includes/head/site_verification.pug | 17 ++--------- layout/includes/mixins/article-sort.pug | 5 +--- layout/includes/mixins/post-ui.pug | 5 +--- layout/includes/page/flink.pug | 5 +--- layout/includes/pagination.pug | 10 ++----- layout/includes/post/reward.pug | 5 +--- layout/includes/sidebar.pug | 5 +--- layout/includes/widget/card_author.pug | 5 +--- layout/includes/widget/card_recent_post.pug | 5 +--- package.json | 2 +- scripts/filters/post_lazyload.js | 23 +++++++++++---- scripts/helpers/related_post.js | 5 +--- source/css/_global/index.styl | 9 ++++++ source/css/_mode/darkmode.styl | 7 ++++- source/img/loading.gif | Bin 45796 -> 0 bytes 16 files changed, 55 insertions(+), 83 deletions(-) delete mode 100644 source/img/loading.gif diff --git a/_config.yml b/_config.yml index 16cf395e6..d7aaca7da 100644 --- a/_config.yml +++ b/_config.yml @@ -459,25 +459,11 @@ google_adsense: # Verification (站長驗證) # -------------------------------------- -# Google Webmaster tools verification setting -# See: https://www.google.com/webmasters/ -google_site_verification: - -# Bing Webmaster tools verification setting -# See: https://www.bing.com/webmaster/ -bing_site_verification: - -# Baidu Webmaster tools verification setting -# See: https://ziyuan.baidu.com/site/ -baidu_site_verification: - -# 360 Webmaster tools verification setting -# see http://zhanzhang.so.com/ -qihu_site_verification: - -# Yandex Webmaster tools verification setting -# see https://webmaster.yandex.com/ -yandex_site_verification: +site_verification: + # - name: google_site_verification + # content: xxxxxx + # - name: baidu_site_verification + # content: xxxxxxx # Beautify/Effect (美化/效果) # -------------------------------------- @@ -828,10 +814,12 @@ pangu: field: site # site/post # Lazyload (圖片懶加載) -# https://github.com/verlok/lazyload +# https://github.com/verlok/vanilla-lazyload lazyload: enable: false - post: /img/loading.gif + field: site # site/post + placeholder: + blur: false # PWA # See https://github.com/JLHwung/hexo-offline diff --git a/layout/includes/head/site_verification.pug b/layout/includes/head/site_verification.pug index cae574289..894764492 100644 --- a/layout/includes/head/site_verification.pug +++ b/layout/includes/head/site_verification.pug @@ -1,14 +1,3 @@ -if theme.google_site_verification - meta(name="google-site-verification" content=theme.google_site_verification) - -if theme.bing_site_verification - meta(name="msvalidate.01" content=theme.bing_site_verification) - -if theme.baidu_site_verification - meta(name="baidu-site-verification" content=theme.baidu_site_verification) - -if theme.qihu_site_verification - meta(name="360-site-verification" content=theme.qihu_site_verification) - -if theme.yandex_site_verification - meta(name="yandex-verification" content=theme.yandex_site_verification) \ No newline at end of file +if theme.site_verification + each item in theme.site_verification + meta(name=item.name content=item.content) \ No newline at end of file diff --git a/layout/includes/mixins/article-sort.pug b/layout/includes/mixins/article-sort.pug index c2f1b5e28..01e9ef222 100644 --- a/layout/includes/mixins/article-sort.pug +++ b/layout/includes/mixins/article-sort.pug @@ -11,10 +11,7 @@ mixin articleSort(posts) .article-sort-item(class=no_cover) if article.cover && theme.cover.archives_enable a.article-sort-item-img(href=url_for(article.path) title=title) - if theme.lazyload.enable - img(data-lazy-src=url_for(article.cover) alt=title onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'`) - else - img(src=url_for(article.cover) alt=title onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'`) + img(src=url_for(article.cover) alt=title onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'`) .article-sort-item-info .article-sort-item-time i.far.fa-calendar-alt diff --git a/layout/includes/mixins/post-ui.pug b/layout/includes/mixins/post-ui.pug index 4d8778af6..cdf62ee5d 100644 --- a/layout/includes/mixins/post-ui.pug +++ b/layout/includes/mixins/post-ui.pug @@ -9,10 +9,7 @@ mixin postUI(posts) if post_cover && theme.cover.index_enable .post_cover(class=leftOrRight) a(href=url_for(link) title=title) - if theme.lazyload.enable - img.post_bg(data-lazy-src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title) - else - img.post_bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title) + img.post_bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title) .recent-post-info(class=no_cover) a.article-title(href=url_for(link) title=title)= title .article-meta-wrap diff --git a/layout/includes/page/flink.pug b/layout/includes/page/flink.pug index 456d3b727..f0b088c91 100644 --- a/layout/includes/page/flink.pug +++ b/layout/includes/page/flink.pug @@ -13,10 +13,7 @@ each item in i.link_list .flink-list-item a(href=url_for(item.link) title=item.name target="_blank") - if theme.lazyload.enable - img(data-lazy-src=url_for(item.avatar) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt=item.name ) - else - img(src=url_for(item.avatar) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt=item.name ) + img(src=url_for(item.avatar) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt=item.name ) span.flink-item-name= item.name span.flink-item-desc(title=item.descr)= item.descr != page.content diff --git a/layout/includes/pagination.pug b/layout/includes/pagination.pug index 8bb76a955..c50b81af4 100644 --- a/layout/includes/pagination.pug +++ b/layout/includes/pagination.pug @@ -15,10 +15,7 @@ if is_post() .prev-post(class=hasPageNext) - var pagination_cover = prev.cover === false ? prev.randomcover : prev.cover a(href=url_for(prev.path)) - if theme.lazyload.enable - img.prev-cover(data-lazy-src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of previous post') - else - img.prev-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of previous post') + img.prev-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of previous post') .pagination-info .label=_p('pagination.prev') .prev_info=prev.title @@ -28,10 +25,7 @@ if is_post() - var pagination_cover = next.cover == false ? next.randomcover : next.cover .next-post(class=hasPagePrev) a(href=url_for(next.path)) - if theme.lazyload.enable - img.next-cover(data-lazy-src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of next post') - else - img.next-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of next post') + img.next-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of next post') .pagination-info .label=_p('pagination.next') .next_info=next.title diff --git a/layout/includes/post/reward.pug b/layout/includes/post/reward.pug index 0d6a584e0..41bb3c999 100644 --- a/layout/includes/post/reward.pug +++ b/layout/includes/post/reward.pug @@ -8,9 +8,6 @@ - var clickTo = item.link ? item.link : item.img li.reward-item a(href=url_for(clickTo) target='_blank') - if theme.lazyload.enable - img.post-qr-code-img(data-lazy-src=url_for(item.img) alt=item.text) - else - img.post-qr-code-img(src=url_for(item.img) alt=item.text) + img.post-qr-code-img(src=url_for(item.img) alt=item.text) .post-qr-code-desc=item.text diff --git a/layout/includes/sidebar.pug b/layout/includes/sidebar.pug index 639dd798d..88551d7d6 100644 --- a/layout/includes/sidebar.pug +++ b/layout/includes/sidebar.pug @@ -2,10 +2,7 @@ #menu-mask #sidebar-menus .author-avatar - if theme.lazyload.enable - img.avatar-img(data-lazy-src=url_for(theme.avatar.img) onerror=`onerror=null;src='${theme.error_img.flink}'` alt="avatar") - else - img.avatar-img(src=url_for(theme.avatar.img) onerror=`onerror=null;src='${theme.error_img.flink}'` alt="avatar") + img.avatar-img(src=url_for(theme.avatar.img) onerror=`onerror=null;src='${theme.error_img.flink}'` alt="avatar") .site-data if site.posts.length .data-item.is-center diff --git a/layout/includes/widget/card_author.pug b/layout/includes/widget/card_author.pug index b694bd806..547fec869 100644 --- a/layout/includes/widget/card_author.pug +++ b/layout/includes/widget/card_author.pug @@ -1,10 +1,7 @@ if theme.aside.card_author.enable .card-widget.card-info .card-info-avatar.is-center - if theme.lazyload.enable - img.avatar-img(data-lazy-src=url_for(theme.avatar.img) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt="avatar") - else - img.avatar-img(src=url_for(theme.avatar.img) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt="avatar") + img.avatar-img(src=url_for(theme.avatar.img) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt="avatar") .author-info__name= config.author .author-info__description!= theme.aside.card_author.description || config.description diff --git a/layout/includes/widget/card_recent_post.pug b/layout/includes/widget/card_recent_post.pug index b20747567..60a0e0708 100644 --- a/layout/includes/widget/card_recent_post.pug +++ b/layout/includes/widget/card_recent_post.pug @@ -14,10 +14,7 @@ if theme.aside.card_recent_post.enable .aside-list-item(class=no_cover) if post_cover && theme.cover.aside_enable a.thumbnail(href=url_for(link) title=title) - if theme.lazyload.enable - img(data-lazy-src=url_for(post_cover) onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'` alt=title) - else - img(src=url_for(post_cover) onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'` alt=title) + img(src=url_for(post_cover) onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'` alt=title) .content a.title(href=url_for(link) title=title)= title if theme.aside.card_recent_post.sort === 'updated' diff --git a/package.json b/package.json index 8260e35ed..cd743fafa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.1-b1", + "version": "3.7.5-b1", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { diff --git a/scripts/filters/post_lazyload.js b/scripts/filters/post_lazyload.js index c27963324..7c02bc9c7 100644 --- a/scripts/filters/post_lazyload.js +++ b/scripts/filters/post_lazyload.js @@ -8,9 +8,20 @@ const urlFor = require('hexo-util').url_for.bind(hexo) -hexo.extend.filter.register('after_post_render', data => { - if (!hexo.theme.config.lazyload.enable) return - const bg = hexo.theme.config.lazyload.post ? urlFor(hexo.theme.config.lazyload.post) : 'data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=' - data.content = data.content.replace(/( { + data.content = lazyload.call(this, data.content) + return data + }) +} \ No newline at end of file diff --git a/scripts/helpers/related_post.js b/scripts/helpers/related_post.js index 24992b4fa..1e7efd427 100644 --- a/scripts/helpers/related_post.js +++ b/scripts/helpers/related_post.js @@ -41,7 +41,6 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) { const limitNum = config.related_post.limit || 6 const dateType = config.related_post.date_type || 'created' const headlineLang = this._p('post.recommend') - const lazySrc = config.lazyload.enable ? 'data-lazy-src' : 'src' relatedPosts = relatedPosts.sort(compare('weight')) @@ -67,9 +66,7 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) { relatedPosts[i].title + '">' result += - 'cover' if (dateType === 'created') { diff --git a/source/css/_global/index.styl b/source/css/_global/index.styl index 71fc5f11b..9563f7e43 100644 --- a/source/css/_global/index.styl +++ b/source/css/_global/index.styl @@ -206,6 +206,15 @@ img &:not([src]) opacity: 0 +// lazyload blur +if hexo-config('lazyload.enable') && hexo-config('lazyload.blur') && !hexo-config('lazyload.placeholder') + img + &[data-lazy-src]:not(.loaded) + filter: blur(10px) brightness(1) + + &[data-lazy-src].error + filter: none + .img-alt margin: -.5rem 0 .5rem color: #858585 diff --git a/source/css/_mode/darkmode.styl b/source/css/_mode/darkmode.styl index da9b673e2..000545026 100644 --- a/source/css/_mode/darkmode.styl +++ b/source/css/_mode/darkmode.styl @@ -94,11 +94,16 @@ if hexo-config('darkmode.enable') || hexo-config('display_mode') == 'dark' .post-outdate-notice, .error-img, #article-container iframe, - img, .gist, .ads-wrap filter: brightness(.8) + img + if hexo-config('lazyload.enable') && hexo-config('lazyload.blur') && !hexo-config('lazyload.placeholder') + filter: blur(0) brightness(.8) + else + filter: brightness(.8) + #aside-content .aside-list > .aside-list-item:not(:last-child) border-bottom: 1px dashed alpha(#FFFFFF, .1) diff --git a/source/img/loading.gif b/source/img/loading.gif deleted file mode 100644 index 46df25ad444fa585862217c9f3fdc9373092744a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45796 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 Date: Tue, 30 Mar 2021 01:36:46 +0800 Subject: [PATCH 3/8] =?UTF-8?q?fix:=20=E7=95=B6=E6=A8=99=E9=A1=8C=E6=9C=89?= =?UTF-8?q?=E7=AC=A6=E8=99=9F'=E6=99=82=EF=BC=8Cdisqus=20=E5=92=8C=20disqu?= =?UTF-8?q?sjs=20=E7=84=A1=E6=B3=95=E5=8A=A0=E8=BC=89=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/includes/third-party/comments/disqus.pug | 4 +++- layout/includes/third-party/comments/disqusjs.pug | 4 +++- package.json | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/layout/includes/third-party/comments/disqus.pug b/layout/includes/third-party/comments/disqus.pug index fd44d2a8d..4c2c7272e 100644 --- a/layout/includes/third-party/comments/disqus.pug +++ b/layout/includes/third-party/comments/disqus.pug @@ -1,9 +1,11 @@ +- let disqusPageTitle = page.title.replace(/'/ig,"\\'") + script. function loadDisqus () { var disqus_config = function () { this.page.url = '!{ page.permalink }' this.page.identifier = '!{ page.path }' - this.page.title = '!{ page.title }' + this.page.title = '!{ disqusPageTitle }' }; window.disqusReset = () => { diff --git a/layout/includes/third-party/comments/disqusjs.pug b/layout/includes/third-party/comments/disqusjs.pug index 0e8d2f94b..e88849aee 100644 --- a/layout/includes/third-party/comments/disqusjs.pug +++ b/layout/includes/third-party/comments/disqusjs.pug @@ -1,4 +1,6 @@ - let disqusjsApi = theme.disqusjs.api || 'https://disqus.skk.moe/disqus/' +- let disqusjsPageTitle = page.title.replace(/'/ig,"\\'") + script. function loadDisqusjs () { function addDisqusjsCSS () { @@ -15,7 +17,7 @@ script. siteName: '!{theme.disqusjs.siteName}', identifier: '!{ page.path }', url: '!{ page.permalink }', - title: '!{ page.title }', + title: '!{ disqusjsPageTitle }', api: '!{disqusjsApi}', apikey: '!{theme.disqusjs.apikey}', nocomment: '!{theme.disqusjs.nocomment}', diff --git a/package.json b/package.json index cd743fafa..58dc5d0b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.5-b1", + "version": "3.7.5-b2", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { From c48ce9af8c365372bcb55a61280005d0c24fb2fd Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 30 Mar 2021 22:35:40 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=BE=A9=20lazyload=20?= =?UTF-8?q?=E5=A0=B1=20undefined=20=E7=9A=84=20bug=20close=20#532?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- scripts/events/init.js | 2 +- scripts/filters/post_lazyload.js | 26 ++++++++++++++------------ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 58dc5d0b3..e5c3727e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.5-b2", + "version": "3.7.5-b3", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { diff --git a/scripts/events/init.js b/scripts/events/init.js index c198e9e80..76f78ef5f 100644 --- a/scripts/events/init.js +++ b/scripts/events/init.js @@ -2,7 +2,7 @@ const logger = require('hexo-log')() hexo.extend.filter.register('before_generate', () => { // Get first two digits of the Hexo version number - var hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1') + const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1') if (hexoVer < 5) { logger.error('Please update Hexo to V5.0.0 or higher!') diff --git a/scripts/filters/post_lazyload.js b/scripts/filters/post_lazyload.js index 7c02bc9c7..0b21de977 100644 --- a/scripts/filters/post_lazyload.js +++ b/scripts/filters/post_lazyload.js @@ -8,20 +8,22 @@ const urlFor = require('hexo-util').url_for.bind(hexo) -if (!hexo.config.theme_config.lazyload.enable) return - function lazyload (htmlContent) { const bg = hexo.theme.config.lazyload.placeholder ? urlFor(hexo.theme.config.lazyload.placeholder) : 'data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=' return htmlContent.replace(/( { - data.content = lazyload.call(this, data.content) - return data - }) -} \ No newline at end of file +hexo.extend.filter.register('after_render:html', function (data) { + const config = hexo.theme.config.lazyload + if (!config.enable) return + if (config.field !== 'site') return + return lazyload.call(this, data) +}) + +hexo.extend.filter.register('after_post_render', data => { + const config = hexo.theme.config.lazyload + if (!config.enable) return + if (config.field !== 'post') return + data.content = lazyload.call(this, data.content) + return data +}) From 597f0d2019464cb2fcd501f160045cc30dc09717 Mon Sep 17 00:00:00 2001 From: Jerry Date: Fri, 23 Apr 2021 18:06:51 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=BE=A9=E9=96=8B=E5=95=9F?= =?UTF-8?q?anchor=E5=BE=8C,=E7=80=8F=E8=A6=BD=E5=99=A8=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E9=A0=81/=E4=B8=8B=E4=B8=80=E9=A0=81=20=E8=B7=B3=E8=BD=89?= =?UTF-8?q?=E6=9C=83404=E7=9A=84bug=20(=E6=96=87=E7=AB=A0=E9=A0=81?= =?UTF-8?q?=E7=9A=84url=20hash=20=E5=9C=A8pjax=E4=B8=8B=E8=AE=8A=E6=88=90?= =?UTF-8?q?=20undefined)=20fix:=20=E4=BF=AE=E5=BE=A9=E9=96=8B=E5=95=9Fanch?= =?UTF-8?q?or=E5=BE=8C=EF=BC=8C=E6=96=87=E7=AB=A0=E9=A0=81=E8=B7=B3?= =?UTF-8?q?=E8=BD=89=E5=9B=9E=E4=B8=BB=E9=A0=81=EF=BC=8C=E4=B8=BB=E9=A0=81?= =?UTF-8?q?=E7=B6=B2=E5=9D=80=E7=9A=84hash=E6=B7=BB=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?=E6=96=87=E7=AB=A0=E9=A0=81=E6=9C=80=E5=BE=8C=E4=B8=80=E5=80=8B?= =?UTF-8?q?=E6=A8=99=E9=A1=8C=E7=9A=84=20bug=20improvement:=20=E5=84=AA?= =?UTF-8?q?=E5=8C=96=20button=20tags=20=E6=A8=99=E7=B0=BD=E5=A4=96?= =?UTF-8?q?=E6=8E=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++- README_CN.md | 7 ++++- layout/includes/third-party/pjax.pug | 47 ++++++++++++++++------------ package.json | 2 +- scripts/tag/button.js | 2 +- source/css/_tags/button.styl | 3 ++ source/js/main.js | 13 +++++--- 7 files changed, 52 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index f9d97b54a..ab6639755 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ ![hexo version](https://img.shields.io/badge/hexo-5.0+-0e83c) ![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png) + Demo: 👍 [Butterfly](https://butterfly.js.org/) || 🤞 [MYW](https://immyw.com/) Docs: 📖 [Butterfly Docs](https://butterfly.js.org/posts/21cfbf15/) @@ -97,6 +99,9 @@ npm i hexo-theme-butterfly ## Screenshots +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg) ![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png) - ![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png) \ No newline at end of file diff --git a/README_CN.md b/README_CN.md index 659d1ba25..4ff1566c6 100644 --- a/README_CN.md +++ b/README_CN.md @@ -12,6 +12,8 @@ ![hexo version](https://img.shields.io/badge/hexo-5.0+-0e83c) ![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png) + 預覽: 👍 [Butterfly](https://butterfly.js.org/) || 🤞 [MYW](https://immyw.com/) 文檔: 📖 [Butterfly Docs](https://butterfly.js.org/posts/21cfbf15/) @@ -96,6 +98,9 @@ theme: butterfly ## 截圖 +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg) ![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png) - ![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png) \ No newline at end of file diff --git a/layout/includes/third-party/pjax.pug b/layout/includes/third-party/pjax.pug index 853c6279a..8989f3073 100644 --- a/layout/includes/third-party/pjax.pug +++ b/layout/includes/third-party/pjax.pug @@ -26,6 +26,29 @@ script. scrollRestoration: false }) + document.addEventListener('pjax:send', function () { + + // removeEventListener toc scroll + window.removeEventListener('scroll', window.tocScrollFn) + + typeof preloader === 'object' && preloader.initLoading() + + if (window.aplayers) { + for (let i = 0; i < window.aplayers.length; i++) { + if (!window.aplayers[i].options.fixed) { + window.aplayers[i].destroy() + } + } + } + + typeof typed === 'object' && typed.destroy() + + //reset readmode + const $bodyClassList = document.body.classList + $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode') + + }) + document.addEventListener('pjax:complete', function () { window.refreshFn() @@ -61,28 +84,12 @@ script. typeof preloader === 'object' && preloader.endLoading() }) - - document.addEventListener('pjax:send', function () { - typeof preloader === 'object' && preloader.initLoading() - - if (window.aplayers) { - for (let i = 0; i < window.aplayers.length; i++) { - if (!window.aplayers[i].options.fixed) { - window.aplayers[i].destroy() - } - } - } - - typeof typed === 'object' && typed.destroy() - - //reset readmode - const $bodyClassList = document.body.classList - $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode') - - }) - document.addEventListener('pjax:error', (e) => { if (e.request.status === 404) { + if (!{theme.anchor}) { + location.hash && e.request.responseURL !== location.href ? pjax.loadUrl(location.href) : pjax.loadUrl('/404.html') + return + } pjax.loadUrl('/404.html') } }) diff --git a/package.json b/package.json index e5c3727e7..2b5a27139 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.5-b3", + "version": "3.7.5-b4", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { diff --git a/scripts/tag/button.js b/scripts/tag/button.js index bb5a18a5d..791a8e335 100644 --- a/scripts/tag/button.js +++ b/scripts/tag/button.js @@ -22,7 +22,7 @@ function btn (args) { option = option.trim() return `${icon.length > 0 ? `` : ''}${text}` + title="${text}">${icon.length ? `` : ''}${text.length ? `${text}` : ''}` } hexo.extend.tag.register('btn', btn, { ends: false }) diff --git a/source/css/_tags/button.styl b/source/css/_tags/button.styl index 79cceed0c..7dcf0a71f 100644 --- a/source/css/_tags/button.styl +++ b/source/css/_tags/button.styl @@ -11,6 +11,9 @@ color: $btn-color line-height: 2 + i + span + margin-left: .3rem + &:not(.block) + .btn-beautify:not(.block) margin: 0 .2rem 1rem diff --git a/source/js/main.js b/source/js/main.js index 9658c73c1..c44442867 100644 --- a/source/js/main.js +++ b/source/js/main.js @@ -388,11 +388,14 @@ document.addEventListener('DOMContentLoaded', function () { const $article = document.getElementById('article-container') // main of scroll - window.addEventListener('scroll', btf.throttle(function (e) { - const currentTop = window.scrollY || document.documentElement.scrollTop - scrollPercent(currentTop) - findHeadPosition(currentTop) - }, 100)) + window.tocScrollFn = function () { + return btf.throttle(function () { + const currentTop = window.scrollY || document.documentElement.scrollTop + scrollPercent(currentTop) + findHeadPosition(currentTop) + }, 100)() + } + window.addEventListener('scroll', tocScrollFn) const scrollPercent = function (currentTop) { const docHeight = $article.clientHeight From aa7173fc6914d8994e4270c5cd8bf06924c098d8 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 25 Apr 2021 22:08:07 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feature:=20=E5=A2=9E=E5=8A=A0=20tags=20?= =?UTF-8?q?=E6=A8=99=E7=B0=BD=E5=A4=96=E6=8E=9B=20-=20label=20improvement:?= =?UTF-8?q?=20=E5=84=AA=E5=8C=96=20pjax=20=E4=B8=8B=20404=20=E9=A0=81?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/404.pug | 28 ------------------- layout/includes/404.pug | 17 +++++++++++ layout/includes/head/config_site.pug | 18 ++++++------ layout/includes/layout.pug | 42 +++++++++++++++------------- layout/includes/third-party/pjax.pug | 4 --- package.json | 2 +- scripts/events/404.js | 7 +++-- scripts/tag/label.js | 16 +++++++++++ source/css/_mode/darkmode.styl | 1 + source/css/_mode/readmode.styl | 15 ++-------- source/css/_tags/label.styl | 11 ++++++++ source/js/main.js | 6 +++- 12 files changed, 91 insertions(+), 76 deletions(-) delete mode 100644 layout/404.pug create mode 100644 layout/includes/404.pug create mode 100644 scripts/tag/label.js create mode 100644 source/css/_tags/label.styl diff --git a/layout/404.pug b/layout/404.pug deleted file mode 100644 index e4b46e454..000000000 --- a/layout/404.pug +++ /dev/null @@ -1,28 +0,0 @@ -- var top_img = theme.error_404.background || theme.default_top_img -- var bg_img = `background-image: url('${url_for(top_img)}')` - -doctype html -html(lang=config.language data-theme=theme.display_mode) - head - include includes/head.pug - body - if theme.preloader - !=partial('includes/loading/loading', {}, {cache: true}) - - if theme.fireworks && theme.fireworks.enable - canvas.fireworks - - if theme.background - #web_bg - - #error-wrap - .error-content - .error-img(style=bg_img) - .error-info - h1.error_title= '404' - .error_subtitle= theme.error_404.subtitle - a.button--animated(href=config.root) - i.fas.fa-rocket - = _p('error404.back_button') - - include includes/additional-js.pug diff --git a/layout/includes/404.pug b/layout/includes/404.pug new file mode 100644 index 000000000..1b6b4e257 --- /dev/null +++ b/layout/includes/404.pug @@ -0,0 +1,17 @@ +- var top_img = theme.error_404.background || theme.default_top_img +- var bg_img = `background-image: url('${url_for(top_img)}')` + +#body-wrap.error + div(style='display: none') + include ./header/index.pug + + #error-wrap + .error-content + .error-img(style=bg_img) + .error-info + h1.error_title= '404' + .error_subtitle= theme.error_404.subtitle + a.button--animated(href=config.root) + i.fas.fa-rocket + = _p('error404.back_button') + diff --git a/layout/includes/head/config_site.pug b/layout/includes/head/config_site.pug index 1b951be6d..2dbd4633f 100644 --- a/layout/includes/head/config_site.pug +++ b/layout/includes/head/config_site.pug @@ -8,12 +8,12 @@ var showToc = is_post() && theme.aside.enable && pageToc && (toc(page.content) !== '' || page.encrypt == true ) - -script#config-diff - . - var GLOBAL_CONFIG_SITE = { - isPost: !{is_post()}, - isHome: !{is_home()}, - isHighlightShrink: !{isHighlightShrink}, - isToc: !{showToc}, - postUpdate: '!{full_date(page.updated)}' - } +script#config-diff. + var GLOBAL_CONFIG_SITE = { + title: '!{pageTitle}', + isPost: !{is_post()}, + isHome: !{is_home()}, + isHighlightShrink: !{isHighlightShrink}, + isToc: !{showToc}, + postUpdate: '!{full_date(page.updated)}' + } diff --git a/layout/includes/layout.pug b/layout/includes/layout.pug index 6d2cc2cdd..5245cced5 100644 --- a/layout/includes/layout.pug +++ b/layout/includes/layout.pug @@ -15,28 +15,32 @@ html(lang=config.language data-theme=theme.display_mode class=htmlClassHideAside !=partial('includes/sidebar', {}, {cache: true}) - #body-wrap(class=pageType) - include ./header/index.pug + if page.type !== '404' + #body-wrap(class=pageType) + include ./header/index.pug - main#content-inner.layout(class=hideAside) - if body - div!= body - else - block content - if theme.aside.enable && page.aside !== false - include widget/index.pug - - - var footerBg = theme.footer_bg - if (footerBg) - if (footerBg === true) - - var footer_bg = bg_img + main#content-inner.layout(class=hideAside) + if body + div!= body + else + block content + if theme.aside.enable && page.aside !== false + include widget/index.pug + + - var footerBg = theme.footer_bg + if (footerBg) + if (footerBg === true) + - var footer_bg = bg_img + else + - var footer_bg = theme.footer_bg.indexOf('/') !== -1 ? `background-image: url('${url_for(footerBg)}')` : `background: ${footerBg}` else - - var footer_bg = theme.footer_bg.indexOf('/') !== -1 ? `background-image: url('${url_for(footerBg)}')` : `background: ${footerBg}` - else - - var footer_bg = '' + - var footer_bg = '' + + footer#footer(style=footer_bg) + !=partial('includes/footer', {}, {cache: true}) - footer#footer(style=footer_bg) - !=partial('includes/footer', {}, {cache: true}) + else + include ./404.pug include ./rightside.pug !=partial('includes/third-party/search/index', {}, {cache: true}) diff --git a/layout/includes/third-party/pjax.pug b/layout/includes/third-party/pjax.pug index 8989f3073..024605165 100644 --- a/layout/includes/third-party/pjax.pug +++ b/layout/includes/third-party/pjax.pug @@ -86,10 +86,6 @@ script. document.addEventListener('pjax:error', (e) => { if (e.request.status === 404) { - if (!{theme.anchor}) { - location.hash && e.request.responseURL !== location.href ? pjax.loadUrl(location.href) : pjax.loadUrl('/404.html') - return - } pjax.loadUrl('/404.html') } }) diff --git a/package.json b/package.json index 2b5a27139..50e54ff57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.5-b4", + "version": "3.7.5-b5", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { diff --git a/scripts/events/404.js b/scripts/events/404.js index c37daae40..02491ce7c 100644 --- a/scripts/events/404.js +++ b/scripts/events/404.js @@ -9,7 +9,10 @@ hexo.extend.generator.register('404', function (locals) { if (!hexo.theme.config.error_404.enable) return return { path: '404.html', - data: locals.posts, - layout: ['404'] + layout: ['page'], + data: { + type: '404', + top_img: false + } } }) diff --git a/scripts/tag/label.js b/scripts/tag/label.js new file mode 100644 index 000000000..877c9097a --- /dev/null +++ b/scripts/tag/label.js @@ -0,0 +1,16 @@ +/** + * Butterfly + * label + * {% label text color %} + */ + +'use strict' + +function addLabel (args, content) { + const text = args[0] + const className = args[1] || 'default' + + return `${text} ` +} + +hexo.extend.tag.register('label', addLabel, { ends: false }) diff --git a/source/css/_mode/darkmode.styl b/source/css/_mode/darkmode.styl index 000545026..d287bfcb4 100644 --- a/source/css/_mode/darkmode.styl +++ b/source/css/_mode/darkmode.styl @@ -91,6 +91,7 @@ if hexo-config('darkmode.enable') || hexo-config('display_mode') == 'dark' .hide-button, .btn-beautify, .mermaid, + .hl-label, .post-outdate-notice, .error-img, #article-container iframe, diff --git a/source/css/_mode/readmode.styl b/source/css/_mode/readmode.styl index 0ef3b3648..aa1620720 100644 --- a/source/css/_mode/readmode.styl +++ b/source/css/_mode/readmode.styl @@ -173,24 +173,15 @@ if hexo-config('readmode') border: 1px solid var(--gray) !important .hide-button, - .btn-beautify + .btn-beautify, + .hl-label + border: 1px solid var(--gray) !important background: var(--readmode-light-color) !important color: var(--font-color) !important - .btn-beautify - border: 1px solid var(--gray) !important - .button--animated:before background: var(--readmode-light-color) !important - .hide-inline, - .hide-block - & >.hide-button - border: 1px solid var(--gray) - - & > .button--animated:before - background: var(--readmode-light-color) - .note border: 2px solid var(--gray) border-left-color: var(--gray) !important diff --git a/source/css/_tags/label.styl b/source/css/_tags/label.styl new file mode 100644 index 000000000..56261f146 --- /dev/null +++ b/source/css/_tags/label.styl @@ -0,0 +1,11 @@ +.hl-label + padding: 2px 4px + border-radius: 3px + color: $btn-color + + &.default + background-color: $btn-default-color + + for $type in $tagsP-types + &.{$type} + background-color: lookup('$tagsP-' + $type + '-color') diff --git a/source/js/main.js b/source/js/main.js index c44442867..2d73c602e 100644 --- a/source/js/main.js +++ b/source/js/main.js @@ -413,7 +413,11 @@ document.addEventListener('DOMContentLoaded', function () { const updateAnchor = function (anchor) { if (window.history.replaceState && anchor !== window.location.hash) { if (!anchor) anchor = location.pathname - window.history.replaceState({}, '', anchor) + const title = GLOBAL_CONFIG_SITE.title + window.history.replaceState({ + url: location.href, + title: title + }, title, anchor) } } From 4e1cb0b2b526dad4a192e575f722b09aa30bec66 Mon Sep 17 00:00:00 2001 From: Cooper Date: Wed, 5 May 2021 22:27:39 +0800 Subject: [PATCH 7/8] Update _config.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix:sub-menu二级目录示例写法 --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index d7aaca7da..fa28f5876 100644 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ # format: name: link || icon # sub-menu # name || icon: -# name || link || icon +# name : link || icon menu: # Home: / || fas fa-home @@ -935,4 +935,4 @@ CDN: # Prism.js prismjs_js: https://cdn.jsdelivr.net/npm/prismjs/prism.min.js prismjs_lineNumber_js: https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.min.js - prismjs_autoloader: https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js \ No newline at end of file + prismjs_autoloader: https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js From 92121d7bbecfbcc5f5039ab1032896a693b5fbe3 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 5 May 2021 23:03:28 +0800 Subject: [PATCH 8/8] label: 3.7.5 --- README.md | 4 ++-- README_CN.md | 2 +- _config.yml | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ab6639755..54757a8ca 100644 --- a/README.md +++ b/README.md @@ -82,9 +82,9 @@ npm i hexo-theme-butterfly - [X] Comment (Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo) - [x] Multiple Comment System Support - [x] Online Chats (Chatra/Tidio/Daovoice/Gitter/Crisp) -- [x] Web analytics (Baidu Analytics/Google Analytics/Tencent Analytics/CNZZ Analytics) +- [x] Web analytics - [x] Google AdSense -- [x] Webmaster Verification (google/Bing/Baidu/360/Yandex) +- [x] Webmaster Verification - [x] Change website colour scheme - [x] Typewriter Effect: activate_power_mode - [x] Background effects (Canvas ribbon/canvas_ribbon_piao/canvas_nest) diff --git a/README_CN.md b/README_CN.md index 4ff1566c6..672126914 100644 --- a/README_CN.md +++ b/README_CN.md @@ -81,7 +81,7 @@ theme: butterfly - [X] 多種評論系統(Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo) - [x] 支持雙評論部署 - [x] 多種在線聊天(Chatra/Tidio/Daovoice/Gitter/Crisp) -- [x] 多種分析系統(百度分析/谷歌分析/騰訊分析/CNZZ分析) +- [x] 多種分析系統 - [x] 谷歌廣告/手動廣告位置 - [x] 各種站長驗證(Google/Bing/Baidu/360/Yandex) - [x] 修改網站配色 diff --git a/_config.yml b/_config.yml index fa28f5876..dbd13636c 100644 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ # format: name: link || icon # sub-menu # name || icon: -# name : link || icon +# name: link || icon menu: # Home: / || fas fa-home @@ -935,4 +935,4 @@ CDN: # Prism.js prismjs_js: https://cdn.jsdelivr.net/npm/prismjs/prism.min.js prismjs_lineNumber_js: https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.min.js - prismjs_autoloader: https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js + prismjs_autoloader: https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js \ No newline at end of file diff --git a/package.json b/package.json index 50e54ff57..e61a07713 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "3.7.5-b5", + "version": "3.7.5", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": {