Replies: 1 comment
-
非常棒的解決方案,感謝您的分享! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
今天手賤升級,並且遇到問題也不想回滾就想解決,剛剛解了一個,很開心,來分享。
故事前提
fancybox 是一個被大家廣用的框架,很幸運的,Next 團隊在很久以前就有整合在裡面。
有了 fancybox,我們可以將圖片放大、在下面設置一些 caption、使用左右來瀏覽圖片。
但是,有一些圖片因為某些原因,我們就是不希望他套用。
例如這個
這是一個應用方法 (把自己的圖片當成 emoji,緊跟在文字尾端。)
這類的圖片就不適合被套用 fancybox。
所以,我們總要想個辦法來實現這件事情。
在以前是怎麼解決的
最早最早,我是看到這篇 : https://blog.csdn.net/cddchina/article/details/79764432
上面這篇不知道還活不活著。作為替代,相關討論如果想找找的話 (畢竟大家也都互相"宣傳")
關鍵字可以下 "wrapImageWithFancyBox" + "nofancybox"
這邊簡單介紹的話,就是在 /next/source/js/utils.js 之中,去添加一行
但是這在 v8.x 並不能使用,這使我今天折騰了很久。
嘗試的辦法
/hexo根目錄/source/js/
建立utils.js
並且先拷貝
/next/source/js/utils.js
的全部內容,然後把wrapImageWithFancyBox: function() {}
都貼到合理位置。但這並不會成功。
所以看了一下,得想辦法讓他在
/next/source/js/next-boot.js
中去觸發。所以我添加了
CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox();
在合理位置,畢竟以前版本也是類似這樣寫的。但這並不會成功。
CONFIG.fancybox
是undefined
呀。自己試了老半天,明明
_config.next.yml
已經是fancybox: true
了,怎麼還這樣。我自己的推斷是 CONFIG 在 assign 的過程中並沒有把 fancybox 當作 key 來讀入。
源碼看了老半天也沒看懂在哪邊 assign 的,歡迎開發組補充解惑。
不過讀不到,小事情,
CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox();
直接改成NexT.utils.wrapImageWithFancyBox();
,我牛逼。但這並不會成功。 然後圖片全部都不顯示了 (等於 fancybox 套用過程中失敗)
接下來就是正解了
正解
既然我自己套 fancybox 失敗了,那他到底怎麼讀入的。
找了一下,看到以下線索
Hmmmmm ... 所以就是直接讀 fancybox 官方的 js ? 這麼勁爆 ?
於是我點開了
/next/source/js/third-party/fancybox.js
,噢,不是直接讀入,但這裡面的東西我似曾相識。所以就是現在不搞
wrapImageWithFancyBox
那套了,而是使用這個檔案來做 wrap。那就簡單明瞭了。
/hexo根目錄/source/js/third-party/
建立fancybox.js
。/next/source/js/third-party/fancybox.js
內的東西全部複製過去。這樣就完成了。
不過,雖然都已經用 injection 的方式了,還是推薦像我一樣寫自己的 ID 在註解之中
這樣以後忘記自己寫了、改了什麼東西之後,就會方便一點找 ...
大概就這樣啦 !
碎碎念
NexT 7.x 版本在 lazyload 的部分好像做的不是很好,所以就想要升級一下;
此次升級之後雖然遇到了諸多的問題
(例如因為以前的 injection 程式碼不適用了,導致 blog 都是 crash 狀態找原因找了好久、很多 custom CSS 跑掉)
但是目前用的 8.x 版本的 lazyload 運作很正常,看了很開心。
如果有時間的話,會想要把此次升級遇到的問題也記錄起來 ... 但可能不會像這篇這麼長就是了
很喜歡這種紀錄方式,希望能給其他也在折騰的小夥伴們一點啟發。
Beta Was this translation helpful? Give feedback.
All reactions