Compare commits

..

9 Commits

13 changed files with 86 additions and 28 deletions

View File

@@ -12,7 +12,7 @@ IMPORTANT: Please follow the template to create a new issue.
重要:請依照該模板來提交。 重要:請依照該模板來提交。
If you upgrade from the old version, and an error occurs when running, please copy the new content in the config to the butterfly.yml If you upgrade from the old version, and an error occurs when running, please copy the new content in the config to the butterfly.yml
如果你是由舊版本升級到新版執行時出現報錯請首先把config裡新的內容複製到舊的butterfly設定去 如果你是由舊版本升級到新版執行時出現報錯請首先把config裡新的內容複製到舊的butterfly設定去(如有)
If you are a problem when visit the website, please open your browser 'developer tools (shortcut F12)' and check the console if there is an error, include your website address in the feedback If you are a problem when visit the website, please open your browser 'developer tools (shortcut F12)' and check the console if there is an error, include your website address in the feedback
如果你是線上訪問出現問題請檢查瀏覽器開發人員工具快捷鍵F12的console是否有報錯反饋時附上你的網站 如果你是線上訪問出現問題請檢查瀏覽器開發人員工具快捷鍵F12的console是否有報錯反饋時附上你的網站

View File

@@ -15,6 +15,8 @@ Based on [hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody) t
## Installation ## Installation
### GIT
Stable branch [recommend]: Stable branch [recommend]:
``` ```
@@ -27,6 +29,16 @@ Dev branch:
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
``` ```
### NPM
> It supports Hexo 5.0.0 or later
In Hexo site root directory
```powershell
npm i hexo-theme-butterfly
```
## Configuration ## Configuration
Set theme in the hexo work folder's root config file `_config.yml`: Set theme in the hexo work folder's root config file `_config.yml`:

View File

@@ -16,18 +16,30 @@
## 安裝 ## 安裝
在你的博客根目錄裡安裝穩定版【推薦】 ### Git 安裝
``` 在博客根目錄裡安裝穩定版【推薦】
```powershell
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
``` ```
如果想要安裝比較新的dev分支可以 如果想要安裝比較新的dev分支可以
``` ```powershell
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
``` ```
### npm 安裝
> 此方法只支持Hexo 5.0.0以上版本
在博客根目錄裡
```powershell
npm i hexo-theme-butterfly
```
## 應用主題 ## 應用主題
修改hexo配置文件`_config.yml`,把主題改為`Butterfly` 修改hexo配置文件`_config.yml`,把主題改為`Butterfly`

View File

@@ -88,6 +88,7 @@
script. script.
var GLOBAL_CONFIG = { var GLOBAL_CONFIG = {
root: '!{config.root}', root: '!{config.root}',
hexoversion: '!{get_hexo_version()}',
algolia: !{algolia}, algolia: !{algolia},
localSearch: !{localSearch}, localSearch: !{localSearch},
translate: !{translate}, translate: !{translate},

View File

@@ -1,5 +1,9 @@
script. script.
function loadLivere () { function loadLivere () {
if (typeof LivereTower === 'object') {
window.LivereTower.init()
}
else {
(function(d, s) { (function(d, s) {
var j, e = d.getElementsByTagName(s)[0]; var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; } if (typeof LivereTower === 'function') { return; }
@@ -9,6 +13,7 @@ script.
e.parentNode.insertBefore(j, e); e.parentNode.insertBefore(j, e);
})(document, 'script'); })(document, 'script');
} }
}
if ('!{theme.comments.use[0]}' === 'Livere' || !!{theme.comments.lazyload}) { if ('!{theme.comments.use[0]}' === 'Livere' || !!{theme.comments.lazyload}) {
if (!{theme.comments.lazyload}) loadComment(document.getElementById('lv-container'), loadLivere) if (!{theme.comments.lazyload}) loadComment(document.getElementById('lv-container'), loadLivere)

View File

@@ -1,8 +1,6 @@
script(src=url_for(theme.CDN.pjax)) script(src=url_for(theme.CDN.pjax))
script. script.
var pjax = new Pjax({ let pjaxSelectors = [
elements: 'a:not([target="_blank"])',
selectors: [
'title', 'title',
'meta[name=description]', 'meta[name=description]',
'#config_change', '#config_change',
@@ -10,7 +8,15 @@ script.
'#rightside-config-hide', '#rightside-config-hide',
'#rightside-config-show', '#rightside-config-show',
'.js-pjax' '.js-pjax'
], ]
if (!{theme.Open_Graph_meta && theme.comments.use && theme.comments.use.includes('Livere')}) {
pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
}
const pjax = new Pjax({
elements: 'a:not([target="_blank"])',
selectors: pjaxSelectors,
cacheBust: false, cacheBust: false,
}) })

View File

@@ -1,6 +1,6 @@
{ {
"name": "hexo-theme-butterfly", "name": "hexo-theme-butterfly",
"version": "3.0.0-rc2", "version": "3.0.1",
"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": "wong@jerryc.me" "email": "wong@jerryc.me"
}, },
"dependencies": { "dependencies": {
"hexo-renderer-marked": "^3.0.0", "hexo-renderer-stylus": "^1.1.0",
"hexo-renderer-pug": "^1.0.0" "hexo-renderer-pug": "^1.0.0"
}, },
"homepage": "https://demo.jerryc.me/", "homepage": "https://demo.jerryc.me/",

15
scripts/events/log.js Normal file
View File

@@ -0,0 +1,15 @@
hexo.on('ready', () => {
const { version } = require('../../package.json')
hexo.log.info(`
===================================================================
##### # # ##### ##### ###### ##### ###### # # #
# # # # # # # # # # # # #
##### # # # # ##### # # ##### # #
# # # # # # # ##### # # #
# # # # # # # # # # # #
##### #### # # ###### # # # ###### #
${version}
===================================================================`)
})

View File

@@ -11,5 +11,6 @@ const urlFor = require('hexo-util').url_for.bind(hexo)
hexo.extend.filter.register('after_post_render', data => { hexo.extend.filter.register('after_post_render', data => {
if (!hexo.theme.config.lazyload.enable) return 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=' const bg = hexo.theme.config.lazyload.post ? urlFor(hexo.theme.config.lazyload.post) : 'data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs='
return data.content.replace(/(<img.*? src=)/ig, `$1 "${bg}" data-lazy-src=`) data.content = data.content.replace(/(<img.*? src=)/ig, `$1 "${bg}" data-lazy-src=`)
return data
}) })

View File

@@ -23,7 +23,7 @@ function randomCover () {
let cover let cover
let num let num
if (theme.cover.default_cover) { if (theme.cover && theme.cover.default_cover) {
if (!Array.isArray(theme.cover.default_cover)) { if (!Array.isArray(theme.cover.default_cover)) {
cover = theme.cover.default_cover cover = theme.cover.default_cover
return cover return cover

View File

@@ -61,3 +61,7 @@ hexo.extend.helper.register('urlNoIndex', function () {
hexo.extend.helper.register('md5', function (path) { hexo.extend.helper.register('md5', function (path) {
return crypto.createHash('md5').update(decodeURI(this.url_for(path))).digest('hex') return crypto.createHash('md5').update(decodeURI(this.url_for(path))).digest('hex')
}) })
hexo.extend.helper.register('get_hexo_version', function () {
return hexo.version
})

View File

@@ -249,7 +249,7 @@ if hexo-config('avatar.effect') == true
for i in 1 2 3 4 for i in 1 2 3 4
> :nth-child({i}) > :nth-child({i})
animation: sidebarItem (i / 5) s animation: sidebarItem (i / 5)s
@keyframes scroll-down-effect @keyframes scroll-down-effect
0% 0%

View File

@@ -465,6 +465,7 @@ const tocFn = function () {
// DOM Hierarchy: // DOM Hierarchy:
// ol.toc > (li.toc-item, ...) // ol.toc > (li.toc-item, ...)
// li.toc-item > (a.toc-link, ol.toc-2child > (li.toc-item, ...)) // li.toc-item > (a.toc-link, ol.toc-2child > (li.toc-item, ...))
const versionBiggerFive = GLOBAL_CONFIG.hexoversion.split('.')[0] >= 5
const findHeadPosition = function (top) { const findHeadPosition = function (top) {
// assume that we are not in the post page if no TOC link be found, // assume that we are not in the post page if no TOC link be found,
// thus no need to update the status // thus no need to update the status
@@ -477,7 +478,8 @@ const tocFn = function () {
list.each(function () { list.each(function () {
const head = $(this) const head = $(this)
if (top > head.offset().top - 25) { if (top > head.offset().top - 25) {
currentId = '#' + encodeURI($(this).attr('id')) if (versionBiggerFive) currentId = '#' + encodeURI($(this).attr('id'))
else currentId = '#' + $(this).attr('id')
} }
}) })