Update 11/3/2014:
We now have a method for using comment counts on any element you want. The regular count.js script will now work if you:
- Use a
disqus-comment-count
class AND
- Use a
data-disqus-url
OR data-disqus-identifier
attribute
So now either of these elements would work:
<span class="disqus-comment-count" data-disqus-url="http://example.com/path-to-thread/"> <!-- Count will be inserted here --> </span>
and
<span class="disqus-comment-count" data-disqus-identifier="your_disqus_identifier"> <!-- Count will be inserted here --> </span>
Old Answer (don't do this anymore)
The count.js script is fairly inflexible when it comes to the types of tags its looking for (it must be an a
tag), so you'll need to use the API to accomplish this.
This API call returns an array of thread data (you're looking for the "Posts" integer) for any number of threads that you specify: http://disqus.com/api/docs/threads/set/
Because of API limits you'll ideally run this server-side and cache the counts to serve to the clients. However, unless you have a very busy site, doing it client-side is usually fine. You can email [email protected] if you need more than 1000 requests/hour for your application.
EDIT
Here's a quick example of how you could do this with jQuery. This assumes that you have several empty div's that look like this:
<div class="my-class" data-disqus-url="http://example.com/some-url-that-matches-disqus_url/"></div>
le javascript:
$(document).ready(function () {
var disqusPublicKey = "YOUR_PUBLIC_KEY";
var disqusShortname = "YOUR_SHORTNAME";
var urlArray = [];
$('.my-class').each(function () {
var url = $(this).attr('data-disqus-url');
urlArray.push('link:' + url);
});
$('#some-button').click(function () {
$.ajax({
type: 'GET',
url: "https://disqus.com/api/3.0/threads/set.jsonp",
data: { api_key: disqusPublicKey, forum : disqusShortname, thread : urlArray }, // URL method
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>');
}
}
});
});