title: hexo next主题为博客添加分享功能
date: 2018-01-06 20:20:02
tags: [hexo博客, 博客配置]
categories: hexo next主题配置
---
今天心血来潮,决定给博客添加分享功能,百度上首先是找到了使用shareSDK的分享功能,最后在实践的过程当中发现它添加时步骤比较多,添加完成后效果比较丑(就是一个长条的浅蓝色按钮),并且点击后想要退出分享比较麻烦(它的取消按钮实在太难找了,它在页面最下方的位置,呈现浅灰色,这个设计太反人类了,决定放弃它了)。在next主题的官方的文档中发现它自身集成了百度分享的功能,因此决定采用百度了。
html
根据官方文档的说法,只须要添加/修改字段 baidushare,值为 true。便可
官方文档
可是我本身改了以后发现并无出现分享功能,下面是个人主体配置文件的部分代码node
# Baidu Share # Available value: # button | slide # Warning: Baidu Share does not support https. #baidushare: #type: button baidushare: true
网上也没找到什么靠谱的资料,没办法,本身来分析源代码,找找问题在哪吧
因为hexo自己是使用node.js将Markdown渲染成静态页面,因此百度分享的相关代码必然会出如今HTML页面中,咱们经过查看生成的HTML发现并无对应的分享的代码,也就是说配置并无启用。如今初步估计问题应该是出如今Markdown转化为HTML的过程当中。
hexo中文章使用的模板是主题目录中的layout/post.swig文件,文件中关于分享功能的代码大体出如今第16行程序员
<div class="post-spread"> {% if theme.jiathis %} {% include '_partials/share/jiathis.swig' %} {% elseif theme.baidushare %} {% include '_partials/share/baidushare.swig' %} {% elseif theme.add_this_id %} {% include '_partials/share/add-this.swig' %} {% elseif theme.duoshuo_shortname and theme.duoshuo_share %} {% include '_partials/share/duoshuo_share.swig' %} <!--后面的两句是我为了使用sharesdk的分享功能而添加的,原版没有--> {% elseif theme.sharesdk %} {% include '_partials/share/sharesdk.swig' %} {% endif %} </div>
从代码上看,next主题支持许多中分享方式。它会先判断配置文件中对应的配置打开与否执行相应的代码,其中theme表明的是主题的配置文件。
** ps:当时我在配置sharesdk的时候发现只有注释掉其余的分享功能才能正常启用sharesdk,从代码上来看若是其余的打开了,根本就不会加载sharesdk的配置文件,要正常使用sharesdk的分享功能,要么修改判断的顺序,要么在配置文件中注释掉其余的分享功能 **
百度分享功能加载的是文件配置文件目录下的_partials/share/baidushare.swig,打开该文件:web
{% if theme.baidushare.type === "button" %} <div class="bdsharebuttonbox"> <a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a> <a href="#" class="bds_douban" data-cmd="douban" title="分享到豆瓣网"></a> <a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a> <a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a> <a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a> <a href="#" class="bds_tieba" data-cmd="tieba" title="分享到百度贴吧"></a> <a href="#" class="bds_twi" data-cmd="twi" title="分享到Twitter"></a> <a href="#" class="bds_fbook" data-cmd="fbook" title="分享到Facebook"></a> <a href="#" class="bds_more" data-cmd="more"></a> <a class="bds_count" data-cmd="count"></a> </div> .... {% endif %}
代码中先判断了theme.baidushare.type的值,若是为button则执行后面的代码,原始代码中判断了两种状况一种是theme.baidushare.type为button,另外一种是为slide,只有为这两种值才会执行代码,再次检查配置文件看看它的类型值是否正确。最后发现baidushare以及它下面的type被注释掉了,因为它没有读取到这个值,因此这两中状况都不知足,也就不会生成对应的分享代码,因此打开这两行的代码,最终这块的配置以下:微信
baidushare: type: button baidushare: true
从新生成一下,发现百度分享的按钮出现了。
至此问题解决了。hexo
百度了好久没有解决,仍是仍是带着绝望的心情看源码看出了点头绪。最后我想说:RTFSC大法好(Linus大神说的:Read The Fucking Source Code....)
实际效果请移步到此ide
最后说点题外话,关于求助这件事,其实不少时候看源代码或者帮助文档能解决咱们差很少不少问题,若是实在没有,通常你遇到的问题别人可能也遇到过,善用搜索引擎能解决全部问题,以前看到一个说法:普通程序员 + google = 超级程序员。因此在平时要养成一些习惯,仔细阅读帮助文档,阅读源码,善用搜索引擎,再实在没辙了再上论坛提问。
下面是常常见到的在一些问答网站回答的一些缩写,我以为颇有趣也颇有用,在此将其列举出来:post
一般,给出这些答案的人已经经过这些办法找到了解决问题的关键,正在一边看一边敲键盘。这些回复意味着他认为:第一,你要的信息很容易找到。第二,自已找 要比别人喂到嘴里能学得更多。你不该该以为这样就被冒犯了,按黑客的标准,他没有不理你就是在向你表示某种尊敬,你反而应该感谢他热切地想帮助你。网站