Как добавить счетчики Feedburner и Twitter обычным текстом

Многие из вас наверняка уже видели на некоторых блогах вместо стандартных счетчиков Feedburner и TwitterCounter красиво оформленные простые текстовые данные. Например:

counters1.gif

counters2.gif

counters3.gif

Все-таки кастомизированные и заточенные под ваш собственный дизайн счетчики выглядят намного привлекательнее, нежели скучные стандартные. Есть несколько вариантов сделать на своем блоге счетчики обычным текстом, с которым можно уже творить что угодно в плане оформления. Например, специальный плагин Subscribers Text Counter, который позволяет выводить не только количество rss подписчиков и фолловеров в twitter, но еще и количество фанатов в facebook.

Однако мы рассмотрим вариант с непосредственной правкой шаблона WordPress, предложенный автором блога zemalf.com. Мне он понравился тем, что вся функциональная часть выведена в соответствующий файл functions.php, а в сайдбаре добавляется лишь вызов счетчиков.

Итак, для начала несколько предварительных телодвижений. Чтобы выводить статистические данные на своем блоге необходимо их сначала откуда-то получить. Таким источником является API (Application Programming Interface), который есть и у Feedburner и у Twitter. У каждого естественно свой. Про API подробно рассказывать не стану. Кому интересно — вэлкам листать Вики.

Если в случае с Twitter ничего особенного заранее предпринимать не нужно, то для получения данных через API Feedburner-а потребуется эту функцию специально там активировать. Для этого заходим в Feedburner, кликаем по названию нужного нам фида, и в его настройках забираемся во вкладку «Publicize». Здесь необходимо перейти в раздел «Awareness API» и активировать его.

Окей! Теперь чтобы проверить работу API наберите в адресной строке браузера http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=ИМЯ_ВАШЕГО_ФИДА

Если все в порядке, то вы увидите следующее сообщение:

<rsp stat="ok">
<!--This information is part of the FeedBurner Awareness API. If you want to hide this information, you may do so via your FeedBurner Account.-->
<feed id="sd7wejfw9e0jg9wgjr9g09g00" uri="websovet">
<entry date="2010-11-11" circulation="754" hits="1251" reach="0"/>
</feed>
</rsp>

Идем далее. В шаблоне WP должен присутствовать файл functions.php. Если его нет, то нужно создать. В этом файле необходимо прописать дополнительно (к тому, что там уже есть) еще три куска кода:

function curl($url) {
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HEADER, 0);
// EDIT your domain to the next line:
curl_setopt($ch,CURLOPT_USERAGENT,"ВАШ_ДОМЕН");
curl_setopt($ch,CURLOPT_TIMEOUT,10);
$data = curl_exec($ch);
if (curl_errno($ch) !== 0 || curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
$data === false;
}
curl_close($ch);
return $data;
}

При копировании кода будьте очень внимательны и не теряйте скобки, кавычки и прочие детали! В этой части кода нужно заменить слова ВАШ_ДОМЕН на ваш собственный домен. Без http и прочих дополнений. Просто mycoolsite.ru

В следующем куске кода нужно будет заменить слова ИМЯ_ВАШЕГО_ФИДА на ваше имя. Также без излишеств. Например, адрес моего фида http://feeds.feedburner.com/websovet. Соответственно именем будет только последняя часть — websovet

// Get Feedburner RSS Subscriber count as plain text
add_option('myfeeds_count','0','','yes');
add_option('myfeeds_api_timer',mktime() - 10000,'','yes');
function myfeeds_count() {
$rsscount = get_option('myfeeds_count');
if ( get_option('myfeeds_api_timer') < (mktime() - 3600) ) { // EDIT your Feedburner feed name here: $fb_id = "ИМЯ_ВАШЕГО_ФИДА"; $subscribers = curl("https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=" . $fb_id); try { $xml = new SimpleXmlElement($subscribers, LIBXML_NOCDATA); if ($xml) { $rsscount = (string) $xml->feed->entry['circulation'];
update_option('myfeeds_count', $rsscount);
}
} catch (Exception $e) { }
update_option('myfeeds_api_timer', mktime());
}
//Echo the count if we got it
if($rsscount == 'N/A' || $rsscount == '0') { echo 'many other'; }
else { echo $rsscount; }
}

И последняя часть для Twitter. Здесь также нужно будет заменить слова ВАШЕ_ИМЯ на ваш логин в Twitter (без @):

// Get Twitter Follower count as plain text
add_option('mytwitter_followers','0','','yes');
add_option('mytwitter_api_timer',mktime() - 10000,'','yes');
function mytwitter_followers() {
$twittercount = get_option('mytwitter_followers');
if ( get_option('mytwitter_api_timer') < (mktime() - 3600) ) { // EDIT your Twitter user name here: $twitter_id = "ВАШЕ_ИМЯ"; $followers = curl("http://twitter.com/users/show.xml?screen_name=" . $twitter_id); try { $xml = new SimpleXmlElement($followers, LIBXML_NOCDATA); if ($xml) { $twittercount = (string) $xml->followers_count;
update_option('mytwitter_followers', $twittercount);
}
} catch (Exception $e) { }
update_option('mytwitter_api_timer', mktime());
}
if ( $twittercount != '0' ) { echo $twittercount; }
else { echo "growing number of"; }
}

С файлом functions.php закончили. Теперь как вывести данные в сайдбаре блога. Легко и просто! Добавляем следующее:

Feedburner: <?php myfeeds_count(); ?>

Twitter: <?php mytwitter_followers(); ?>

Вот и все! Останется лишь оформить это красиво при помощи CSS. Но с этим, думаю, вы уже справитесь.

Если со счетчиком Twitter обычно проблем не возникает, то Feedburner не всегда сразу срабатывает. Да и вообще у него со своим собственным счетчиком постоянно траблы. Поэтому в коде для него (второй кусок) и было добавлено в конце:

... if($rsscount == 'N/A' || $rsscount == '0') { echo 'many other'; }
else { echo $rsscount;...

Это на тот случай, когда от сервиса невозможно получить данные. Чтобы при этом посетителей вашего блога не пугала надпись N/A или 0, данная часть кода заменяет их на many other (много). Лучше вместо нее добавить просто число ваших подписчиков.

13.11.2010

Автор: Игорь Квентор
www.websovet.com

Если статья оказалась для вас полезной, пожалуйста, поставьте свою оценку и поделитесь в соцсетях:

1 Star2 Stars3 Stars4 Stars5 Stars (Вы еще не оценили)
Загрузка...

Похожие записи:

Подпишитесь на рассылку блога Вебсовет, чтобы первыми получать самые интересные материалы:

Оставить комментарий: