2015-06-03 3 views
1

Это, похоже, проблема для других, как и я .. Но даже после ссылок в разделе «Вопросы, которые могут уже иметь ваш ответ» при публикации этого я все еще не могу заставить это работать ,Получить счетчик комментариев с помощью PHP

Все, что мне действительно нужно, это подсчет комментариев для данной статьи путем передачи идентификатора (или URL) сообщения.

Я скачал это из GitHub: https://github.com/disqus/disqus-php

И последовал первый ответ здесь: How to get Disqus comment count for a page using Disqus PHP API?, который, казалось, ближе всего к тому, что я пытался достичь. Это заставило меня так далеко:

<?php 
    require_once('scripts/disqusapi/disqusapi.php'); 
    $disqus = new DisqusAPI('secret_key'); 
    $page_with_comments = $disqus->posts->details(array('thread'=>"LINK-IDENTIFIER")); 
    $comment_count = $page_with_comments->posts; 
?> 

Когда я делаю это, однако я получаю эту ошибку:

Fatal error: Uncaught exception 'Exception' with message 'Missing required argument: post' in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php:82 Stack trace: #0 /home/mugheads/public_html/test.php(4): DisqusResource->__call('details', Array) #1 /home/mugheads/public_html/test.php(4): DisqusResource->details(Array) #2 {main} thrown in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php on line 82 

Эта ошибка указывает на то, что вы больше не можете использовать «нить», чтобы получить JSON необходимо .. и я не могу найти все равно, чтобы узнать, что ID Disqus использует для сообщений, используя «пост», например, ошибка описывает только прием целого числа.

Если кто знает более простой способ или способ, который определенно работает, пожалуйста, поделитесь!

Любая помощь была бы принята с благодарностью!

+0

возможно заменен 'thread' на' post' – Augwa

+0

Спасибо за ваш ответ!Когда я это делаю, он говорит, что сообщение должно быть целым числом. Но я не знаю, как использовать идентификаторы вместо текста для идентификации сообщений. – Zephni

ответ

1

Я знаю, что это старый вопрос, но Google раскрывает много таких вопросов, в основном без каких-либо твердых ответов или ответов, которые полагаются на этот API Github, который, похоже, не работает очень хорошо.


Я изо всех сил, чтобы получить комментарий отсчет дней, а также попробовал этот класс API, который, казалось, врезаться мое заявление (возможно, из-за той же фатальной ошибки).

После чуть более поисков, я наткнулся на ссылку на выходе JSON из API Disqus, и после того, как некоторые игры вокруг, я написал функцию быстрого, чтобы получить комментарий графа:

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» должны будете зарегистрировать приложение, чтобы получить открытый ключ API, который вы можете сделать здесь: https://disqus.com/api/applications/

Что делает эта функция:

$json The возвращает массив много информации о странице, на которой включен ваш плагин комментариев. Например:

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

Надеюсь, это поможет кому-то!

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