Несколько DISQUS на одной странице? - PullRequest
4 голосов
/ 08 декабря 2010

Мне нужно вставить систему DISQUS на веб-страницу моего сайта. Это просто.

Проблема в том, что мне нужно вставить несколько блоков DISQUS на одной странице.

Мне нужно что-то вроде этого . Каждая статья и каждый абзац имеют свой собственный блок комментариев.

Есть предложения? Может быть, мне нужно загрузить комментарии, используя какой-то API через AJAX?

Я буду использовать это на странице моего сайта на WordPress.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Вы можете попробовать этот трюк здесь, у меня это сработало: http://collaborable.com/blog/disqus-jquery-hack-awesome-ux

К сожалению, статья больше не доступна, кроме через Wayback Machine .

Соответствующие части этой ссылки следующие. Чтобы показать / скрыть комментарии:

<div class="comments">
  <p class="nocomment">
    <a class="nocomment" href="/">Hide comments</a>
  </p>
  <div class="disqus_thread"></div>
</div>
<p class="comment">
  <a class="comment"
    href="http://collaborable.com/blog/blog-entry-title"
    data-disqus-identifier="blog-entry-id">
    <span>Leave a comment</span>
  </a>
</p>

... И соответствующий Javascript:

     // DISQUS vars.
    var disqus_shortname = 'collaborable';
    var disqus_identifier = '';
    var disqus_url = '';

     // Leave a comment/cancel.
    $('.entry a.comment').click(function () {
        // Firefox? Bad firefox.
        if ($.browser.mozilla && window.disqus_loaded) {
            return true;
        }

        // Init DISQUS.
        disqus_identifier = $(this).data('disqus-identifier');
        disqus_url = $(this).attr('href');

        // DISQUS requires each thread to have the ID #disqus_thread.
        $entry = $(this).parents('div.entry');
        $('#disqus_thread').removeAttr('id');
        $entry.find('div.disqus_thread').attr('id', 'disqus_thread');

        // Load DISQUS script, if not already loaded.
        if ($entry.find('div.disqus_thread .dsq-reply').length == 0) {
            $.getScript('http://' + disqus_shortname + '.disqus.com/embed.js',
                function () {
                    window.disqus_interval =
                        setInterval('is_disqus_loaded("' + $entry.attr('id') + '")',
                            200);
                }
            );
        }

        // Hide/kill other DISQUS forums.
        $entry.find('a.nocomment').trigger('click');
        $(this).find('span').addClass('loading');
        return false;

    });

     // Hide/kill all open DISQUS forums.
    $('.entry a.nocomment').click(function () {
        $('div.comments').slideUp('normal',
            function () {
                $(this).find('.disqus_thread').empty();
            });
        $('p.comment').slideDown();
        return false;
    });

    function is_disqus_loaded(entry_id) {
        $entry = $('#' + entry_id);
        if ($entry.find('div.disqus_thread .dsq-reply').length) {
            clearInterval(window.disqus_interval);
            window.disqus_loaded = true;
            $entry.find('div.comments').slideDown();
            $entry.find('a.comment span').removeClass('loading');
            $entry.find('p.comment').slideUp();
        }
    }
1 голос
/ 11 сентября 2013

Вы можете попробовать http://tsi.github.io/inlineDisqussions/
Это даст вам комментарии к каждому абзацу, созданные на основе Disqus.
Просто скачайте скрипт и таблицу стилей и включите их (после jQuery).
Затем вызовите скрипт так:

<script>
  disqus_shortname = 'your_disqus_shortname';
  jQuery(document).ready(function() {
    jQuery("p").inlineDisqussions();
  });
</script>

Для получения дополнительной информации см. Связанную страницу.
Отказ от ответственности: я написал это.

...