2012-02-05 12 views
7

Desidero memorizzare il conteggio dei commenti di Disqus nel mio database, in modo da poter ordinare i miei articoli in base al numero di commenti. Fondamentalmente, ogni volta che una pagina viene letta sul mio sito, vorrei chiedere a Disqus quanti commenti ha quella pagina, quindi aggiornare il database con quel conteggio.Come ottengo il conteggio dei commenti in Disqus?

http://docs.disqus.com/help/3/ non sembra essere utile.

Qualche suggerimento?

+0

Il link che hai fornito non esiste più. La nuova pagina è [Aggiunta di collegamenti di conteggio commenti alla tua home page] (https://help.disqus.com/customer/portal/articles/565624-adding-comment-count-links-to-your-home-page) e sembra sufficientemente utile. –

risposta

3

Disqus hanno web api che consente agli sviluppatori di comunicare con i dati Disqus dalle proprie applicazioni.

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

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

Inoltre è possibile utilizzare per testare http://disqus.com/api/console/ api

Io uso https://github.com/disqus/disqus-php

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

Dato che il conteggio dei commenti è un'informazione pubblica, è un peccato che sembra essere inutilmente complicato ottenerlo. – daluege

4

Get commento conta con Disqus API

Ecco cosa avrete bisogno di aver fatto prima di iniziare:

Registrati per un Disqus API key (opzionale) Avere il proprio sito per sostituire i dati di esempio

NOTA: l'URL che utilizzi deve corrispondere a quanto impostato come URL in Disqus. Consultare i documenti di Integrazione Web per informazioni su come configurarlo in modo affidabile.

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

Variabili:

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

che effettua la richiesta 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

Puoi spiegare la struttura dell'URL: https://disqus.com/api/3.0/threads/set.jsonp? quindi voglio dire quando vogliamo contare abbiamo bisogno di impostare l'url in questo modo: https://disqus.com/api/3.0/threads/set.jsonp –

0

So che questa è una vecchia questione, ma Google salta fuori un sacco di queste domande in modo (questo è il risultato migliore), per lo più senza risposte o risposte solide basate sull'API di Github che non sembra funzionare molto bene


ero stato lottando per ottenere il conteggio commento per giorni, e anche provato quella classe API che sembrava mandare in crash la mia domanda con qualche errore fatale.

Dopo un po 'di più ricerca, mi sono imbattuto in un link alla uscita JSON delle API Disqus, e dopo un po' suonare in giro, ho scritto una rapida funzione per ottenere il conteggio commento:

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' Avrai bisogno di registrare un'applicazione per ottenere la tua chiave API pubblica, che puoi fare qui: https://disqus.com/api/applications/

Questa funzione mostrerà solo il numero totale di commenti che puoi quindi memorizzare nel database o qualsiasi altra cosa.

Cosa questa funzione fa:

L'array $json restituisce molte informazioni relative alla pagina il tuo commento plugin è su. Per esempio:

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

perché la matrice restituisce senza alcun top utili chiavi degli array di livello, ci fanno un array_search sulla matrice da una chiave nome della colonna che sapremo: l'URL della pagina in cui il plugin commenti è ([link])

In questo modo verrà restituito il codice della matrice di livello superiore, in questo caso 0 che sarà quindi possibile ritrasferire per estrarre le informazioni desiderate dall'array, ad esempio i commenti totali (codice array posts).

Spero che questo aiuti qualcuno!

Problemi correlati