我创建了一个简单的Rails 4 cms。在主页上以及类别和存档页面上有一个带有disqus注释计数的文章列表。
负责显示评论计数的disqus代码就在关闭正文标记之前。
当我启用Turbolinks时,注释计数仅在初始页面加载时显示。如果我访问文章然后返回文章列表,则没有评论计数。如果我重新加载页面,那么评论计数就在那里。
我尝试添加jquery.turbolinks gem。 我尝试编辑disqus代码,使其在页面上执行:change或page:load。 我试着把它放在脑袋里。 我试图在代码中添加disqus标识符。
更新 这是我现在正在尝试的(编辑我的短名称):
var disqus_shortname = 'my_shortname'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
($(document).on('page:change',function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
})());
这样,评论计数会显示在初始页面加载时以及第一次访问帖子列表页面时。但是,当我第二次访问他们时,评论计数没有显示出来。尝试使用page:load和page:update也没有结果。
有人遇到过这个问题吗?
答案 0 :(得分:1)
我无法使用默认的disqus注释计数代码,因此我使用了disqus api而不是魅力:
$(document).on('page:change', function () {
var disqusPublicKey = "MY_PUBLIC_KEY"; // Replace with your own public key
var disqusShortname = "my_shortname"; // Replace with your own shortname
var urlArray = [];
$('.comment-link-marker').each(function () {
var url = $(this).attr('data-disqus-url');
urlArray.push('link:' + url);
});
$.ajax({
type: 'GET',
url: "https://disqus.com/api/3.0/threads/set.jsonp",
data: { api_key: disqusPublicKey, forum : disqusShortname, thread : urlArray },
cache: false,
dataType: 'jsonp',
success: function (result) {
for (var i in result.response) {
var countText = " comments";
var count = result.response[i].posts;
if (count == 1)
countText = " comments";
$('a[data-disqus-url="' + result.response[i].link + '"]').html(count + countText);
}
}
});
});
答案 1 :(得分:0)
这是Turbolinks的问题。使用Turbolinks页面将更改而不需要完全重新加载,因此您不能依赖DOMContentLoaded或jQuery.ready()来触发代码。
尝试此操作:添加jquery.turbolinks gem,更新application.js并重新启动服务器。