版更HEXO NEXT 6 → 8,以非侵入式修改整合AdSense、like coin、修正gitlab-ci文章更新時間錯誤的問題
本文重點疏理
- 以非侵入式修改整合AdSense、like coin
- 修正使用
gitlab-ci
時,文章更新內容變成push
時間 - 隱藏「歸檔」頁面時,最上面的鼓勵文字
- NEXT主題使用npm安裝,未來版更最輕鬆
若訴求正巧與我一樣的話,已提供懶人包可直接使用!
前言
NEXT主題在HEXO生態圈佔據相當高的人氣,早期的版本若要融入常見的AdSense、like coin,都需要靠侵入式修改
盡管曾經有人提issue希望可以整合AdSense,但官方認為會破壞next的優雅性而拒絕
隨著HEXO引擎的強化,提供了filter功能便於主題創造自己的plugin生態圈,NEXT主題也於v8版本整合進去
雖然帶來了許多breaking change,但更有效的讓使用者於外部嵌入自己的程式碼!
6 → 8 版更心得
由HEXO系列文章可以知道我之前為了整合AdSense、Like Coin已做了許多侵入式修改
前陣子其實有想過版更至7版(當時尚未有8),但侵入式修改陣痛太大…
盡管骨架已成功運作,但把文章轉移過來後,網頁變成一片白,找不到原因
後因工作繁忙就擱置沒在理會
趁閒看了一下NEXT主題,注意到了custom files
最後成功將以前侵入式修改最強烈的AdSense、like Coin抽離出來
修正掉使用gitlab-ci
時更新文章內容會變成push時間的問題
並將NEXT主題調整成npm安裝,未來再也不必煩惱版更問題!
6 → 8 調整事項
最困難的侵入式修改解決後,僅剩文章內一些語法要修正
提供我遇到的狀況供參考
若是全新建立Blog,可以跳過這段
front-matter
有寫permalink
的話,所有連結尾端都要加/
,否則點擊文章連結會變成下載HTML檔- 標籤功能,以前可以使用
<p class="note info">標籤內容</p>
,但多行內容時,文字內容會跑掉。最後我全部修正成官方寫法
快速使用懶人包
若您的NEXT主題訴求恰巧跟我一樣的話,我已提供懶人包,只需要下列幾個簡單步驟即可馬上使用!
- 下載懶人包
- 執行
npm i
,安裝相關套件 - 打開
_config.yml
、_config.next.yml
,依需求調整參數、安裝所需plugin (若全新建立BLOG,到此步就結束,可以開始進行部署) - 轉移現有文章至
source/_posts
npm run server
,檢查文章是否需要調整- 推送至您的GitHub / GitLab
若不打算隱藏「歸檔」頁面時,最上面的鼓勵文字
於_config.next.yml
裡custom_file_path:
的style: source/_data/styles.styl
註解
因使用CSS隱藏,無法做成參數開關 (6版原生有這開關,但7版以後被官方拿掉了…)
自行整合
若為舊版更新過來,建議使用hexo init blog
重新開始
因使用的 HEXO 引擎版本會影響主題能否順利啟動
若直接在現有版本做的話,容易發生預期之外的錯誤
整合AdSense、like coin
於source/_data
建立下列檔案,並於AdSense側邊選單總覽
-> 按廣告單元
挑想要的類型,複製程式碼至想要放廣告的地方
header.njk
-> 放置AdSense啟動參數sidebar.njk
-> 單元廣告 (可選,未設置即由Google自動插入)post-meta.njk
-> 單元廣告 (可選,未設置即由Google自動插入)post-body-end.njk
-> 單元廣告 (可選,未設置即由Google自動插入)
若懶得參數化,複製完後就不用再調了
亦不必再於_config.next.yml
加入AdSense等相關參數
_config.next.yml
裡的custom_file_path
放開相關註解
隱藏「歸檔」頁面時,最上面的鼓勵文字
6版本,是有cheer_enable
的開關可以直接關閉,但於7之後拿掉了
增加source/_data/styles.styl
檔案,並放開_config.next.yml
裡的custom_file_path
相關註解
.collection-title {
display: none;
}
修正使用gitlab-ci
時,文章更新內容變成push
時間
官方已提供答案了
只是藏在一個不容易發現的地方
主要就是before_script
那行git ls-files .....
將文章更新時間調整成commit
的時間
image: node:lts
before_script:
# Set TimeZone, eg: Asia/Shanghai
# - export TZ='Asia/Shanghai'
# Restore last modified time
- "git ls-files -z | while read -d '' path; do touch -d \"$(git log -1 --format=\"@%ct\" \"$path\")\" \"$path\"; done"
pages:
stage: build
cache:
paths:
- node_modules/
script:
- npm install
- npx hexo deploy
artifacts:
paths:
- public
only:
- master