Generator mapy strony

Ostatnio potrzebowałem zrobić dla jednej strony skrypt, który będzie automatycznie generował mapę strony (sitemap.xml). Poszukałem trochę w internecie i znalazłem bardzo fajną klasę Pawła Antczaka. Opis tej klasy można znaleźć na tej stronie. Klasa ta nie ma jednak możliwości przeszukiwania całej strony w poszukiwaniu linków do wszystkich podstron. Można dzięki niej przygotować plik sitemap.xml ale linki do stron trzeba już posiadać (np. w bazie danych).

Ja niestety potrzebowałem czegoś co będzie automatycznie sprawdzać linki do wszystkich podstron i na tej podstawie budować mapę strony. Rozbudowałem więc klasę SitemapGenerator o kilka dodatkowych metod. Moją rozbudowaną klasę można pobrać ze tej strony. Użycie jej jest tak samo łatwe jak użycie klasy Pana Pawła. Poniżej prosty przykład:

include 'ExtendedSitemapGenerator.class.php';
$sitemap = new ExtendedSitemapGenerator("http://allekosmetyki.pl/");

Ustalamy listę wyrażeń które jeżeli pojawią się w linku strony, nie będą dodawane do mapy:

$sitemap->setExcludedLinksTypes(array('#'));

Ustalamy priorytety oraz częstotliwość zmian dla danych typów stron (zawierających odpowiednie wyrażenia):

$sitemap->setPriorities(array('strona'=>0.8, 'kategoria'=>0.8,'wyswietl'=>0.6));
$sitemap->setChangeFreqs(array('strona'=>'monthly'));

Teraz wywoływana jest metoda, która sprawdza całą stronę i dodaje linki do wszystkich podstron do mapy:

$sitemap->createUrlsList();

I na koniec trzeba jeszcze przygotować i zapisać dokumenty .html oraz .xml w odpowiednich plikach:

$sitemap->createSitemap();
$sitemap->createHtmlSitemap();
$sitemap->writeSitemap();
$sitemap->writeHtmlSitemap();

Jak widać użycie klasy jest dość łatwe. Można ten skrypt wywołać również z linii poleceń. Trzeba liczyć się z tym, że przy większej stronie może on działać dość długo. Na stronie do której ja potrzebowałem ten skrypt (allekosmetyki.pl) działa on za każdym razem kilka minut. Wynik działanie tego skryptu na tej stronie można zobaczyć tutaj.

Mam nadzieję, że może komuś przyda się taka prosta klasa :)

Generowanie miniatur stron internetowych

Dawno nic nie pisałem więc postanowiłem coś nowego wreszcie zamieścić na tej stronie. Ostatnio natknąłem się w sieci na fajną stronę pozwalającą tworzyć miniatury stron internetowych – webthumbnail.org. Udostępnione tam jest bardzo proste API do tworzenia miniaturek. W zapytaniu przekazujemy metodą GET wielkość zrzutu strony, format, przeglądarkę oraz adres strony i to wszystko. Po chwili czekania na wygenerowanie miniatury mamy dostępną grafikę z żądaną stroną.

Postanowiłem napisać do tego niewielką klasę w PHP. Umożliwia ona na pobranie zrzuty strony. Sprawdzane jest tu czy zrzut został już pobrany czy nadal jest w kolejce. Użycie klasy jest bardzo proste i sprowadza się do kilku linijek kodu:

include 'thumbgenerator.class.php';
$generator = new thumbgenerator();
//set params of thumbnail:
$generator->setWidth(100);
$generator->setHeight(150);
$generator->setBrowser("firefox");
$generator->setFormat("jpg");
$generator->setUrl("google.pl");
//set timeout between two checks of thumbnail (if it is still in queue):
$generator->setCheckTimeout(5);
//get thumbnail url:
$u = $generator->getThumb();
echo '<img src="'.$u.'" alt="" />';
//or save thumbnail on local disk:
$generator->saveThumb();

Jak widać klasa użycie tej klasy jest równie proste jak samo API do generowania miniaturek. Należy po prostu ustawić podstawowe parametry pobieraniego zrzutu strony, ustawić czas pomiędzy dwoma kolejnymi sprawdzeniami czy ministura została już wygenerowana (metoda setCheckTimeout()) i pobrać url miniaturki lub zapisać ją na lokalnym dysku.

Klasa wymaga dostępnej biblioteki curl oraz dostępu do katalogu temp i katalogu do zapisu miniatur. Katalogi te można ustawić samodzielnie metodami:

setTempPath($path) oraz
setDestPath($path)

Klasę można pobrać tutaj – download

Mam nadzieję, że komuś może się ona przydać. Oczywiście wszelkie uwagi w komentarzach są mile widziane :)

Skrypt „naprawiający” WordPress’a

Napisałem niewielki skrypt, który po wgraniu do katalogu głównego z instalacją Waszego WordPress’a pozwoli na łatwą zmianę hasła do panelu administracyjnego oraz na łatwą zmianę adresu URL bloga w bazie danych WordPress’a.

Wiem, że w sieci jest wiele opisów jak wykonać tego typu zmiany. Sam w przypadku zmiany adresu url korzystałem z tej instrukcji. Jednak skrypt, który napisałem pozwala zmienić te ustawienia za pomocą kilku kliknięć bez znajomości obsługi bazy danych. Nie jest nawet wymagany bezpoiśredni dostęp do bazy danych.

Mam nadzieję, że skrypt się komuś przyda :) Oczywiście jeżeli znajdziesz jakiś błąd w działaniu skryptu lub uważasz, że mogła by znaleźć się w nim jeszcze jakaś funkcja – daj mi znać. Postaram się poprawić błędy i dodać takie funkcje do skryptu.

Skrypt dostępny do pobrania tu: download

Instruckja obsługi jest bardzo prosta:

  1. Pobrać archiwum zip, które znajduje się pod adresem: kaplonski.pl/files/repairer.zip
  2. Rozpakować archiwum i wgrać pliki class.repeater.php oraz repeater.php do katalogu głównego z WordPress’em – tam gdzie znajduje się plik wp-config.php
  3. Uruchomić skrypt w przeglądarce wchodząc na stronę http://adres_twojej_strony/repeater.php
  4. Podać nowe hasło dla jakiegoś użytkownika lub nowy adres url.

UWAGA!!! Po zmianie hasła czy adresu url, jak skrypt nie jest już potrzebny proszę KONIECZNIE usunąć go z katalogu strony. Umożliwia on dostęp do bazy danych strony niepowołanym osobom więc pozostawienie go na serwerze może być niebezpieczne.

Plugin „licznik odwiedziń”

Dzisiaj opublikowałem w katalogu WordPress’a swój pierwszy plugin :) Jest to prosta wtyczka umożliwiająca wyświetlenie ilość osób aktualnie znajdujących się na stronie i ilość osób, które stronę odwiedziły. Można go znaleźć na tej stronie. Mam nadzieję, że komuś przyda się on na stronie. Na mojej stronie w stopce można zobaczyć „efekty” jego działania.

Zasada działania pluginu jest bardzo prosta:

W bazie danych przechowywane są dane: IP użytkownika – czas wejścia na stronę
Po wejściu na stronę skrypt wykonuje kilka prostych operacji:

  1. Sprawdza czy użytkownik z danego adresu IP jest już na stronie (jest wpis z jego adresem IP w bazie). Jeżeli tak, to aktualizuje czas wejścia na stronę na aktualny Jeżeli nie – dodaje nowy wpis (adres IP i bieżący czas) do bazy.
  2. Jeżeli użytkownik jest nowy na stronie, tzn. nie było jego wpisu w bazie i trzeba było dodać nowy to zwiększany jest również ogólny licznik odwiedzin strony.
  3. Z bazy kasowane są wszystkie wpisy których czas wejścia na stronę jest mniejszy niż ‘bieżący czas – ustalony limit (np. 120s.)’ – czyli w skrócie usuwane są wpisy użytkowników, którzy już od dawna nie odświeżyli strony i zakładamy, że już na stronie „nie są”.
  4. Pobiera z bazy liczbę wpisów (para adres IP – czas wejścia na stronę) jakie zostały w bazie. Jest to liczba osób online na stronie.

I to w skrócie cały opis działania tego prostego pluginu. Zrobiłem go ponieważ potrzebowałem takiej wtyczki na stronie jednej z moich klientek. Zdaję sobie sprawę, że może ona być niezbyt dokładna, ale w sytuacji gdy chcemy na stronie wyświetlić orientacyjną ilość osób online to powinna wystarczyć.

Jeżeli macie jakieś uwagi do działania tej wtyczki lub moje założenia są złe – proszę o uwagi w komentarzach. Chętnie poprawię co będzie konieczne.

Witam serdecznie

Witam serdecznie na mojej prywatnej stronie. Strona ta jest w pewnym sensie moim poligonem doświadczalnym i notatnikiem. Będę tu zamieszczał ciekawe poradniki i instrukcje how-to jakie znajdę w sieci. Raczej nie jestem osobą, która pisze tego rodzaju poradniki samodzielnie więc raczej niczego autorskiego tu nie znajdziecie (ale kto wie – może kiedyś?).