-
data publikacji: 15.02.2009
Jak wyizolować liczbę subskrybentów RSS korzystając z FeedBurner’a?
kategoria: Wtyczki do Wordpressa autor: m1chu
W niezbędniku prawie każdego blogera leży możliwość menadżerowania swoimi kanałami RSS, bądź Atom. Któż z nas nie zna FeedBurner'a?. Zestawu narzędzi ułatwiających nam, czy to udostępnianie użytkownikom możliwości subskrypcji treści naszej strony, czy po prostu możliwość przejrzenia lub zamieszczenia statystyk w naszym serwisie. Pomimo dostarczonego API nie znajdziemy jednak bezpośrednio w panelu FeedBurner'a kodu pozwalającego na umieszczenie samej liczby subskrybentów bloga. I rozwiązanie tego, pozornie błahego problemu postaram się Wam dziś przedstawić...
Stary, dobry FeedBurner.com...
Niespełna dwa lata temu słynny serwis zajmujący się obsługą kanałów RSS został przejęty za sto milionów dolarów przez Google. Pomimo tego, że minęło aż tyle czasu wielu blogerów nadal korzysta z zasobów starego, wysłużonego, pierwotnego FeedBurner'a. I co może wydawać się dziwne, to właśnie oni mają najbardziej ułatwioną sytuację.
Zarówno stara, jak i nowa odsłona serwisu oferują usługę FeedCount dostępną z poziomu menu Publicize. Pozwala ona na dobranie typu wbudowanego tła wyświetlającego ilość subskrybentów (statyczne, bądź animowane) oraz na dobranie jego barwy i koloru tekstu. Wraz z ustawieniem tych parametrów otrzymujemy kod HTML do wstawienia na naszą stronę. I tu rodzi się problem. Prócz kilku stylistycznych zmian wygląd tychże "chickletów" jest zawsze taki sam i najczęściej nijak pasuje do designu naszego bloga. Co zrobić jeżeli np. chcemy wraz z tekstem przycisku odnoszącego użytkowników do wygenerowanego kanału wstawić także ilość osób śledzących naszą stronę?
Rozwiązanie zaprezentuje na podstawie użytkowania platformy Wordpress (oczywiście ilość subskrybentów - opierając się na dalszym tekście - można zamieścić w każdym innym systemie zarządzania treścią, bądź nawet na własnej, prywatnej stronie). W takim wypadku wystarczy zainteresować się wtyczkami FeedSmith 2.3 (polska wersja) (wg. developerów Wordpress'a kompatybilną ze wszystkimi wersjami 2.x) i Feed Count 1.2 (polska wersja). Pierwsza z nich niezbędna jest do obsługi kanału RSS przez serwis FeedBurner.
Jej instalacja oraz rejestracja w serwisie jest niezbędna do działania drugiej z nich. Jak wykonuje się instalacje wtyczek? Wystarczy wyodrębnić z archiwum odpowiednie pliki (w naszym pierwszym przypadku będzie to FeedBurner_FeedSmith_Plugin.php, w drugim feedcount.php) i umieścić je w katalogu wp-content/plugins/ systemu Wordpress. Następnie wtyczki należy zaktywować w panelu administratora (Wtyczki / Nazwa wtyczki / Włącz).
Obydwa pluginy należy dodatkowo skonfigurować w zakładce Ustawienia. Pierwszy z nich swoje opcje ukrywa w podmenu FeedBurner. Zobaczycie tam dwa pola do uzupełnienia, jedno wymagane, drugie opcjonalne. Pierwsze z nich to pełny odnośnik do feedu strony w serwisie FeedBurner (i dla starej odsłony, i dla nowej na serwerach Google), a drugi to link do kanału RSS komentarzy.

Konfiguracja wtyczki FeedSmith w panelu.Co do drugiego rozszerzenia to działa ono dla wersji 2.x Wordpress'a, z tymże przy najnowszej 2.7x może sprawiać problemy natury zwracania wyniku w postaci N/A zamiast poprawnej wartości.

Konfiguracja wtyczki Feed Count w panelu.Rozszerzenie to także należy dodatkowo skonfigurować. Robimy to w panelu poprzez menu Ustawienia / Feed Count. W jej opcjach trzeba podać co najmniej adres kanału (Feed Url) w postaci nazwy kanału na FeedBurner'ze, częstość aktualizowania ilości subskrybentów (Update interval) oraz częstość aktualizacji po wystąpieniu błędu (Update interval (recovery)). Pozostałe pola nie są wymagane. Link url to adres odnośnika pojawiającego się na zwróconej przez skrypt ilości osób śledzących stronę. Before za to jest treścią pojawiającą się przed liczbą w.w. użytkowników, a After to treść po.
Po wykonaniu konfiguracji należy jeszcze w strukturze szablonu strony dodać odpowiedni kod.
Wstawić go musimy w miejscu w którym chcemy wyświetlać wystylizowaną liczbę użytkowników RSS (plugin ten nie zwraca tylko liczby otaczając ją poprzez dodatkowe tagi HTML). Oczywiście możemy go modyfikować. Jeżeli chcielibyście np. wyświetlić go w odnośniku (w header.php) o nazwie RSS w dodatkowych nawiasach to możecie to zrobić w następujący sposób:
No i ostatecznie musicie w panelu FeedBurner'a (nie wtyczki, a profilu w serwisie w którym zakładaliście konto) zezwolić wtyczce na działanie z API tegoż serwisu. Wystarczy wejść do zakładki Publicize, a następnie do menu Awareness API i zaktywować tą funkcjonalność.
Wtyczka Feed Count 1.2 dla Google FeedBurner!
Jeżeli zdecydowaliście się jednak na migracje z starych serwerów serwisu, na ultraszybkie i megafajne klastry Google, a wcześniej trafnie stosowaliście w.w. metodę do wyodrębniania liczby użytkowników to prawdopodobnie będzie ona także działać po przejściu na feedburner.google.com.
Trzeba jednak w takim wypadku dokonać pewnych, małych zmian w kodzie wyżej opisywanej wtyczki Feed Count. W tym celu edytujemy plik feedcount.php (np. poprzez Notepad++ lub ZendStudio). Przechodzimy w okolice 41 linii w celu odnalezienia następującego kodu.
'map_fc_queryurl' =>'http://api.feedburner.com/awareness/1.0/GetFeedData?uri=',Co można zauważyć element tablicy o nazwie przed
=>wskazuje na adres dostępowy do API, ale feedburner.com. A my przecież chcemy korzystać już z API Google. W tym celu należy tą linijkę zmienić niżej wymienionym kodem, po czym zapisać plik i ponownie wysłać go na serwer.'map_fc_queryurl' =>'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=',C... bombki strzelił! Jedyne co otrzymuje w wyniku to ten niewdzięczny "N/A"...
Po pierwsze musicie sprawdzić czy biblioteka cURL (Client URL Library Functions) jest dostępna w konfiguracjach Waszych serwerów (jako pakiet PHP). W tym celu wystarczy stworzyć jakikolwiek plik o rozszerzeniu .php, wypełnić go poniższym kodem i wywołać na hipotetycznie problematycznym serwerze.
W wylistowanych wynikach wystarczy poszukać wpisu cURL support i sprawdzić, czy jego flaga ustawiona jest na enabled. Jeżeli nie, to właśnie znaleźliście przyczynę problemu. Powyższa, kluczowa dla nas wtyczka oparta jest na tym libie, a co za tym idzie jego brak powoduje niemożność poprawnego wykonania kodu tego rozszerzenia.
Diagnoza problemu: cURL...
Kiedy zawodzą dostępne już rozwiązania najlepszym sposobem na pozbycie się własnego problemu jest... napisanie indywidualnej solucji. Niestety to wiążę się najczęściej z jedną z dwóch rzeczy. Albo z posiadaniem konkretnej wiedzy odnośnie danego problemu, albo z wydatkiem związanym z opłaceniem osoby która rozwiąże Waszą dolegliwość.
Jeżeli dotarliście do tego punktu tzn. że nadal nie uzyskaliście pożądanego efektu. Pora więc właśnie na w.w. sposób, z tymże ja dla Was przygotuję go w stu procentach... za friko :] Mógłbym Wam zaprezentować kilkulinijkowy sposób, bo praktycznie do tego ogranicza się rozwiązanie - pytanie po co? Blog ten ma uczyć, dlatego postaram się Wam przedstawić dwie metody pobierania potrzebnych nam danych które po lekkim tuningu złożą się w jedną, w pełni funkcjonalną wtyczkę napisaną specjalnie na potrzeby tego artykułu. I w gruncie rzeczy będzie to najbardziej optymalne rozwiązanie ze wszystkich tutaj przedstawionych...
Przypadek numer jeden: brak możności użytkowania cURL'a. Jak to w życiu bywa, jak nie da wejść się jednym oknem, trzeba próbować drugim. Sposobów jest wiele, ja wybiorę użycie funkcji file_get_contents. Zaimplementowana jest ona w PHP od wersji 4.3 i dodatkowo do jej działania konfiguracja serwera musi zezwalać na zdalne (z zewnętrznych źródeł) pobieranie plików. Trik który zastosujemy ogranicza się kolejno do:
- pobrania danych z adresu FeedBurner'a korzystając z udostępnionego przez niego API,
- sprawdzenia czy odebrane dane są poprawne (pod kątem poprawności adresu i ewentualnych wyjątków),
- wyszukanie frazy
circulation="w posiadanym buforze. Kod który pobraliśmy wcześniej musi być w formacie XML, a co za tym idzie składa się on ze znaczników i parametrów. Właśnie parametrcirculationzawiera w sobie wartość będącą ilością subskrybentów, - jeżeli fraza nie zostanie znaleziona, zwrócenie błędu,
- w przeciwnym razie pobranie ciągu od pozycji wyszukiwanej wyżej frazy + 13 znaków (długość szukanego słowa), aż do znalezienia następnego cudzysłowia (bez niego).
<?php
$buffer = file_get_contents(ADRES_SERWER . NAZWA_KANALU); // pobranie pliku
if ( $buffer === false ) // zwrócenie błędu
{
print 'n/d';
}
$pre_position = strpos($buffer, 'circulation="'); // wyszukanie pozycji frazy z drugiego argumentu
if ( $pre_position === false ) // w wypadku nieodnalezienia zwrócenie błędu (niepoprawny plik)
{
print 'n/d';
}
else {
print substr($buffer, ($pre_position+13), strpos($buffer, '"', ($pre_position+14)) - ($pre_position+13)); // "wypisanie na ekran" zawartości parametru "circulation" z pobranego pliku XML
}
?>Kiedy problemem nie jest jednak cURL...
Plugin FeedCount nie zawsze działa na Wordpress'ie 2.7x. Nie pytajcie dlaczego. Szczerze? Nie wiem i nie chciało mi się dociekać co jest tego powodem. Postanowiłem jakiś czas temu spotykając się z tą przypadłością po prostu stworzyć bardziej uproszczony kod, niż ten z popularnej wtyczki. Jak wygląda jego schemat krokowy? Po kolei:
- inicjalizacja cURL,
- ustawienie opcji transferu biblioteki (zwracanie zawartości bez wypisywania jej na ekran oraz wprowadzenie adresu docelowego),
- wykonanie zadania, po czym zniszczenie sesji połączenia,
- sprawdzenie, czy nie występuje znacznik nadrzędny
errz parametremcodeo wartości 1 (oznaka zwrócenia błędu, najczęściej nieodnalezienia pliku), - jeżeli powyższy punkt nie okaże się prawdą to utworzenie obiektu
SimpleXMLElementi wyszukanie zawartości wyżej już wspomnianego atrybutucirculation.
<?php
$resource = curl_init(); // inicjalizacja
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); // bez wypisania na ekran
curl_setopt($resource, CURLOPT_URL, ADRES_SERWER . NAZWA_KANALU); // przekazanie adresu do pobrania
$buffer = curl_exec($resource); // wykonanie
curl_close($resource); // zamknięcie sesji
$xml = new SimpleXMLElement($buffer); // obiekt analizy składni XML
if ( $xml->err['code'] == '1' ) // sprawdzenie wystąpienia błędu
{
print 'n/d';
}
print $xml->feed->entry['circulation']; // pobranie ilości subskrybentów
?>Aby bardziej wyjaśnić działanie powyższej partii kodu posłużę się przykładowymi danymi, jakie mogą zostać pobrane.
<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="0ua2berteje16lsipgq0b8uk74" uri="worldclub-pl">
<entry date="2009-02-13" circulation="1" hits="2" downloads="0" reach="0" />
</feed>
</rsp>Można z niego wywnioskować, że odpowiednio operując na klasie
SimpleXMLElementmoglibyśmy uzyskać identyfikator konta, jego część adresu zwaną w tym artykule po prostu nazwą, datę utworzenia, ilość osób śledzących RSS'a, liczbę kliknięć oraz ściągnięć. Działanie powyższej klasy jest proste. Z kodu XML tworzymy obiekt po którym możemy przesuwać się za pomocą zwyczajnych selektorów. Przykładowo jeżeli chcielibyśmy wyłuskać z powyższego przykładu identyfikator (id) zrobilibyśmy to w następujący sposób:Pierwszy, główny element
rspjest pomijany w instancji obiektu.
Zasada działania SimpleXMLElement na podstawie kodu pobierania liczby subskrybentów.Autorska wtyczka finalnym rozwiązaniem naszego problemu!
I tak oto dochodząc do meritum przedstawiam Wam rozszerzenie uproszczone, ale za to wzbogacone o trzy, moim zdaniem niezbędne funkcjonalności. Easy Feed Counter posiada możliwość łatwej instalacji i konfiguracji poprzez panel administratora. Proces wdrażania tego pluginu jest adekwatny do dodawania opisywanego wcześniej FeedCount (jest także dokładnie opisany w linku powyżej w repozytorium modyfikacji). Pozwala on na ustawienie serwera feedów, metody pobierania statystyk oraz wpisanie nazwy konta kanału RSS na FeedBurner'ze. Opcjonalnie możecie także dodać konto komentarzy na tym serwisie, o ile takowe posiadacie.

Rezultaty działania wtyczki.Rozwiązanie to ma także jeden wielki, dodatkowy atut. Nie formatuje jak inne pluginy zwracanej treści, a ogranicza się do podania wartości (liczby użytkowników), bądź kodu błędu (n/d). To pozwala na szersze modyfikacje położenia bądź wyglądu wyników po wywołaniu funkcji
easyfeedcounter_get([opcjonalny: parametr])bez dodatkowej ingerencji w sam kod rozszerzenia.<?php
if (function_exists('easyfeedcounter_get'))
{
$subscribers = easyfeedcounter_get(1); // argument o wartości 1 wskazuje wtyczce, że ma zwrócić dane dotyczące komentarzy
if ( is_numeric($subscribers) !== false ) // brak błędów
{
print $subscribers . ' osób subskrybuje aktualnie Twoje komentarze!';
}
}
?>Bardziej skrupulatne objaśnienie, opisane krok po kroku znajdziecie w moim repozytorium. W przypadku wątpliwości dotyczących tematu, bądź instalacji tego tworu proszę śmiało pytać :]
copyright © 2008-2009, m1chu
udostępnione na licencji CC dla vivee.info i m1chu.eu
-
Leave a Reply
Komentarze
Kategorie
Top 10
JereManU: 20 darmowych skór do Wordpressa cz.2
Igor: Zapraszamy na forum graficzne Graffika.pl
Maciek Bielski: O wyświetlaniu podstron w Wordpress
mateuzs: Silverstripe
agressiva: Zapraszamy na forum graficzne Graffika.pl
Flacktub: Zapraszamy na forum graficzne Graffika.pl
kamil: Kurs Flash cz.1 – podstawy
Astro: qTranslate – Wielojęzyczny wordpress
feniks: Portfolio graficzne oparte o Wordpress przy użyciu Custom Fields
matiz: Menu akordeonowe z odrobiną CSS3
- CMSy Artykuły dotyczące różnego rodzaju systemów zarządzania treścią CMS.
- Flash Podstawowe informacje pomocne przy tworzeniu animacji w Adobe Flash.
- Fotografia Samouczki dotyczące nie tylko robienia zdjęć ale też ich cyfrowej obróbki.
- Grafika Ogólnie pojęta grafika komputerowa, od inspiracji, po tworzenie layoutów oraz mniejszych form graficznych.
- Inne tutoriale wordpressowe Wszystkie inne zagadnienia dotyczące WordPressa.
- Inspiracje Inspirujące materiały graficzne z dziedziny projektowania stron www, projektów DTP, digital painting, itp.
- Obróbka zdjęć Techniki retuszu fotografii cyfrowych.
- Rysunek Tworzenie rysowanych ilustracji w Adobe Photoshop.
- Skóry do Wordpressa Darmowe oraz płatne – najlepsze skóry do WordPressa.
- Skrypty client-side
- Skrypty server-side
- Tutoriale
- Webdesign Tutoriale z zakresu projektowania stron www i grafiki użytkowej na rzecz internetu.
- Wordpress Ulubieniec naszej publiczności CMS WordPress: nowości, tricki, wtyczki, skóry i wszystko to co może przydać się przy korzystaniu z tego systemu.
- Wtyczki do Wordpressa Recenzje oraz instrukcje najbardziej popularnych i najbardziej niezbędnych pluginów do WordPressa.
- XHTML/CSS Ciekawostki z dziedziny kodowania stron www: XHTML, CSS, jQuery.
- Efekt graficznego podświetlenia w jQuery i Prototype z Scriptaculous
- Google Maps API - pierwsze starcie
- WP-Polls, czyli ankiety na stronie wordpressowej
- Illustrator - podstawy cz.1
- Wordpress Shortcode API
- Jak wyizolować liczbę subskrybentów RSS korzystając z FeedBurner'a?
- Zrozumieć Fotografię cz.1
- Inspirujące strony www - styczeń 2009
- Pierwsza polska strona o ExpressionEngine
Najnowsze newsy
Zapraszamy na forum graficzne Graffika.pl
Każda osoba interesująca się grafiką komputerową ma czasami ochotę porozmawiać o swoich pracach, posłuchać rad, krytyki i pochwał innych osób. Idealnym miejscem na realizowanie takich potrzeb jest forum graficzne Graffika.pl.
Czytaj dalej
Przypominamy o Konkursie Noworocznym
Wraz z nowym, 2010 rokiem ogłosiliśmy konkurs na tutorial o tematyce CMS-owej.
Mamy nadzieję, że jakieś prace zostaną nadesłane do końca terminu i znajdzie się zwycięzca w pierwszym naszym oficjalnym konkursie z nagrodami.
Zachęcamy wszystkich do spróbowania swoich sił.
Szczegóły dostępne są pod tym adresem: http://vivee.info/2010/01/01/konkurs-noworoczny/
Zareklamuj nas :)
Jako, że pojawiła się na vivee.info nowa skóra przygotowałam nasze firmowe banerki reklamowe. Osoby, które wyrażą chęć wsparcia nas reklamą u siebie na blogach lub innych serwisach mogą pobrać je poniżej. Czytaj dalej
Polecane strony
- WordPress Theme from Scratch – Day 1: PSD
- 20 Tutorials For Creating HDR Images
- Ask the Expert – Using Wordpress to Build Large Scale Websites with Derek Herman
- Making an Interactive Picture with jQuery
- Create a Horizontal Scrolling Website
- 800 Most Wanted Free RSS Icons for Bloggers
- 45 Most Wanted Beautiful Free Hand Drawn Fonts
- Caffe-Break Themed Blog Layout Photoshop Tutorial
- Create a nature inspired layout in photoshop
- Coding a Web Design for Speed and Quality
- Beautiful Hand Drawn Websites | Abduzeedo | Graphic Design Inspiration and Photoshop Tutorials
- 40 Fresh Creative and Inspiring Photographs
- Wordpress portfolio layout | Grafpedia
- Simple Facial Photo Retouching | Grafpedia
- Create a beauty layout in 10 steps | Grafpedia






















