我想将Disqus评论计数存储在我自己的数据库中,以便我可以按评论计数对文章进行排序。基本上,每次在我的网站上阅读页面时,我都想问一下这个页面有多少评论,然后用这个数字更新数据库。
http://docs.disqus.com/help/3/似乎没有帮助。
有什么建议吗?
答案 0 :(得分:6)
使用disqus API获取评论计数
以下是您在开始之前需要做的事情:
注册Disqus API key (可选)拥有自己的站点来替换示例数据
注意:您使用的URL必须与Disqus中的URL匹配。有关如何可靠地进行设置的信息,请参阅Web集成文档。
示例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>');
}
}
});
});
答案 1 :(得分:3)
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')));
答案 2 :(得分:1)
我用这个来获得评论数:
http://help.disqus.com/customer/portal/articles/565624
它会更新您在页面中设置的链接: Second article
链接“第二篇文章”的内容将替换为评论计数。 即“22评论”。比使用ajax用注释计数更新你的db。
答案 3 :(得分:1)
我知道这是一个老问题,但谷歌提出了很多这些SO问题(这是最好的结果),大多没有任何可靠的答案或答案依赖于Github API似乎不能很好地工作
我一直在努力让评论计数好几天,并且还尝试了那个似乎使我的应用程序崩溃并导致一些致命错误的API类。
经过一番搜索后,我偶然发现了一条指向Disqus API的JSON输出的链接,经过一些游戏后,我编写了一个快速函数来获取评论数:
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
(
[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
)。
希望这有助于某人!