1

コメント機能にDisqus Universal Codeを使用している Rails アプリケーションが 1 つあります。投稿コンテンツを表示するために 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" %>

read more をクリックすると、Disqus は常に同じ Thread で開きます。Ajax 機能を犠牲にすることなく、投稿ごとに異なる disqus スレッドが必要です。

この問題に関連するすべての質問を既に確認しましたが、解決策はありませんでした。私を助けてください。

4

1 に答える 1

1

スレッドを変更する場合は Disqus.reset 関数を使用する必要があります。次のようなものが機能します。

<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 に答える