2012-02-05 24 views
7

Tôi muốn lưu trữ số lượng nhận xét Disqus trên cơ sở dữ liệu của riêng mình, để tôi có thể sắp xếp các bài viết của mình theo số lượng nhận xét. Về cơ bản, mỗi lần một trang được đọc trên trang web của tôi, tôi muốn hỏi Disqus có bao nhiêu nhận xét mà một số trang nhất định có, sau đó cập nhật cơ sở dữ liệu với số đó.Tôi làm cách nào để nhận số nhận xét trong Disqus?

http://docs.disqus.com/help/3/ dường như không hữu ích.

Mọi đề xuất?

+0

Liên kết bạn cung cấp không tồn tại nữa. Trang mới là [Thêm liên kết đếm nhận xét vào trang chủ của bạn] (https://help.disqus.com/customer/portal/articles/565624-adding-comment-count-links-to-your-home-page) và dường như đủ hữu ích. –

Trả lời

3

Disqus có api web cho phép nhà phát triển giao tiếp với dữ liệu Disqus từ trong ứng dụng của riêng họ.

http://disqus.com/api/docs/

http://disqus.com/api/docs/forums/listThreads/

Ngoài ra bạn có thể sử dụng để kiểm tra http://disqus.com/api/console/ api

tôi sử dụng https://github.com/disqus/disqus-php

require('disqusapi/disqusapi.php'); 
$disqus = new DisqusAPI('yoursecretkey'); 
print_r($disqus->forums->listThreads(array('forum'=>'your_ shortname'))); 
+5

Cho rằng số lượng bình luận là một thông tin công cộng, thật đáng tiếc là nó có vẻ phức tạp không cần thiết để có được nó. – daluege

1

Tôi sử dụng này để có được số lượng bình luận:

http://help.disqus.com/customer/portal/articles/565624

Đó là cập nhật một liên kết mà bạn đặt trong page: Second article

Nội dung của liên kết 'Thứ hai bài viết' sẽ được thay thế bằng số nhận xét. tức là "22 Bình luận". Sử dụng ajax để cập nhật bạn là db với số lượng nhận xét.

4

Nhận comment đếm với Disqus API

Đây là những gì bạn sẽ cần phải đã làm trước khi bắt đầu:

Đăng ký cho một Disqus API key (không bắt buộc) Có trang web của riêng bạn để thay thế các dữ liệu ví dụ

LƯU Ý: URL bạn sử dụng phải khớp với những gì được đặt làm URL trong Disqus. Xem tài liệu Tích hợp web để biết thông tin về cách thiết lập này một cách đáng tin cậy.

HTML mẫu

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Disqus Comment Counts Example</title> 
    </head> 
    <body> 
     <h1>Comment Counts Example</h1> 
     <div> 
      <a href="http://thenextweb.com/google/2013/05/03/fullscreen-beam-launches-first-youtube-app-for-google-glass-with-public-or-private-sharing/"> 
       <h2>Fullscreen BEAM: The first YouTube app for Google Glass comes with public or private sharing</h2> 
       <div class="count-comments" data-disqus-url="http://thenextweb.com/google/2013/05/03/fullscreen-beam-launches-first-youtube-app-for-google-glass-with-public-or-private-sharing/"></div> 
      </a> 
     </div> 
     <div> 
      <a href="http://thenextweb.com/apps/2013/05/04/traktor-dj/"> 
       <h2>Traktor DJ: Native Instruments remixes its impressive DJ software for iPhone</h2> 
       <div class="count-comments" data-disqus-url="http://thenextweb.com/apps/2013/05/04/traktor-dj/"></div> 
      </a> 
     </div> 
     <div> 
      <a href="http://thenextweb.com/video/2013/05/04/ninja-innovation-in-the-21st-century-with-gary-shapiro-of-the-consumer-electronics-association-at-tnw2013-video/"> 
       <h2>Ninja innovation in the 21st Century with the Consumer Electronics Association&#8217;s Gary Shapiro [Video]</h2> 
       <div class="count-comments" data-disqus-url="http://thenextweb.com/video/2013/05/04/ninja-innovation-in-the-21st-century-with-gary-shapiro-of-the-consumer-electronics-association-at-tnw2013-video/"></div> 
      </a> 
     </div> 
     <button type="button" id="get-counts-button">Get Comment Counts</button> 
    </body> 
</html> 

biến:

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var disqusPublicKey = "YOUR_PUBLIC_KEY"; 
    var disqusShortname = "thenextweb"; // Replace with your own shortname 

    var urlArray = []; 
    $('.count-comments').each(function() { 
    var url = $(this).attr('data-disqus-url'); 
    urlArray.push('link:' + url); 
    }); 
}); 
</script> 

đưa ra yêu cầu API

$('#get-counts-button').click(function() { 
    $.ajax({ 
    type: 'GET', 
    url: "https://disqus.com/api/3.0/threads/set.jsonp", 
    data: { api_key: disqusPublicKey, forum : disqusShortname, thread : urlArray }, 
    cache: false, 
    dataType: 'jsonp', 
    success: function (result) { 

     for (var i in result.response) { 

     var countText = " comments"; 
     var count = result.response[i].posts; 

     if (count == 1) 
      countText = " comment"; 

     $('div[data-disqus-url="' + result.response[i].link + '"]').html('<h4>' + count + countText + '</h4>'); 

     } 
    } 
    }); 
}); 
+0

Bạn có thể giải thích cấu trúc url: https://disqus.com/api/3.0/threads/set.jsonp không? vì vậy tôi có nghĩa là khi chúng tôi muốn có được tính chúng tôi cần phải thiết lập các url như thế này: https://disqus.com/api/3.0/threads/set.jsonp –

0

Tôi biết đây là một câu hỏi cũ, nhưng Google lần lượt lên rất nhiều những câu hỏi này SO (đây là kết quả hàng đầu), hầu hết không có bất kỳ câu trả lời hoặc câu trả lời chắc chắn nào dựa trên API Github ich dường như không hoạt động tốt.


Tôi đã gặp khó khăn để nhận được số lượng nhận xét trong nhiều ngày và cũng đã thử rằng lớp API dường như làm hỏng ứng dụng của tôi với một số lỗi nghiêm trọng.

Sau một chút tìm kiếm nhiều hơn, tôi đi qua một liên kết đến đầu ra JSON API Disqus, và sau khi một số chơi xung quanh, tôi đã viết một chức năng nhanh chóng để có được số lượng bình luận:

function getDisqusCount($shortname, $articleUrl) { 
     $json = json_decode(file_get_contents("https://disqus.com/api/3.0/forums/listThreads.json?forum=".$shortname."&api_key=".$YourPublicAPIKey),true); 

     $array = $json['response']; 
     $key = array_search($articleUrl, array_column($array, 'link')); 
     return $array[$key]['posts']; 
    } 

Bạn' sẽ cần phải đăng ký một ứng dụng để nhận khóa API công khai của bạn, bạn có thể thực hiện tại đây: https://disqus.com/api/applications/

Chức năng này sẽ chỉ xuất tổng số nhận xét mà bạn có thể lưu trữ trong cơ sở dữ liệu hoặc bất kỳ thứ gì.

gì chức năng này thực hiện:

Mảng $json trả nhiều thông tin về trang Plugin nhận xét của bạn là về. Ví dụ:

Array 
(
[0] => Array 
(
    [feed] => https://SHORTNAME.disqus.com/some_article_url/latest.rss 
    [identifiers] => Array 
    (
     [0] => CUSTOMIDENTIFIERS 
    ) 

[dislikes] => 0 
[likes] => 0 
[message] => 
[id] => 5571232032 
[createdAt] => 2017-02-21T11:14:33 
[category] => 3080471 
[author] => 76734285 
[userScore] => 0 
[isSpam] => 
[signedLink] => https://disq.us/?url=URLENCODEDLINK&key=VWVWeslTZs1K5Gq_BDgctg 
[isDeleted] => 
[raw_message] => 
[isClosed] => 
[link] => YOURSITEURLWHERECOMMENTSARE 
[slug] => YOURSITESLUG 
[forum] => SHORTNAME 
[clean_title] => PAGETITLE 
[posts] => 0 
[userSubscription] => 
[title] => BROWSERTITLE 
[highlightedPost] => 
) 

[1] => Array 
(
    ... MORE ARRAYS OF DATA FROM YOUR SHORTNAME FORUM ... etc 
) 
) 

Bởi vì lợi nhuận mảng mà không cần bất kỳ phím mảng cấp cao nhất hữu ích, chúng tôi làm một array_search trên mảng bởi một chìa khóa tên cột mà chúng ta sẽ biết: URL trang của bạn, nơi các plugin bình luận là ([link])

này sau đó sẽ trả lại chìa khóa mảng cấp cao nhất, trong trường hợp này 0 mà sau đó chúng ta có thể vượt qua trở lại để trích xuất các thông tin chúng tôi muốn từ mảng, chẳng hạn như tổng bình luận (mảng chính posts).

Hy vọng điều này sẽ giúp ai đó!

Các vấn đề liên quan