2013-06-30 2 views
1

Следующий код предназначен для того, чтобы получить количество комментариев Disqus для нескольких страниц.Количество комментариев для Disqus для нескольких страниц

var DISQUSWIDGETS; 

if (typeof DISQUSWIDGETS != 'undefined') { 
    DISQUSWIDGETS.displayCount({ 
     "showReactions":true, 
     "text":{ 
      "and":"and", 
      "reactions":{ 
       "zero":"0 Reactions", 
       "multiple":"{num} Reactions", 
       "one":"1 Reaction"}, 
      "comments":{ 
       "zero":"0 Comments", 
       "multiple":"{num} Comments", 
       "one":"1 Comment" 
      } 
     }, 
     "counts":[ 
      {"reactions":0,"uid":1,"comments":2}, 
      {"reactions":0,"uid":2,"comments":5}, 
      {"reactions":0,"uid":3,"comments":9} 
     ] 
    }); 
} 

Я хочу, чтобы получить только количество комментариев, например здесь:

{"reactions":0,"uid":1,"comments":2} количество комментариев должно быть 2.

Есть ли Javascript код, который будет получить только комментарии?

+0

Что ваши критерии для получения правильной строки из массива "имп"? Вы хотите первый? Вам нужен идентификатор с id = 1? –

ответ

1

Если вы можете переписать так:

var DISQUSWIDGETS; 

if (typeof DISQUSWIDGETS != 'undefined') { 
    var disqus_options = { 
     "showReactions":true, 
     "text":{ 
      "and":"and", 
      "reactions":{ 
       "zero":"0 Reactions", 
       "multiple":"{num} Reactions", 
       "one":"1 Reaction"}, 
      "comments":{ 
       "zero":"0 Comments", 
       "multiple":"{num} Comments", 
       "one":"1 Comment" 
      } 
     }, 
     "counts":[ 
      {"reactions":0,"uid":1,"comments":2}, 
      {"reactions":0,"uid":2,"comments":5}, 
      {"reactions":0,"uid":3,"comments":9} 
     ] 
    }; 
    DISQUSWIDGETS.displayCount(disqus_options); 
} 

Тогда вы будете иметь возможность получить доступ к колу, как это:

disqus_options.counts[0].comments 

, который имеет значение 2 в этом случае.


редактировать

Для фильтрации по id, в этом случае id == 3.

var counts_with_id = $.grep(disqus_options.counts, function(count) { 
    return (count.uid == 3); 
}); 
if (counts_with_id.length) // the id exists 
    counts_with_id[0].comments // has value 9 
else 
    the id does not exist in the disqus_options. 

редактировать

Вы можете "взломать" метод displayCount:

// Load the disqus plugin which contains the DISQUSWIDGETS.displayCount method. 

// Change what DISQUSWIDGETS.displayCount does. 
var actualDisplayCount = DISQUSWIDGETS.displayCount; 
DISQUSWIDGETS.displayCount = function(options) { 
    // do things with options 
    return actualDisplayCount(options); 
}; 

// Now load the source from http://forum.disqus.com/count-data.js?q=1&1=2,http://www.website.com&2=2 
+0

Нет. Я не могу переписать, потому что я получу его из URL. В примере, подобном этому http://forum.disqus.com/count-data.js?q=1&1=2,http://www.website.com&2=2 – Enve

+0

Если нет решения с javascript, оно также может быть с 'PHP' – Enve

+0

Это должно быть в состоянии сделать в javascript. Я работаю над решением. –

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