hexo next主题为博客添加分享功能


title: hexo next主题为博客添加分享功能
date: 2018-01-06 20:20:02
tags: [hexo博客, 博客配置]
categories: hexo next主题配置


今天心血来潮,决定给博客添加分享功能,百度上首先是找到了使用shareSDK的分享功能,最后在实践的过程中发现它添加时步骤比较多,添加完成后效果比较丑(就是一个长条的浅蓝色按钮),而且点击后想要退出分享比较麻烦(它的取消按钮实在太难找了,它在页面最下方的位置,呈现浅灰色,这个设计太反人类了,决定放弃它了)。在next主题的官方的文档中发现它自身集成了百度分享的功能,所以决定采用百度了。

解决思路

根据官方文档的说法,只需要添加/修改字段 baidushare,值为 true。即可
官方文档
但是我自己改了之后发现并没有出现分享功能,下面是我的主体配置文件的部分代码

# 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,打开该文件:

{% 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

重新生成一下,发现百度分享的按钮出现了。
至此问题解决了。

总结

百度了很久没有解决,还是还是带着绝望的心情看源码看出了点头绪。最后我想说:RTFSC大法好(Linus大神说的:Read The Fucking Source Code....)
实际效果请移步到此

最后的最后

最后说点题外话,关于求助这件事,其实很多时候看源代码或者帮助文档能解决我们差不多很多问题,如果实在没有,一般你遇到的问题别人可能也遇到过,善用搜索引擎能解决所有问题,之前看到一个说法:普通程序员 + google = 超级程序员。所以在平时要养成一些习惯,仔细阅读帮助文档,阅读源码,善用搜索引擎,再实在没辙了再上论坛提问。
下面是经常见到的在一些问答网站回答的一些缩写,我觉得很有趣也很有用,在此将其列举出来:

  • RTFSC(Read the fucking source code)
  • RTFM(Read the fucking manual)
  • UTFH (“Use The Fucking Help”)
  • STFW (“Search The Fucking Web”)
  • STFG (“Search The Fucking Google” or “Search The Fantastic Google”)
  • GIYF (“Google Is Your Friend”)
  • JFGI (“Just Fucking Google It”)
  • UTSL (“Use The Source Luke”—alternately, RTFS)
  • RTFA (“Read The Fucking Article”—common on news forums such as Fark.com[3] and Slashdot)
  • RTFE (“Read The Fucking Email”)
  • RTFC (“Read The Fucking Code,” or “Reboot The Fucking Computer”)
  • RTFQ (“Read The Fucking Question”)
  • LMGTFY (“Let Me Google That For You”)
  • WIDGI (“When In Doubt Google It” - Also occasionally ‘WIDGIT’)
  • FIOTI (“Find It On The Internet”)

通常,给出这些答案的人已经通过这些办法找到了解决问题的关键,正在一边看一边敲键盘。这些回复意味着他认为:第一,你要的信息很容易找到。第二,自已找 要比别人喂到嘴里能学得更多。你不应该觉得这样就被冒犯了,按黑客的标准,他没有不理你就是在向你表示某种尊敬,你反而应该感谢他热切地想帮助你。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,574评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,103评论 18 139
  • 第一章 安装Git工具 下载GitHub for Windows,直接点击安装,安装完成后,可以看到“Git Sh...
    不圆的石头阅读 11,787评论 5 63
  • 今天花了很多时间在简书上 然后又想酝酿第2篇文章 然后,酝酿出一句话: “我希望你,勿忘初心!”
    在白纸上画圆阅读 101评论 1 1
  • 很喜欢这样的日子,没什么特别的安排。 周末一家三口,打扫卫生烧饭烧菜,聊聊天有时候还怼几句,充满了人间烟火气。 周...
    心理咨询师萍阅读 208评论 0 1