|
..:: Tworzenie w PHP własnego kanału RSS ::.. |
|
Data artykulu: 15-11-2009 10:38
(admin), modyfikowany:
21-11-2009 10:19 (admin)
|
Odwiedzin: 10114
|
|
| |
|
Tagi: mysql, php, programowanie,
|
| |
|
|
|
|
|
Mężczyzna po sześćdziesiątce jest jak prognoza pogody - z przodu opad, z tyłu wiatry.
|
|
|
O zaletach własnych kanałów RSS nie będę nikogo przekonywał. Jeśli mimo wszystko ktoś nie zna ich zastosowania, opiszę to w osobnym artykule.
W przypadku konkretnie mojej strony www, w pliku article_add.php, odpowiedzialnym za dodawanie do bazy danych MySQL nowych artykułów, umieściłem dodatkową linijkę include("rss_generator"); - która wykonuje kod zawarty w pliku rss_generator, a ten z kolei tworzy w momencie publikacji nowego artykułu plik rss.xml z kanałem RSS. Proszę pamiętać, że poniższy kod jest dostosowany do mojej strony, ale przy nawet odrobinie znajomości PHP nie powinno być żadnych problemów z jego modyfikacją do własnych potrzeb.
Poniższy plik rss_generator wywoływany jest za każdym razem z pliku article_add.php:
[blabla]
- add_new_record (tu php dodaje nowy artykul do bazy danych)
- include("rss_generator.php"); <<<- tu właśnie wywoływany jest plik tworzący kanał RSS
[blabla]
rss_generator.php
include ("config.php");
mysql_connect($dbhost, $dbuser, $dbpass) or die ("Can not connect to the datebase");
mysql_select_db($dbname) or die ("Can not choose datebase names: $dbname - " . mysql_error());
$result_rss = mysql_query("SELECT * FROM www_articles WHERE private='0' ORDER BY 'datetime' DESC LIMIT 30") or die (mysql_error());
### private='0' pomija artykuły o wartości np. 1 czy 2, które są dostępne jedynie po zalogowaniu. Nie przecież, chcemy aby tajne informacje trafiały do RSS? :-) Datetime w moim przypadku jest kolumną w MySQL opisującą datę stworzenia rtykułu. Za każdym razem tworzymy rss'a z ostatnimi trzydziestoma newsami (LIMIT 30)
### za każdym razem tworzymy nowy plik rss.xml ###
$rss_file=fopen("rss.xml", "w+");
flock($rss_file, LOCK_EX);
### tu jest nagłówek RSS'a...
fwrite($rss_file, "<?xml version="1.0" encoding="ISO-8859-2"?>
<rss version="2.0">
<channel>
<title>Pawel Rozenek's News</title>
<link>http://www.rozenek.com/</link>
<description>Last 30 news.</description>
");
while ($get_rss=mysql_fetch_array($result_rss))
{
### ... a to jego poszczególne artykuły tworzone w pętli ###
fwrite($rss_file, "
<item>
<author>" . $get_rss['created_by'] . "</author>
<title>" . $get_rss['title'] . "</title>
<link>http://www.rozenek.com/index.php?ln=" . $get_rss['language'] . "&article_id=" . $get_rss[id] . "</link>
<description>" . htmlspecialchars(nl2br($get_rss['contents'])) . "</description>
<pubDate>" . date('D, d M Y H:i:s', $get_rss['datetime']) . " GMT</pubDate>
<guid>guid-" . $get_rss['id'] . "</guid>
</item>
");
}
### Uwaga! Pliki RSS nie tolerują znaczników takich jak < czy > - dlatego używam htmlspecialchars!
### Uwaga2! Pomimo, że znacznik <PUBDATE> jest w specyfikacji RSS podawany jako opcjonalny, bez jego użycia czytnik RSS Outlooka nie widzi nowej wersji kanału! W znacznik ten wkładam po prostu quid-id_artykułu
### zapisujemy, odblokowujemy i zamykamy plik rss
fwrite($rss_file, "
</channel>
</rss>");
flock($rss_file, LOCK_UN);
fclose($rss_file);
?>
A co z samym informowaniem użytkowników, że mamy kanał RSS? Oczywiście oprócz standardowych informacji na stronie w postaci ikonki informującej użytkowników o istnieniu RSS'ów w zasadzie MUSIMY w kodzie strony umieścić:
<link rel="alternate" type="application/rss+xml" title="RSS - Pawel Rozenek" href="http://www.rozenek.com/rss.xml">
i należy to zrobić pomiędzy <head> a </head>
Oczywiście kanały RSS można budować do wszystkiego. Można umieścić kilka ikon RSS z linkami do np. ostatnich 30-tu postów, ostatnich komentarzy dla danego artykułu, ostatnich 30-tu komentarzu w ogóle i co tylko cobie jeszcze zamarzysz.
A poniżej fragment przykładowego pliku rss.xml:
<?xml version="1.0" encoding="ISO-8859-2"?>
<rss version="2.0">
<channel>
<title>Pawel Rozenek's News</title>
<link>http://www.rozenek.com/</link>
<description>Last 30 news.</description>
<item>
<author>admin</author>
<title>Wy³±czanie Funkcji Autoodtwarzania</title>
<link>http://www.rozenek.com/index.php?ln=polski&article_id=196</link>
<description>Poni¿ej przedstawiam sposób wy³±czenia funkcji autoodtwarzania dysków po w³o¿eniu do napêdu. Funkcja ta irytuje wiêkszo¶æ u¿ytkowników :-)<b$
<br />
Windows automatycznie próbuje odtworzyæ jej zawarto¶æ lub uruchomiæ wybrany program, je¶li na p³ycie znajduje siê plik autorun.inf. <br />
<br />
1. Uruchom edytor rejestru REGEDIT.<br />
2. Znajd¼ klucz HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCDRom.<br />
3. Utwórz w nim now± warto¶æ DWORD o nazwie „Autorun” i nadaj jej warto¶æ „1”.<br />
<br />
<br />
Aby ponownie w³±czyæ funkcjê autoodtwarzania, nadaj wpisowi Autorun warto¶æ „0”.</description>
<pubDate>Sun, 15 Nov 2009 08:51:21 GMT</pubDate>
<guid>guid-196</guid>
</item>
<item>
<author>admin</author>
<title>Rozwi±zywanie Problemów Z MS Outlook</title>
<link>http://www.rozenek.com/index.php?ln=polski&article_id=195</link>
<description>Zapewne niejednej osobie zdarzy³o siê mieæ problemy z MS Outlook (nie mówiê eo Outlook Expressie!). Poni¿ej zebra³em kilka pomocnych porad przy$
<br />
<b>Zawsze!!!</b> przed jakimikolwiek czynno¶ciami naprawczymi wykonuj kopiê pliku Outlook.pst!<br />
<br />
<br />
<b>outlook.exe /resetfoldernames</b> - <br />
wydanie tego polecenie zmieni nazwy folderów systemowych Outlooka na bie¿±ce ustawienia jêzykowe<br />
np. skrzynka odbiorcza na inbox itp... Przydatne przy przeprowadzce zagranicznych danych z plików pst.<br />
<br />
<br />
<b>outlook.exe /resetnavpane</b> - pomaga w razie wyst±pienia b³êdu w pliku pst, objawiaj±cego siê komunikatem o b³êdzie podczas otwierania Outl$
<br />
<br />
<br />
Na wiele problemów z Outlookiem pomaga narzêdzie standardowo znajduj±ce siê w C:Program FilesMicrosoft OfficeOffice 12<b>scanpst.exe</b><$
<br />
<br />
Standardowa lokalizacja pliku <b>Outlook.pst</b> (plik z danymi Ootlooka) to C:Users
azwa_u¿ytkownikaAppDataLocalMicrosoftOutlookOutlook.$
<br />
Czasami problemem jest uszkodzenie widoku foldera. Uruchom program Outlook z parametrem /cleanviews, czyli w katalogu gdzie przechowywany jest Outlook (zazw$
<br />
</description>
<pubDate>Sun, 15 Nov 2009 08:34:37 GMT</pubDate>
<guid>guid-195</guid>
</item>
[blablablablablabla]
</channel>
</rss>
Źródło: http://www.w3schools.com/rss/rss_reference.asp i nie tylko :-)
| Podobalo Ci sie? Chcesz mi jakos podziekowac? Wcisnij "Lubie To":
|
|
|
|
|
|
| |
System Zgloszeniowy UNITEL System zgłoszeniowy UNITEL został stworzony przeze mnie w miejsce przestarzałego, starego systemu zgłoszeniowego. Firma UNITEL, w momencie gdy w niej pracowałem, zajmowała się obsługą innych firm pod względem informatycznym. System miał zapewnić przyjecie i obsługę zgłoszeń serwisowych od klientów.
Główny nacisk, po [...]
|
Drzewiaste menu PHP & MySQL W momencie tworzenia pierwszych kształtów mojej strony www z powodów chyba oczywistych zdecydowałem wszystkie artykuły trzymać w bazie danych. Z każdym dniem artykułów przybywało, zapragnąłem także tworzyć własny blog, szybko problemem stało się pierwotnie nieprzemyślane menu nawigacyjne.
Pragnę umieścić poniżej zaw [...]
|
System MojRachunek Pomysł napisania tego systemu zrodził się w momencie, gdy papierowe zarządzanie finansami blisko stu
osobowej (wtedy) grupy użytkowników sieci osiedlowej stało się niewygodne. Ponadto powstanie systemu umożliwiło
niewykwalifikowanym osobom włączanie, wyłączanie, tworzenie nowych itp. użytkowników bez konieczności i [...]
|
| |
|
Tagi: mysql, php, programowanie,
|
| |
|
|
|
|
|
|
| |
| |