1

我有一个 Rails 应用程序,我在其中使用Disqus 通用代码进行评论功能。我正在使用 ajax remote => true 函数来显示我的帖子内容。这是我的disqus代码

 <div id="disqus_thread"></div>
   <script type="text/javascript">
      var disqus_shortname = 'ginfy';
      var disqus_identifier = '<%= @posts.id %>';
      (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
  </script>
  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 

我知道 Disqus 依赖于站点 URL,它根据不同的 URL 采用不同的线程,但这里我使用的是 AJAX [没有更改 URL ]。检查我的erb-

<%= link_to "Read more","prayers/#{posts_item.id}",:remote => "true" %>

当我点击阅读更多时,Disqus 总是以相同的 Thread 打开。我希望在不牺牲我的 Ajax 功能的情况下为不同的帖子使用不同的 disqus 线程。

我已经检查了与此问题相关的所有问题,但没有给我解决方案。请帮我。

4

1 回答 1

1

You'll need to use the Disqus.reset function when you want to change the thread. Something like the following would work:

<script type="text/javascript">
    var changeThread = function(){

        DISQUS.reset({
          reload: true,
          config: function () {  
            this.page.identifier = 'new_disqus_identifier';
            this.page.url = 'http://example.com/#!new_content';
            this.page.title = "New Page Title";
            this.language = "fr"; // only if changing the language
          }
        });

    };
</script>

<button onclick=changeThread();>Change the Disqus thread!</button>

<div id="disqus_thread"></div>
    <script type="text/javascript">
        var disqus_shortname = 'ginfy';
        var disqus_identifier = '<%= @posts.id %>';
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
于 2013-05-20T22:53:40.867 回答