Создание динамического всплывающего окна для комментариев Disqus для разных тем

Редактировать: кажется, что Disqus использует URL-адрес текущей страницы в качестве идентификатора потока комментариев, несмотря на то, что я был явным и заявлял:

<script type="text/javascript">
    var disqus_developer = 1;
    var disqus_identifier = "@Model.UniqueThreadIdentifier"; <--- HERE
    var disqus_shortname = 'foo';

    /* * * 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>

Подробнее читайте ниже.


Disqus говорит, что я могу идентифицировать «страницу» с помощью уникального идентификатора.

Теперь на этой конкретной странице есть около 10 элементов, и я хотел бы, чтобы каждый элемент имел личную ветку обсуждения Disqus.

Итак, вот фактическая страница, которая загружается:

@foreach (var strong in Model.StrongAgainst)
{
    <div class="pick">        
            <div class="actions">
                <a href="#modalDialogue" data-toggle="modal" 
                   id="@strong.UniqueThreadIdentifier" class="btn btn-comment">
                    <i class="icon-comment"></i>
                    999
                </a>
            </div>
        </div>

    </div>
}

Это @UniqueThreadIdentifier — это то, что я использую, чтобы позволить Disqus загрузить соответствующий поток.

Затем в том же представлении HTML у меня есть эта строка Javascript, которая с использованием UniqueIdentifier возвращает PartialView с соответствующей конфигурацией Disqus и HTML:

<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        $(document).on("click", "#strong-against .pick .data .actions .btn-comment", function () {
            var commentUniqueVar = $(this).attr("id");
            $.ajax({
                url: '/Counterpicks/GetCommentThread',
                data: { uniqueidentifier: commentUniqueVar },
                success: function (data) {
                    $('#strongAgainstCommentModal').html(data);
                    alert("Finished loading.");
                }
            });
        });
    });
</script>

И до сих пор на 100 % подтверждается, что правильные значения загружаются в HTML.

Вот частичное представление:

<div class="modal-body">    
    <div id="disqus_thread">
    </div>
    <script type="text/javascript">
        var disqus_developer = 1;
        var disqus_identifier = "@Model.UniqueThreadIdentifier";
        var disqus_shortname = 'foobar';

        /* * * 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>
    <noscript>
        Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments
            powered by Disqus.</a></noscript>
    <a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">
        Disqus</span></a>    
</div>

Обратите внимание, как я установил disqus_identifier, используя строго типизированную модель с правильным значением.

Мое единственное предположение заключается в том, что при объявлении такой переменной она создается глобально? (Я так думаю?) И библиотека javascript Disque всегда будет использовать первое значение, которое я ей присвоил. Правильный?

Как правильно загрузить правильный идентификатор в библиотеку javascript Disqus?


person Only Bolivian Here    schedule 01.05.2012    source источник


Ответы (1)


Идентификатор позволяет вам отображать один и тот же поток на нескольких URL-адресах, но вы не можете отображать несколько потоков на одном и том же URL-адресе, используя только новый идентификатор (это распространенное заблуждение). Мы разработали метод перезагрузки потока с помощью AJAX под названием Disqus.Reset, который задокументирован здесь: http://docs.disqus.com/help/85/

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

person Ryan V    schedule 02.05.2012