icarus主题下拓展图片展示模式
以下操作是在 icarus 主题的 4.1.1
版本下完成的。
更换 icarus 主题后,发现点开文章内的图片无法将其放大。这一很是蛋疼的问题在此前使用 NexT 主题时并未出现过。后来翻阅主题的总配置文件,发现默认使用的画廊插件为 lightgallery 并且是集成在 inferno 模块下的。难怪现有的一系列设置失效。
在研究了 lightgallery 的说明文件后,发现问题原因很简单:就是在 lightgallery 里,涉及到的诸如图片缩放、旋转、自动放映等功能,都被单独拎出来作为子插件。若要使用则需额外引入相应的 .js
文件。现有集成于 inferno 模块下的 lightgallery 只是一个最基础的版本,并没有囊括这些额外功能。
对此,只需找到个人站点在本地根目录下的 node_modules\hexo-component-inferno\lib\view\plugin\gallery.js
文件,并找到文件中的以下相关代码,修改如下(主要是引入有关图片缩放和全屏放映的子插件,其对应拟生成 html
文件中的 body
部分):
1 | var js = "window.addEventListener(\"load\", () => {\n if (typeof $.fn.lightGallery === 'function') {\n $('.article').lightGallery({ selector: '.gallery-item' });\n }\n if (typeof $.fn.justifiedGallery === 'function') {\n if ($('.justified-gallery > p > .gallery-item').length) {\n $('.justified-gallery > p > .gallery-item').unwrap();\n }\n $('.justified-gallery').justifiedGallery();\n }\n });"; |
除此之外,在同一文件的最后部分找到相关代码,引入两项功能所对应的 .js
文件,将上述代码修改如下:
1 | return { |
此操作引入了zoom 和 fullscreen 两项功能所对应的 .js
文件,顺便更新了一下 lightgallery 至最新版本,从 1.6.8
到 1.10.0
,以及 justifiedGallery 的最新版本从 3.7.0
到 3.8.0
。(最新版本截止 2021 年 2 月 1 日)
保存并执行常规的更新操作。这样就实现了站点的图片缩放和全屏播放功能。用类似的方法还可实现其他一系列功能,如图片旋转、自动播放,乃至图片分享、视频放映,等等。下表为对应的子插件名和 .js
文件地址。更多操作可参考 lightgallery 说明文档。
子插件 | 对应名称 | .js 文件(最新版本,截止2021-2-1) |
---|---|---|
缩略图 | thumbnail | https://cdn.jsdelivr.net/npm/lg-thumbnail@1.2.1/dist/lg-thumbnail.min.js |
自动播放 | autoplay | https://cdn.jsdelivr.net/npm/lg-autoplay@1.2.1/dist/lg-autoplay.min.js |
视频放映 | video | https://cdn.jsdelivr.net/npm/lg-video@1.4.0/dist/lg-video.min.js |
图片全屏 | fullScreen | https://cdn.jsdelivr.net/npm/lg-fullscreen@1.2.1/dist/lg-fullscreen.min.js |
页数显示 | pager | https://cdn.jsdelivr.net/npm/lg-pager@1.0.2/dist/lg-pager.min.js |
图片缩放 | zoom | https://cdn.jsdelivr.net/npm/lg-zoom@1.3.0/dist/lg-zoom.min.js |
相簿分类 | hash | https://cdn.jsdelivr.net/npm/lg-hash@1.0.4/dist/lg-hash.min.js |
图片分享 | share | https://cdn.jsdelivr.net/npm/lg-share@1.2.1/dist/lg-share.min.js |
图片旋转 | rotate | https://cdn.jsdelivr.net/npm/lg-rotate@1.2.1/dist/lg-rotate.min.js |
(完)