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ć z 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. Skrypt ten może zostać również wywołany z linii poleceń. Trzeba liczyć się z tym, że przy większej stronie może działać dość długo. Na stronie, do której ja go potrzebowałem (allekosmetyki.pl) działa za każdym razem kilka minut. Efekt jego pracy można zobaczyć tutaj.

Mam nadzieję, że może komuś przyda się taka klasa 🙂

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Korzystanie z Serwisu oznacza zgodę na wykorzystywanie plików cookie. Akceptuję