1

編集:私が明示的で次のように述べているにもかかわらず、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 ビューに、UniqueIdentifier を使用して、適切な Disqus 構成と HTML を含む PartialView を返す次の Javascript 行があります。

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

ここまでで、正しい値が HTML に読み込まれていることが 100% 確認されています。

PartialView は次のとおりです。

<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厳密に型指定されたモデルを使用して正しい値を設定する方法に注目してください。

私の唯一の推測は、そのような変数を宣言すると、グローバルに作成されるということですか? (だと思いますか?) そして、Disque JavaScript ライブラリは常に、私が割り当てた最初の値を使用します。正しい?

Disqus JavaScript ライブラリに正しい識別子を適切にロードするにはどうすればよいですか?

4

1 に答える 1

0

識別子を使用すると、複数の URL で同じスレッドを表示できますが、新しい識別子だけを使用して同じ URL で複数のスレッドを表示することはできません (これはよくある誤解です)。Disqus.Reset と呼ばれる AJAX を使用してスレッドをリロードする方法を開発しました

Disqus.Reset なしでハッキングすることもできます。これは、次の投稿で実証されています。

于 2012-05-02T20:09:10.230 に答える