2014-10-19
最近将博客迁移到了ghost上,使用的是Ghostium Theme。(现在没有用这个主题,2015-06)
首先在多说上获取通用代码:
<!-- 多说评论框 start -->
<div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>
<!-- 多说评论框 end -->
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
var duoshuoQuery = {short_name:"letianbiji"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->
将上面代码中的:
<div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>
修改成:
{{#post}}
<div class="ds-thread" data-thread-key="{{slug}}" data-title="{{title}}" data-url="{{url absolute="true"}}"></div>
{{/post}}
然后将代码复制到主题的post.hbs
文件中的恰当位置。
之后,可以考虑清理一下主题中disqus相关的代码。
但是,却出现了令人意外的现象: 使用新标签打开一文章,多说评论可以正常显示,但是在当前标签打开一篇文章却无法显示多说评论,需要刷新一次网页才行。
其实,之前mathjax也是出现了这个问题,但是将就着用了。下面的解决过程:
1、花了很长时间(盲目地)查看代码,调整代码位置,都没有用。
2、想到了JQuery Mobile,也许是链接标签<a>
的相关事件被劫持,使用ajax来获取页面了。打开firebug,在博客首页打开一文章,查看http请求,果然是。
3、在主题的配置文件./partials/custom/config.hbs
中有这么一行:
{{! Enable Pjax for asynchronous (AJAX) content loading}}
var enable_pjax = true;
pjax是什么?就是利用ajax刷新页面,同时url也会改变(HTML5特性),这种方式可以减少重复请求。应该是它了,将var enable_pjax = true;
改成var enable_pjax = false;
,重启ghost。
多说评论和mathjax的问题都解决了。
关于pjax的一些资料:
pjax 是如何工作的?
pjax:ajax和pushState结合的js库
jquery-pjax