Я хотел бы хранить счетчик комментариев Disqus в моей собственной базе данных, чтобы я мог сортировать свои статьи по количеству комментариев. В принципе, каждый раз, когда страница читается на моем сайте, я хотел бы спросить Disqus, сколько комментариев у этой страницы есть, а затем обновить базу данных с этим счетом.
http://docs.disqus.com/help/3/ не кажется полезным.
Какие-либо предложения?
Получить комментарии с помощью API disqus
Вот что вам нужно сделать до запуска:
Зарегистрируйтесь для ключа API Disqus (необязательно) Имейте свой собственный сайт для замены данных примера
ПРИМЕЧАНИЕ. 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’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>'); } } }); });
У Disqus есть web api, который позволяет разработчикам общаться с данными Disqus из своих собственных приложений.
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')));
Я использовал это для подсчета комментариев:
http://help.disqus.com/customer/portal/articles/565624
Он обновляет ссылку, указанную на странице: Вторая статья
Содержимое ссылки «Вторая статья» будет заменено комментарием. т.е. «22 комментария». Вместо использования ajax для обновления вы используете db с подсчетом комментариев.
Я знаю, что это старый вопрос, но Google раскрывает много этих SO-вопросов (это главный результат), в основном без каких-либо твердых ответов или ответов, которые полагаются на API Github, который, похоже, не работает очень хорошо.
Я изо всех сил пытался получить количество комментариев в течение нескольких дней, а также пробовал этот класс API, который, казалось, разбил мое приложение с некоторой фатальной ошибкой.
После немного большего поиска я наткнулся на ссылку на выход JSON в Disqus API, и после некоторого разговора я написал быструю функцию, чтобы получить счетчик комментариев:
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']; }
Вам нужно будет зарегистрировать приложение, чтобы получить общедоступный ключ API, который вы можете здесь: https://disqus.com/api/applications/
Затем эта функция просто выводит общее количество комментариев, которые вы можете сохранить в базе данных или что-то еще.
Что делает эта функция:
$json
array возвращает много информации о странице, на которой включен ваш плагин комментариев. Например:
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
ключевых posts
массива).
Надеюсь, это поможет кому-то!