2014-02-20 20 views
3

我有使用durandaljs和knockoutjs的SPA頁面。現在我要爲我的網站實現disqus插件的支持。同樣的disqus線程正在爲所有文章加載

當我添加disqus時,我發現相同的評論顯示爲不同的網頁與不同的網址(我使用durandal URL重寫)。

我想,這個問題的根源在於,我更改信息的URL被完全hashbang區分 enter image description here

的代碼如下(#!):

var disqus_shortname = 'somename'; 
    var disqus_identifier = context.id; 

    (function() { 
     var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
     dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 
     (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
    })(); 

    if (typeof DISQUS != 'undefined') { 
     DISQUS.reset({ 
      reload: true, 
      config: function() { 
       this.page.title = "title" + context.id; 
       this.page.identifier = context.id; 
       this.page.url = "http://localhost:23054/#!ideas/details/" + context.id; 
       debugger; 
      } 
     }); 
    } 

查看:

<div id="disqus_thread"></div> 

我希望有人對SPA頁面使用disqus評論,並知道如何幫助我解決這個問題。

+0

看起來像https://stackoverflow.com/questions/8944287/disqus-loading-the-same-comments-for-dynamic-pages?rq=1的副本對我來說... – dirkk

回答

3

這裏是我的解決方案:

var id = context.id; 
    disqus_shortname = 'somename', 
    disqus_identifier = id, 
    disqus_title = id, 
    disqus_url = "http://someurl.com/#!" + id; 
     if ($('head script[src="http://' + disqus_shortname + '.disqus.com/embed.js"]').length == 0) { 
      (function() { 
       var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
       dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 
       (document.getElementsByTagName('head')[0]).appendChild(dsq); 
      })(); 
     } 
     if (typeof DISQUS != "undefined") { 
      DISQUS.reset({ 
       reload: true, 
       config: function() { 
        this.page.identifier = id; 
        this.page.url = "http://someurl.com/#!" + id; 
       } 
      }); 
     } 
1

我認爲問題可能是您的標識符不夠獨特。來自Disqus文檔:

當Disqus啓用了Disqus的網頁時,Disqus會使用此標識符 確定要加載的相應的評論線程。如果找不到合適的 線程,則會創建一個新線程。

我不確定context.id是什麼,但要確保這對每個線程都是唯一的,並且對於Disqus的目的來說是足夠獨特的。

相關問題