VgtFeedGenerator
Klasa ma na celu pomoc w generowaniu kanałów Atom i Rss. Dokumentacja zawiera komplet informacji na temat klasy, poniżej kilka przykładów jej użycia:
Jak zacząć
Na początek należy utworzyć obiekt klasy VgtFeedGenerator, jako parametr podając unikalny identyfikator, którym będzie oznaczony kanał, oraz zdefiniować tytuł, opis i autora kanału.
<?php
$oFeed = new VgtFeedGenerator('http://php.vgtworld.pl/atom/newsy/');
$oFeed->kanalTytul('VGT Newsy');
$oFeed->kanalAutor('VGT', 'tomek@vgtworld.pl', 'http://www.vgtworld.pl');
$oFeed->kanalOpis('Newsy od VGT');
?>
Tworzenie kolejnych wpisów
Następnie należy rozpocząć pętle, która bedzię tworzyć w obiekcie kolejne wpisy. Każdy nowy wpis należy rozpocząć metodą nowyWpis() w parametrze przekazujac unikalny identyfikator danego wpisu. Identyfikator ten nie może się zmieniać, gdyż na jego podstawie agregatory interpretują, które wpisy są nowe.
<?php
foreach ($aNewsy as $iIdNews => $aNews)
{
$oFeed->nowyWpis($iIdNews);
[...]
?>
Treść kolejnych wpisów
Kontunuując działania w pętli dla każdego wpisu można zdefiniować: tytuł (wpisTytul()), datę (wpisData()), krótkie streszczenie (wpisStreszczenie()), pełną treść (wpisTresc), autora (wpisAutor()), a także adres URL, do którego dany wpis prowadzi na stronie (wpisUrl()).
<?php
$oFeed->wpisTytul($aNews['tytul']);
$oFeed->wpisData($aNews['data']);
$oFeed->wpisStreszczenie($aNews['streszczenie'], 'xhtml');
$oFeed->wpisTresc($aNews['tresc'], 'xhtml');
$oFeed->wpisAutor('VGT', 'tomek@vgtworld.pl', 'http://www.vgtworld.pl');
$oFeed->wpisUrl('http://php.vgtworld.pl/html/news/'.$iIdNews);
?>
Generowanie XML'a
Po zakończeniu pętli tworzącej wpisy, należy wygenerować końcowy plik XML zawierający utworzony kanał RSS. Aby utworzyć kanał zgodny ze standardem Atom w tym samym pliku php, w którym był on tworzony, należy skorzystać z metody: atomGeneruj():
<?php
header('Content-Type: application/atom+xml; charset=UTF-8');
$oFeed->atomGeneruj();
?>
Można także zapisać go do innego pliku i generować w ten sposób okresowo, aby nie było konieczne odczytywanie danych z bazy przy każdym jego wywołaniu. Wystarczy w parametrze metody atomGeneruj() przekazać, aby zwracała wygenerowany xml, zamiast przesyłać go na standardowe wyjście. Wtedy należy jednak dodatkowo skorzystać z metody kanalUrl(), aby określić, pod jakim adresem internetowym będzie on dostępny (adres taki musi się znaleźć w xml'u kanału aby był on zgodny ze specyfikacją).
<?php
$oFeed->kanalUrl('http://adres-strony/nazwa-pliku.xml');
if ($rPlik = fopen('./nazwa-pliku.xml', 'w'))
{
fwrite($rPlik, $oFeed->atomGeneruj(true));
fclose($rPlik);
}
?>
Podobne kroki należy wykonać, jeśli tworzony kanał ma być zgodny ze standardem RSS 2.0. kanał wygenerowany bezpośrednio w pliku php:
<?php
header('Content-Type: application/rss+xml; charset=UTF-8');
$oRss->rssGeneruj();
?>
oraz kanał zapisany do pliku:
<?php
if ($rPlik = fopen('./nazwa-pliku.xml', 'w'))
{
fwrite($rPlik, $oRss->rssGeneruj(true));
fclose($rPlik);
}
?>