在出去hexo live2d的世界外, 我們還有一個神奇的live2d widgets可以使用。當然要做的步驟就多不少了。但相對的,他的功能也更多地多樣化。
安裝
如果我是懶人,最簡單的方法就是去GitHub的readme上獲取即食罐頭 <script src="https://fastly.jsdelivr.net/npm/live2d-widgets@0/autoload.js"></script> , 然後放到網頁裏。
當然你會發現hexo好像沒得隨便給你注入html,此時shokax提供的注入器就有了大用。
注入器
根據遠古的文檔,我們可以得知hexo能用這個方法注入html。
hexo.extend.filter.register("theme_inject", function (injects) {
// 此处放置注入代码
});於是我嘗試性質的使用了,然而直接注入失敗了。在這裏讓我們跳過各種排錯過程,跳到答案。實際上,他只是給了一個位置注入,但實際的注入代碼,還需要仰賴hexo提供的注入器。
注入器的使用方法很簡單,只需要register了注入點,注入内容,以及注入位置。
注入點
shokax 提供了不少的注入點。截至v0.4.20,你能在repo的/script/plugin/lib/inject-point.ts 裏面找到具體注入點如下:
export default {
views: [
'head',
'sidebar',
'rightNav',
'postMeta',
'postBodyEnd',
'footer',
'bodyEnd',
'comment',
'status'
],
styles: [
'variable',
'mixin',
'style'
]
}注入内容
注入内容請填入autoload.js 的路徑, 如果你不想自定義可以用readme提供的文件;不然的話就要自建l2dapi的後端然後修改autoload.js。 具體方法會稍後説明。
注入位置
如果要的話可以看hexo文檔,簡單説我們這邊需要把代碼放到全部page,所以用default。
參考答案
如果我是懶人,停在這裏就夠了。
hexo.extend.filter.register("theme_inject", function (injects) {
hexo.extend.injector.register(
"head",
"<script src=\"https://fastly.jsdelivr.net/npm/live2d-widgets@0/autoload.js"></script>",
"default",
);
});
自建api
要自建api,加入自己喜歡的老婆可以接著看下去。首先,請去l2d widget的repo拿一份release,並放到hexo 根目錄底下的source裏。
之後你需要爲他去一個名字,e.g. l2d這個樣子。 如此,你就可以透過<blog的網址>/l2d/autoload.js 取得關鍵的調味料。
API建立
要搞api,首先我們需要api的代碼, 下載下來之後你可以透過任何方法讓他可以訪問。博主的做法是利用php加apache的docker image, 把整套api文件放到/www/html裏面,接著用caddy轉發api後面的東西。
接著我們需要塞入自定義的東西,如果做到這一步,先檢查一下autoload 跟 api可不可以訪問吧!
使用自己的api吧!
接著讓我們回到autoload.js裏面,把api path改成自己api的設置路徑, 接著把live2d path改成訪問autoload.js的路徑。
+warning live2d_path
讓我們注意,你必須講整個repo的release下載下來,而不是單單autoload.js。否則你不需要改live2d path
因為他要存在於source裏面才可以被訪問
+
如果這步也成功了,剩下的就是定義自己的模型,可以將模型加入到api 的model裏面, 然後在model_list.json加入他。接著就可以享用你的l2d啦.