2013-07-23 5 views
1

Я создал блог с django и пытаюсь использовать комментарии disqus. У меня есть аналогичная проблема, которую я видел в других вопросах, когда я отправляю комментарии к любым записям (на страницах с одной записью), все они отображаются на главной странице под одной записью.Django-disqus: disqus comment box на

Основная проблема заключается в том, что на главной странице блога, где у меня есть несколько записей, я могу получить только одно окно комментария disqus для отображения одной записи. Когда я смотрю на исходный код, переменные javascript для других записей в блоге кажутся корректными, поэтому я не уверен, почему поля комментариев не будут отображаться под другими блогами.

Я работаю в режиме разработки, поэтому я не уверен, что это имеет значение ... Я тоже вообще ничего.

Это исходный код, который я получаю для javascript disqus для каждой записи ... может ли кто-нибудь помочь мне понять, почему я не могу получить окно комментариев для рендеринга?

<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> 
+0

Одна странная вещь, которую я только заметил, заключается в том, что при загрузке страницы я кратко вижу «комментарии, приводимые в действие disqus» под каждой записью в блоге, но затем она исчезает, когда страница заканчивается загрузкой. – LVNGD

ответ

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"; 
    } 
}); 

Однако этот метод все еще используется только с одной вставлять на страницу.

1

Это решение, но я хотел бы показать другой подход, используя django-disqus. Последняя строка - это та, которая дает вам правильные комментарии для конкретной страницы/объекта.

Установите 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 %} 
Смежные вопросы