2012-02-05 2 views
7

Я хотел бы сохранить счетчик комментариев Disqus в моей собственной базе данных, чтобы я мог сортировать свои статьи по количеству комментариев. В принципе, каждый раз, когда страница читается на моем сайте, я хотел бы спросить Disqus, сколько комментариев у этой страницы есть, а затем обновить базу данных с этим счетом.Как получить кол-во комментариев в Disqus?

http://docs.disqus.com/help/3/ не представляется вам полезным.

Любые предложения?

+0

Ссылка, которую вы предоставили, больше не существует. Новая страница: [Добавление ссылок комментариев на главную страницу] (https://help.disqus.com/customer/portal/articles/565624-adding-comment-count-links-to-your-home-page) и кажется достаточно полезный. –

ответ

3

У Disqus есть web api, который позволяет разработчикам общаться с данными Disqus из своих собственных приложений.

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

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

Также вы можете использовать http://disqus.com/api/console/ для тестирования API

Я использую https://github.com/disqus/disqus-php

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

Учитывая, что счетчик комментариев является общедоступной информацией, жаль, что, похоже, излишне сложно получить его. – daluege

1

Я использовал это, чтобы получить комментарий графа:

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

Это обновляет ссылку, задаваемый странице: Second article

Содержание ссылки «Вторая статья» будет заменен графом комментариев. i.e "22 Комментарии". Вместо использования ajax для обновления вы используете db с подсчетом комментариев.

4

Получить комментарий отсчеты с Disqus API

Вот что вам нужно было сделать, прежде чем начать:

Регистрация для Disqus API key (необязательно) иметь свой собственный сайт, чтобы заменить данные примера

ПРИМЕЧАНИЕ. URL-адрес, который вы используете, должен соответствовать тому, что установлено как URL-адрес в Disqus. Для получения подробной информации об установке этого параметра см. Документацию по веб-интеграции.

Пример HTML

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

Переменные:

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

Создание запроса 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

Можете ли вы объяснить структуру URL: https://disqus.com/api/3.0/threads/set.jsonp? поэтому я имею в виду, когда мы хотим получить счет, нам нужно установить такой URL: https://disqus.com/api/3.0/threads/set.jsonp –

0

Я знаю, что это старый вопрос, но Google появляется много этих SO вопросов (это главный результат), в основном без каких-либо твердых ответов или ответов, которые полагаются на API Github wh Ич, похоже, не работает очень хорошо.


Я изо всех сил, чтобы получить комментарий отсчет дней, а также попробовал этот класс API, который, казалось, врезаться мое приложение с некоторой фатальной ошибкой.

После чуть более поисков, я наткнулся на ссылку на выходе JSON из API Disqus, и после того, как некоторые игры вокруг, я написал функцию быстрого, чтобы получить комментарий графа:

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']; 
    } 

You» вам нужно зарегистрировать приложение, чтобы получить общедоступный ключ API, который вы можете здесь сделать: https://disqus.com/api/applications/

Эта функция затем просто выводит общее количество комментариев, которые вы можете сохранить в базе данных или что угодно.

Что делает эта функция:

$json массив возвращает много информации об этой странице ваш комментарий плагин включен. Например:

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

Поскольку возвращает массив без каких-либо полезных ключей топ-массива уровня, мы делаем array_search на массив по ключу имя столбца, который мы знаем: ваша страница URL, где комментарии плагин ([link])

После этого будет возвращен ключ массива верхнего уровня, в данном случае 0, который мы можем передать обратно, чтобы извлечь нужную нам информацию из массива, такую ​​как общие комментарии (массив ключей posts).

Надеюсь, это поможет кому-то!

Смежные вопросы