Fanpejdż Marsjany, lajki, oraz jak pogodziłem Facebook Likes i obrazki we wpisach
Internet, No name Dodaj komentarzNo cóż, korzystając z okazji, że tu już piszę, chciałbym się pochwalić zajęciem przez moją drużynę pierwszego miejsca na szczeblu wojewódzkim w DialNet Masters. W środę wyjeżdżamy na półfinały. Możecie trzymać za nas kciuki anonimowo, lub też zarejestrować się jako kibic.

Screen Fanpage’a, na którym jest screen z Marsjany. Nawet w dwóch kopiach. Prawie jak Skomplikowany System Luster.
A teraz do meritum — Marsjana.net1 dorobiła się własnego fanpage na Facebooku.
Zapraszam więc do lubienia bezpośrednio tutaj, w stopce strony, bądź też na samym Fb. Na razie podpiąłem tam tylko kanał RSS, ale możecie być pewni, że prędzej czy później zaczną się tam pojawiać ekskluzywne materiały niedostępne nigdzie indziej2. Dodałem też możliwość Lajkowania3, z której to jestem najbardziej dumny. Ponieważ posiedziałem nad tym trochę i u mnie kliknięcie tego przycisku nie wrzuca po prostu suchego odnośnika4, ani też odnośnika z losowym obrazkiem, którym może okazać się wlepka z sidebara5. U mnie ten guzik wrzuca pierwszy obrazek, który znajdzie się w treści wpisu (a nie gdziekolwiek na stronie), a w przypadku braku obrazków do Facebooka przekazywany jest screen strony (taki sam, jak ten ustawiony jako obrazek fanpage). Trochę się nad tym nasiedziałem, więc pokazuję, jak taki efekt uzyskać prosto w każdym blogu opartym o WordPressa.
Uwaga — będzie technicznie. Jeśli nie interesuje Cię grzebanie w plikach PHP nawet na poziomie kopiuj-wklej w odpowiednie miejsce, nie czytaj dalej. Chyba, że bardzo chcesz.
Więc po pierwsze, musisz w ogóle mieć lajkbatony na swoim blogu. Najprościej dostać je instalując jakąś wtyczkę, albo samodzielnie generując odpowiedni kod na odpowiedniej stronie Fb. Ja, kiedy tylko jest taka możliwość, wolę zrobić coś samemu i dobrze, a nie ufać jakiejś wtyczce, więc oczywiście wybrałem drugą możliwość.

Krok pierwszy — generowanie kodu
Sam formularz jest po angielsku, ale to chyba nie problem — wszystko jest zrozumiałe nawet dla laika, a użytkownik i tak zobaczy wersję zależną od ustawień językowych swojego profilu na Fb… Ale może po kolei:
- URL to Like — na razie wpisujemy w to pole cokolwiek, byleby było łatwo je później odnaleźć w kodzie. W końcu adres będzie generowany dynamicznie, w zależności od wpisu.
- Layout Style — kwestia gustu oraz szablonu. Ja zostawiłem standard, ale jestem w stanie sobie wyobrazić parę sytuacji, w których lepsze będą inne opcje. Wybierając je z listy, generujemy podgląd po prawej.
- Show Faces — no jasne! Przynajmniej dla mnie. W końcu użytkownikowi łatwiej będzie “polubić” link, który “lubi” już tylu jego znajomych…

- Width — no, szerokość. Zależnie od szablonu. Domyślna powinna pasować na większość stron, ja u siebie ją minimalnie zwiększyłem.
- Verb to display — jak kto woli. Do wyboru “Lubię to!” i bodajże “Polecam”. Wybrałem to pierwsze — wiadomo, kultowe…
- Font — można zostawić domyślne, lub dopasować do innych czcionek użytych na blogu.
- Color Scheme — proste, jeśli ktoś ma ciemny szablon, wybiera taki, a jeśli jasny, to taki.
No i w końcu — klikamy Get Code i podziwiamy efekt.
Nas interesuje oczywiście pierwszy kod. Kopiujemy go i wklejamy w wybranym miejscu w szablonie (Wygląd -> Edytor -> Pojedynczy wpis). Teraz trzeba coś zrobić z adresem — nic prostszego. Odszukujemy naszą frazę (w moim przypadku adreswpisu), oraz zamieniamy ją na <?php echo get_permalink(); ?>. Otrzymujemy więc coś na kształt tego:
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo get_permalink(); ?>&layout=standard&show_faces=true&width=485&action=like&font=trebuchet+ms&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:485px; height:80px;" allowTransparency="true"></iframe>
I… w zasadzie na tym moglibyśmy to zakończyć, ale właściwa zabawa dopiero się rozpoczyna.
Podsuwanie Facebookowi obrazków
Jak już pisałem, chciałem, żeby w przypadku, gdy dana strona zawiera obrazki, jako ten do Like’a był podsuwany pierwszy z nich, a w przypadku jego braku, jeden główny, wybrany przeze mnie (w tym przypadku screen). Do tego trzeba… przewinąć trochę w dół.
Niżej na tej stronie znajdują się dodatkowe wskazówki dla bardziej ambitnych, na które niestety chyba większość nawet nie zagląda. Mają przycisk i są szczęśliwi.
Nawet giganci zaliczają w związku z tym wpadki — SpidersWeb swego czasu zrobiło aferę na pół internetu, że Fb cenzoruje lajki, a potem okazało się to ich (SW) pomyłką. A o co chodzi? Oczywiście o znaczniki OpenGraph, które mówią Fejsbukowi, jak ma rozumieć treść na tej stronie. Takie Web 3.0 trochę. Właśnie te znaczniki trzeba wykorzystać, żeby przy wpisie była (odpowiednia) miniaturka.
A więc co trzeba zrobić? Najpierw trzeba jakoś ustalić, który obrazek we wpisie jest pierwszy (oraz czy w ogóle jakiś jest), oraz dobrać się do jego adresu URL. Ja zgodnie z poradą ze strony Dobeweb wstawiłem odpowiedni kod do pliku functions.php mojego szablonu (znowu kłania się edytor). Oczywiście w linii $first_img = "/images/default.jpg"; wstawiamy adres własnego obrazka, który będzie wysyłany w przypadku braku jakiegokolwiek w treści wpisu, najlepiej w formacie bezwzględnym6. Jeśli w takim wypadku chcemy, by lajki wysyłane były bez jakiegokolwiek obrazka, w ogóle kasujemy tę linijkę.
Teraz można już przystąpić do właściwego wstawiania tagów. Chcemy, żeby w przypadku wpisu, przy lajkach pojawiał się obrazek z jego treści, a w przypadku strony głównej i innych, ten wybrany przez nas wcześniej. Również inne tagi różnią się w zależności od miejsca, w którym aktualnie znajduje się użytkownik, nasz kod musi więc to uwzględniać. Najprostrzym rozwiązaniem wydaje się być funkcja is_singular(), która zwraca Prawdę w przypadku strony statycznej bądź wpisu. Gotowy kod prezentuje się następująco:
<meta property="og:site_name" content="Nazwa bloga"/>
<meta property="fb:admins" content="Fb ID"/>
<meta property="og:image" content="<?php echo catch_that_image() ?>"/>
<meta property="og:url" content="<?php echo site_url().$_SERVER['REQUEST_URI']; ?>"/>
<?php if(is_singular()) { ?>
<meta property="og:type" content="article"/>
<meta property="og:title" content="<?php single_post_title(); ?>"/>
<?php } else { ?>
<meta property="og:type" content="blog"/>
<meta property="og:title" content="Nazwa bloga"/>
<?php } ?>
Uwagę należy zwrócić na linijki:
<meta property="og:site_name" content="Nazwa bloga"/>— tutaj oczywiście wstawiamy nazwę naszego blogaska<meta property="fb:admins" content="Fb ID"/>— Facebook ID. Znajdziemy je wygenerowane tutaj.<meta property="og:title" content="Nazwa bloga"/>— jak wyżej, nazwa naszego bloga.
Pozostałe parametry są zwracane bezpośrednio przez skrypt, więc nie trzeba się nimi przejmować.
To wszystko razem sprawi, że lajki z naszej strony będą wyglądać zawsze tak, jak tego po nich oczekujemy, a nie tak, jak Fb akurat wylosuje, oraz co sam wyczyta.
Mam nadzieję, że pomogłem. Jakby co — komentarze są Wasze. Lajkbutony — również.
- W końcu! ↩
- Czytaj: materiały, których nie będzie mi się chciało wstawiać nigdzie indziej, jakieś krótkie uzupełnienia wpisów, albo po prostu materiały zbyt słabej jakości, żeby je wstawić na Marsjanę.
↩ - Tak, zgadliście, to ten guzik “Lubie to!” pod wpisem.
↩ - Jak na sporej ilości blogów ↩
- Jak na jeszcze większej ilości blogów, w tym u mnie przez pierwszą godzinę ↩
- Jak nietrudno się domyślić, to właśnie tutaj podałem adres screena bloga. ↩






Dziękuję
Nie ma sprawy.
[…] końcu trafiłem na wpis, który rozwiał wszelkie moje wątpliwości w tym zakresie. Mam na myśli Fanpejdż Marsjany, lajki, oraz jak pogodziłem Facebook Likes i obrazki we wpisach autorstwa człowieka znanego w internecie jako […]
Pojawiły się dwa pytania w trakcie dłubania w kodzie:
1. “Najpierw trzeba jakoś ustalić, który obrazek we wpisie jest pierwszy (…)” jak tego dokonać? W moim szablonie na stronie głównej pojawia się ikona tematu, którą ustawiam sobie w edytorze postów w miejscu “Własne pola” i nazywa się to ‘Image’ gdzie podaje adres do miniaturki.
2. “Teraz można już przystąpić do właściwego wstawiania tagów. (..)” Gdzie dokładnie wstawić ten kod? W pliku functions.php wykrzaczył mi całą stronę.
Faktycznie — poruszyłeś dwie ważne kwestie, które ja w swoim wpisie pominąłem.
Założyłem, że użytkownik nie będzie korzystał z custom-fields, ponieważ jest to technika mało popularna, oraz w tym momencie już przestarzała (ponieważ WP od wersji chyba 2.7 sam oferuje analogiczną, o wiele lepiej sprawdzającą się funkcjonalność). W takim wypadku musisz najpierw sprawdzić instrukcją warunkową, i funkcją isset, czy dla danego wpisu jest dane pole, a następnie wypisać je w odpowiednio miejscu. W najbliższym czasie postaram się uzupełnić wpis o odpowiednie kody.
Drugą kwestią jest miejsce wstawienia znaczników — powinien być to nagłówek
<head></head>, który w szablonie znajduje się w pliku header.php.Dzięki za odpowiedź jednak teraz czytając te zdanie “W takim wypadku musisz najpierw sprawdzić instrukcją warunkową, i funkcją isset” zupełnie się zniechęciłem bo jako nowicjusz nawet nie wiem o czym piszesz
Dodatkowo na fb podczas generowania kodu like button pojawiła się od niedawna opcja z guzikiem “Wyślij” Nie bardzo wiadomo czemu ona ma służyć
O właśnie. Jak podpiąć rss pod facebook i jak zrobić by zasysał z powiedzmy pierwszym obrazkiem z wpisu?
Podpiąć najlepiej jest aplikacją w stylu RSS Graffiti lub Networked Blogs (sam korzystam z tej pierwszej) — trzeba ją zarejestrować dla fanpage’a. A obrazki… jeśli chodzi o WP, to kod jest przedstawiony we wpisie. A jeśli Blogger… to pozostaje liczyć na to, że Fb sam się połapie, który obrazek jest najlepszy.
BTW: Właśnie się zorientowałem, że przecież obiecałem koledze wyżej dopisać szczegółowe instrukcje. Kurcze…