【问题标题】:Django-disqus: disqus comment box onDjango-disqus:disqus 评论框
【发布时间】:2013-07-23 03:32:45
【问题描述】:

我用 django 创建了一个博客,并尝试使用 disqus cmets。我遇到了与其他问题类似的问题,即当我将 cmets 发布到任何条目(在单个条目页面上)时,它们都显示在主页上的一个条目下。

主要问题是在博客的主页上,我有多个条目,我只能让一个disqus评论框出现在一个条目上。当我查看源代码时,其他博客条目的 javascript 变量似乎正确显示,所以我不确定为什么评论框不会在其他博客条目下呈现。

我处于开发模式,所以我不确定这是否会有所不同......我也是一个菜鸟。

这是我为每个条目获取的 disqus javascript 的源代码...谁能帮我弄清楚为什么我无法让评论框呈现?

<div id="disqus_thread"></div>
<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "3";
    var disqus_title = "Third";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (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);
    })();
</script>

<div id="disqus_thread"></div>
<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "1";
    var disqus_title = "First post";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (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);
    })();
</script>

<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "2";
    var disqus_title = "Second!";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (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);
    })();
</script>

【问题讨论】:

  • 我刚刚注意到的一件奇怪的事情是,当页面加载时,我会在每个博客条目下短暂地看到“cmets powered by disqus”,但当页面完成加载后它就消失了。

标签: django disqus


【解决方案1】:

Disqus 旨在每页加载一个 Disqus 邮箱。 Disqus 使用页面 URL 作为唯一标识符,并且只有一个 Disqus 嵌入可以与单个 URL 关联。如果一个页面的源代码中存在多个 Disqus 嵌入,则只会加载一个嵌入。

有一种方法可以使用不同的标识符来reload the disqus embed

  DISQUS.reset({
  reload: true,
  config: function () {  
    this.page.identifier = "newidentifier";  
    this.page.url = "http://example.com/#!newthread";
  }
});

但是,这种方法仍然只用于每页一个嵌入。

【讨论】:

    【解决方案2】:

    这已经解决了,但我想通过使用 django-disqus 来展示一种不同的方法。最后一行是为您提供特定页面/对象的正确 cmets。

    安装django-disqus 并在您的模板中使用它。

    pip install django-disqus
    

    将 disqus 添加到您的 INSTALLED_APPS 并将您的 disqus api 密钥放入您的设置中:

    settings.py

    INSTALLED_APPS = (
        ...
        'disqus',
        ...
    )
    
    DISQUS_API_KEY = 'YOUR_SECRET_API_KEY'
    DISQUS_WEBSITE_SHORTNAME = 'YOUR_WEBSITE_SHORTNAME'
    

    在模板中使用 disqus 模板标签:

    some_template.html

    # load the tags
    {% load disqus_tags %}
    # get comments for your website
    {% disqus_show_comments "YOUR_WEBSITE_SHORTNAME" %}
    # get the url for the current object to get the right comments
    {% set_disqus_url object.get_absolute_url %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多