这篇文章是我在写博客的过程中遇到的关于图片显示的问题总结。

本来还有其他文章需要整理,但是又担心在写作过程中把刚解决的问题忘记了,所以先行记录。

主要围绕:如何在博客中显示图片asset-image以及fancybox

  1. 原生引用在文章中显示图片
  2. asset-image在主页中显示图片
  3. 修改 fancybox

在文章中显示图片

首先,第一点,如何在文章中显示图片?

网上基本上都可以查到相关的资料,一般是安装 asset-image 插件,然后修改 post_asset_folder 值为 true 即可。

如果说,只是在文章页面中显示图片,那么采用 markdown 的原生引用方式即可。
例如:![图片描述](测试图片)

采用这种原生的引用方式,必须在文章所在文件夹中,对应每个文章,都需要一个同名的文件夹用来存放图片。这时候,在系统的配置选项中修改 post_asset_folder 值为 true,hexo 在 new 一篇文章时,会自动新建一个同名文件夹。

如果 hexo 打开了 fancybox,就可以做到,显示图片,和点击放大图片。

在主页中显示图片

第二点,如何在主页显示图片?

用 hexo 的小伙伴都知道,主页显示的是所有文章,为了更好的对文章进行展示,我们都会用到

<!–more–>

这个标签,来使得每篇文章显示缩略部分。

这样,有些图片我们想要显示在缩略部分,但是主页的索引路径是 hostname://port,所以我们在文章页面通过原生引用方式显示的图片是无法显示在主页的。

此时,我们需要安装一个 asset-image 的插件,输入:

npm install https://github.com/CodeFalling/hexo-asset-image --save

由于本身的 asset-image 有 bug ,我们需要在 node_modules 中寻找到 hexo-asset-image 插件,修改 index.js 内容为以下:

"use strict";
var cheerio = require("cheerio");// http://stackoverflow.com/questions/14480345/how-to-get-the-nth-occurrence-in-a-string
function getPosition(str, m, i) {return str.split(m, i).join(m).length;
}var version = String(hexo.version).split(".");
hexo.extend.filter.register("after_post_render", function (data) {var config = hexo.config;if (config.post_asset_folder) {var link = data.permalink;if (version.length > 0 && Number(version[0]) == 3)var beginPos = getPosition(link, "/", 1) + 1;else var beginPos = getPosition(link, "/", 3) + 1;// In hexo 3.1.1, the permalink of "about" page is like ".../about/index.html".var endPos = link.lastIndexOf("/") + 1;link = link.substring(beginPos, endPos);var toprocess = ["excerpt", "more", "content"];for (var i = 0; i < toprocess.length; i++) {var key = toprocess[i];var $ = cheerio.load(data[key], {ignoreWhitespace: false,xmlMode: false,lowerCaseTags: false,decodeEntities: false,});$("img").each(function () {if ($(this).attr("src")) {// For windows style path, we replace '\' to '/'.var src = $(this).attr("src").replace("\\", "/");if (!/http[s]*.*|\/\/.*/.test(src) && !/^\s*\//.test(src)) {// For "about" page, the first part of "src" can't be removed.// In addition, to support multi-level local directory.var linkArray = link.split("/").filter(function (elem) {return elem != "";});var srcArray = src.split("/").filter(function (elem) {return elem != "" && elem != ".";});if (srcArray.length > 1) srcArray.shift();src = srcArray.join("/");$(this).attr("src", config.root + link + src);console.info &&console.info("update link as:-->" + config.root + link + src);}} else {console.info && console.info("no src attr, skipped...");console.info && console.info($(this));}});data[key] = $.html();}}
});

这时,引用图片的方式,就可以采用 asset_img 的引用方式了,这种引用方式,可以实现在主页文章缩略中显示图片。
引用格式如下:

{% asset_img 单链表图例.png %}

如果你的 hexo 安装了 fancybox,或者说一些压缩的插件,可能在编辑文章的过程中,出现 **no src attr, skipped…**这种情况,不要慌,应该是图片链接没有 src 导致的,不碍事。将 hexo-asset-image 的 index.js 中的两段 console 注释掉即可。

//console.info && console.info("no src attr, skipped...");
//console.info && console.info($(this));

修改 fancybox

还有 fancybox 和 Hexo-NexT 的关系,我这个版本应该是 NexT7,也有可能是别人改过的,其中 theme/next/source/lib 中没有 fancybox,所以在开启 fancybox 后,会导致在本地调试过程中,没有网络的情况下,localhost 无法访问。
同理还有 lazyload。因为我个人爱去书店写东西,经常没有网络,所以我把 fancybox 和 lazyload 关闭,问题留待之后解决。

问题解决,通过查找 theme.fancybox 所在位置,定位到 head.swig 和 vendors.swig 两个文件,在设置 fancybox 为 true 时,会引用外部 cdn,我们将外部 cdn 改为本地文件。

我们首先下载 fancybox 的库,点击这里:fancybox 库将内容解压缩到 theme/theme-name/source/lib/文件夹下,然后在fancybox_css_uri后面修改

**//cdn.jsdelivr.net/npm...**

**fancybox/dist/jquery.fancybox.min.css**

至此,就可以解决 fancybox 本地加载的问题了。

放在最后

如果您喜欢我的文章,拜托点赞+收藏+关注,博主会根据大家喜好来推出相关系列文章~

更多精彩内容也可以访问我的博客Aelous-BLog

Hexo图片相关 - 文章显示、主页显示、修改fancybox相关推荐

  1. dux主题页面添加html,DUX主题文章页相关推荐双栏显示

    DUX主题是themebetter原创开发的一款基于WordPress程序的多功能主题,响应式布局,不同设备不同展示效果,简洁大气  ,多设备支持.优化SEO,适用于垂直站点.科技博客.个人站,目前我 ...

  2. laravel大型项目系列教程(四)之显示文章列表和用户修改文章

    小编心语:不知不觉已经第四部分了,非常感谢很多人给小编提的意见,改了很多bug,希望以后能继续帮小编找找茬~小编也不希望误导大家~这一节,主要讲的是如何显示文章列表和让用户修改文章,小编预告一下(一共 ...

  3. echarts树图图标修改成图片以及自定义图片首次加载不显示的问题的修改<js>

    首先看一下显示效果,如下图所示: 1.首先修改图片,在option对象中加入 下方代码就可实现图片的修改,但是存在bug symbol:'image://https://ss2.bdstatic.co ...

  4. php主页显示商品预览图代码,jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能...

    这次给大家带来jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能,jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能的注意事项有哪些,下面就是实战案例,一起来看一下. 1 . ...

  5. Hexo图片不显示问题

    Hexo图片不显示问题 文章首发于我的博客Lunatic,转载请注明出处 为了想让更多人看到博客的文章,更好的让百度站点收录,添加了hexo-abbrlink插件实现博客生成永久链接,但安装这个插件之 ...

  6. Github的README中插入图片,Github仓库项目主页显示图片

    Github仓库主页的 README.md 支持 MarkDown 文本,也支持图片显示.显示图片需要提供<img>标签,这个链接可以位于其他服务器上,也可以是GitHub自身的仓库文件. ...

  7. 修改html不显示内容,记录网友修改网页导致文章内容不显示的问题

    一个网友联系老蒋,自己的网站在之前修改模板添加广告的,但是不清楚什么问题导致目前网站首页能正常打开,但是内容页只能显示标题,内容是无法打开的.而且这个问题其实在十几天前有修改过页面,自己后来都没有动过 ...

  8. 微信或QQ分享IOS应用时显示“未验证”问题相关文章汇总

    微信或QQ分享IOS应用时显示"未验证"问题相关文章汇总 1.IOS官方说明与解决方案 2.QQ互联官方关于此问题的通知 3.QQ互联官方提供的解决方案 4.QQ互联对Univer ...

  9. 如何在python中显示电脑中的图片-python在终端里面显示一张图片

    Linux终端里面可谓是奇妙无限,很多优秀的软件都诞生在终端里面.相较之下,Windows本身的理念和Linux就不一致,所以,你懂得. 下面,我们不妨先思考一下,如何在终端里面显示一张图片? 在终端 ...

最新文章

  1. Spring Boot 动手写一个 Start
  2. html百度地图中心点不正确,百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题...
  3. 【Linux】24_网络管理数据链路层详解
  4. 高斯消元法解方程matlab程序,用高斯消元法解线性方程组 的MATLAB程序
  5. Java 8的惰性序列实现
  6. 用folium模块画地理图_使用Folium表示您的地理空间数据
  7. python split函数 空格_Python随笔29:Python基础编程练习题23~24
  8. laravel基本信息
  9. Android so文件理解
  10. 微信小程序 图片上传预览删除
  11. python 金融应用(一)期权定价公式的计算
  12. MFC制作的入坑级别管理系统
  13. psd文件转响应式html5,前端开发/前端切图/PSD转HTML/响应式HTML5
  14. html按钮 字 颜色代码,html中按钮的字体颜色怎么设置?
  15. DSPE-PEG-MAL,474922-22-0,DSPE-PEG-Maleimide
  16. python frame用法_Pandas Series.to_frame()用法介绍
  17. 学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)
  18. php中对数组进行转码,PHP 数组转码
  19. 西门子S7-200PLC系列(二)
  20. spring cloud nacos 配置多环境打包

热门文章

  1. 使用BIGMAP下载电子地图
  2. GNSS测量与数据处理第十二周第八次作业
  3. leetcode竞赛记录-第266场周赛
  4. win10局域网邮箱服务器,高手教你给win10系统建立局域网的方法
  5. Poj 1011:sticks通俗易懂 大法师+强力剪枝
  6. ibm创新产品1---紫禁城游览
  7. 通过linux挂载光盘以及搭建yum本地仓库使用rpm软件包
  8. 服装行业ERP必须解决哪些问题
  9. 腾讯云 Ubuntu16.04.1 允许 root 用户 SSH登录 修改 sshd_config PermitRootLogin 后登录失败
  10. 尚硅谷 Spring5