Jak zapytać facebook’a o liczbę „lubię to” dla konkretnego adresu?

Sprawa jest dość prosta. Należy skorzystać z Facebook API

Kod w php:

function iworks_get_fb_likes( $url )
{
    $query = sprintf( "select total_count from link_stat where url='%s'", $url );
    $call = "https://api.facebook.com/method/fql.query?query=" . rawurlencode($query) . "&format=json";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $call);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    $fb = json_decode($output);
    if ( is_array( $fb ) ) {
        $fb = reset( $fb );
        if ( isset( $fb->total_count ) ) {
            return $fb->total_count;
        }
    }
    return 0;
}

pobierz plik: iworks-get-facebook-like.php

Wyświetl drugi poziom nawigacji

Na blipie padło pytanie:

klisiu: #wordpress jakiś sprytny sposób na wyświetlenie 2. poziomu nawigacji dopiero kiedy będę odwiedzać stronę będącą rodzicem? | http://blip.pl/s/339039339

Oto odpowiedź:

<?php
if (is_page()) {
    $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
    if ($children) { ?>
        <ul><?php echo $children; ?></ul><?php
    }
}
?>

WordPress: usuń zbędne kopie wpisów

Jeżeli posiadasz w WordPressie dużo artykułów (niech będzie, że więcej niż 5000) i na dodatek często w trakcie pisania używasz klawisza „Zapisz szkic” żeby powrócić do tworzenia artykułu po pewnym czasie lub też, już po opublikowaniu, dokonujesz w nim wielu zmian, to musisz liczyć się z tym, że baza używana przez wordpressa spuchnie o poprzednie wersje wpisów.

Czytaj dalej WordPress: usuń zbędne kopie wpisów

sesje PHP w memcache’u

Pewien dość mocno obciążony serwer www (apache2) strasznie dużo zapisywał w katalogu sesji PHP. Na tyle dużo, że zaczeło to być problemem, jeszcze nie krytycznym, ale już zauważalnym.

Jednym z możliwych rozwiązań jest przeniesienie sesji do bazy danych, ale ze względu na specyfikę danych sesyjnych nie jest to szczególnie dobre rozwiązanie przy tej wielkości serwisu, a dodatkowo serwis korzysta z postgresa, więc wrzucanie w niego sesji jest jeszcze mniej polecane.

Rozwiązaniem zastosowanym, a które szczerze polecam jest memcache.

Instalacja jest banalnie prosta. Najpierw odpowiednie moduły na serwerze: (dla debianowaych):

sudo apt-get install memcached php5-memcache

Sprawdzamy czy serwer memcache wstał

netstat -ntlp | grep mem

oraz czy w używany php jest załadowany moduł memcache.

W konfiguracji php należy zmienić sposób przechowywania sesji oraz ustawić dane dostępowe do memchache’a:

;session.save_handler = files
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

Teoretycznie powinno zadziałać.

Niestety u mnie wystąpił następujący błąd:

Fatal error: session_start() [function.session-start]: Failed to initialize storage module: memcache (path: [...]/session) in /var/virtuals/[...].php on line 41

Który związany był z ustawianiem przez plik konfiguracyjny serwisu następującej wartości

ini_set("session.save_path",SESSION);

i dopiero po jej usunięciu wszystko zaczęło śmigać tak jak powinno.

Radlens Restaurant

Praca obejmowała stworzenie szablonu wordpressa na podstawie dostarczonego html’a z pewnymi, dość kluczowymi zmianami. W szablonie wykorzystano jQuery Nivo Slider służący do rotowania obrazków. Jego konfiguracja  znalazła się w opcjach tematu. Zainstalowano kilka różnych dodatków podnoszących funkcjonalność związaną z SEO, monitoringiem zużycia zasobów. W efekcie powstała dwukolumnowa skórka, obsługująca widgety.

adres
radlensrestaurant.com
w sieci
maj 2010
oprogramowanie
WordPress
cel
utworzenie skórki do wordpressa
zakres prac
wytworzenia skórki do worpdress, zmiany w grafice
technologie
php, xhtml, jquery
producent
Web Design Cork

Royaliści India

Serwis opisujący wyprawę z Indii do Polski powstał w grudniu 2009. Sama wyprawa rozpoczęła się miesiąc temu. Pierwszy szablon strony został wytworzony własnymi, amatorskimi siłami. Ten który znajduje się tutaj, został przygotowany przez profesjonalnego grafika, a moim zadaniem było wytworzenie z dostarczonych plików skórkę. Wytworzony dwukolumnowy szablon posiada 5 wyglądów dla stron specjalnych oraz obsługuje widgety. Na tronie głównej do wyświetlania zdjęć użyto wtyczki NextGen do której została dopisana funkcja wyciągając zdjęcia w sposób losowy. Do wyświetlania większość elementów graficznych użyłem techniki css sprites.

adres:
royalisci.pl
w sieci
maj 2010
oprogramowanie
WordPress
cel
utworzenie skórki do wordpressa
zakres prac
pocięcie grafiki, wytworzenia szablonu do worpdressa
technologie
php, xhtml, jquer, css sprites
projekt graficzny
Mr. Brown

Black Radio Collection WordPress Theme

Praca obejmowała stworzenie szablonu wordpressa na podstawie dostarczonego pliku graficznego. Szablon został wzbogacony o własne ustawienia umożliwiające konfiguracje kilku dodatkowych pól: banerów, dodatkowego opisu serwisu, konfiguracje odnośników do facebook’a i myspace’a. W szablonie wykorzystano jQuery Nivo Slider służący do rotowania obrazków. Jego konfiguracja również znalazła się w opcjach tematu. Do obsługi prostych zakupów użyto w serwisie wtyczki WP Simple Paypal Shopping cart, której wygląd został dostosowany do wyglądu całego serwisu. W efekcie powstała dwukolumnowa skórka, obsługująca widgety.

adres
www.blackradiocollection.com/brc
w sieci
maj 2010
oprogramowanie
wordpress
cel
utworzenie skórki do wordpressa
zakres prac
pocięcie grafiki, wytworzenia skórki do worpdressa
technologie
php, xhtml, jquery
projekt graficzny
Malwina Diarra

Call to undefined method stdClass

Przesiadłem się z laptopa na komp stacjonarny. Poszedł standardowy svn update plus konfiguracja virtuala. Potem restart apache’a i do pracy. Niestety nie do końca, bo przywitał mnie następujący komunikat:

Fatal error: Call to undefined method stdClass::IsConnected() in /home/illi/***/trunk/etc/init.inc.php on line 42

WTF!?

Dla porządku: php + postgresql, połączenie do bazy przez adodb_light.

Przyczyna błędu? Brak bazy :D Co mało ciekawe taki błąd występuje w wielu rodzajach softu i nie do końca wyniki z googla były pomocne, ba … wcale nie były. Tak to jest jak obiekt jakiejś klasy jest inicjalizowany przez funkcję spoza klasy, która sama w sobie nie ma obsługi poprawności inicjalizowanego obiektu.

mod_perl – „zabawne”

Jest sobie klient. Klient dostaje od swojej nadrzędnej jednostki miejsce na serwerze. Do tej pory cool.

Dostałem więc namiary na konto, ftp’a, mysql’a.

Środowisko lokalne ustawione, aplikacja webox wygenerowana, szablon wstukany, więc wgrywam na serwer. Pierwsze pozytywne wrażenie: włączony mod_rewrite oraz allowOverride ustawione na all. Cudnie, bo do niedawna i to trzeba było się kopać.

Potem było już tylko gorzej. Nie ma mod_perla, więc napisałem poprzez system ticketowy prośbę o jego włączenie, a oto otrzymana odpowiedź:

ze względów bezpieczeństwa oraz wydajności serwera nie mamy w ogóle uruchomionego mod_perl. Na razie jest Pan jedyną osobą, która zgłosiła potrzebę użycia Perla, więc nie możemy tego uruchomić, ponieważ pożytek z mod_perl dla Pana będzie mniejszy niż szkoda dla wszystkich pozostałych użytkowników serwera.

Przyznam się, że strach mnie ogrania jak widzę taki poziom niewiedzy u kogoś kto teoretycznie zarządza serwerem.

Ale w myśl zasady o kopaniu, dostałem jeszcze propozycję nie do odrzucenia:

Zgaduję, że nie jest Pan zadowolony z wgranego domyslnie SkyblueCanvas. Polecam Quick.CMS – jest on prostszy od Skyblue i również nie wymaga bazy danych. Jeżeli potrzebuje Pan czegoś o wiekszych możliwościach to polecam Joomlę. Najwięcej możliwości oferuje chyba Drupal, ale zrobienie strony w nim jest bardzo pracochłonne.
Generalnie, może Pan użyć czegokolwiek, co jest napisane w PHP.

Prawda, że miłe? Prosisz o perla, a sugerują ci php’a.