เราจะให้บริการ Rss ยังไงดี?
ณ ขณะนี้ ยังคิดเรื่องที่จะเขียนเกี่ยวกับ jQuery ไม่ออก เอา PHP ไปอีกเรื่องละกัน แต่ขอเขียนแค่สั้นๆ ดีกว่า เหนื่อย!
RSS คิดว่าทุกคนรู้จักแน่นอน คือการให้บริการ Feed Data ซึ่งผู้ใช้งาน สามารถเอาไปอ่านได้ในหลายๆที่ อาทิ เช่น..
1. อ่านผ่าน Browser ที่ Support Rss
2. อ่านผ่านผู้ให้บริการต่างๆ เช่น friendfeed.com
3. อ่านโดยเขียน Javascript
4. อ่านโดยเขียน Server Side Script
แต่ที่จะมาแนะนำวันนี้คือการเขียน XML ใน Format Rss ซึ่งจริงๆ แล้วมันก็เป็น XML Format นึงเท่านั้น ซึ่ง ที่ Browser ส่วนใหญ่อ่านได้ จะเป็น มาตรฐาน Rss และ Atom
โดยการเขียน XML เราก็สามารถเขียนได้อีกหลายๆ วิธีเหมือนกัน
1. เขียนโดยใช้ tag โต้งๆ เลย (ข้ามไปๆ)
2. เขียนโดย interface ผ่าน class ต่างๆ เช่น PHP-XML
3. เขียนโดยใช้ Function ที่มีใน PHP อาทิเช่น
- SimpleXMLElement
- DOMDocument
- XMLWriter
และที่จะมา ทำตัวอย่างให้ดูวันนี้ก็คือ XMLWriter ด้วยสาเหตุ ที่ไม่ค่อยมีคนพูดถึง ตัวนี้นัก
ผมจะลองเขียน Rss ขึ้นมาโดยใช้ Entry นึงใน jQueryTips.com มาเป็นตัวอย่างละกัน
-
<?php
-
$xw = new XMLWriter();
-
$xw->openMemory();
-
//$xw->openUri(‘data.xml’);
-
$xw->startDocument(‘1.0′, ‘UTF-8′);
-
$xw->startElement(‘rss’);
-
$xw->writeAttribute(‘version’, ‘2.0′);
-
$xw->writeAttribute(‘xmlns:content’, ‘http://purl.org/rss/1.0/modules/content/’);
-
$xw->writeAttribute(‘xmlns:wfw’, ‘http://wellformedweb.org/CommentAPI/’);
-
$xw->writeAttribute(‘xmlns:dc’, ‘http://purl.org/dc/elements/1.1/’);
-
$xw->writeAttribute(‘xmlns:atom’, ‘http://www.w3.org/2005/Atom’);
-
$xw->writeAttribute(‘xmlns:sy’, ‘http://purl.org/rss/1.0/modules/syndication/’);
-
-
$xw->startElement(‘channel’);
-
$xw->writeElement(‘title’, ‘jQueryTips by Tee++;’);
-
$xw->startElement(‘atom:link’);
-
$xw->writeAttribute(‘href’, ‘http://www.jquerytips.com/feed/’);
-
$xw->writeAttribute(‘rel’, ’self’);
-
$xw->writeAttribute(‘type’, ‘application/rss+xml’);
-
$xw->endElement(); // end atom
-
$xw->writeElement(‘link’, ‘http://www.jquerytips.com’);
-
$xw->writeElement(‘description’, ‘Javascript is just bananas.’);
-
$xw->writeElement(‘pubDate’, ‘Mon, 06 Apr 2009 08:56:33 +0000′);
-
$xw->writeElement(‘generator’, ‘http://wordpress.org/?v=2.7.1′);
-
$xw->writeElement(‘language’, ‘en’);
-
$xw->writeElement(’sy:updatePeriod’, ‘hourly’);
-
$xw->writeElement(’sy:updateFrequency’, ‘1′);
-
-
/*—————— Start Loop ——————*/
-
$xw->startElement(‘item’);
-
-
$xw->writeElement(‘title’, ‘มาทำ Akuma ปล่อย Hadouken กัน (ขำๆ)’);
-
$xw->writeElement(‘link’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/’);
-
$xw->writeElement(‘comments’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/#comments’);
-
$xw->writeelement(‘pubData’, ‘Mon, 06 Apr 2009 08:56:33 +0000′);
-
$xw->writeElement(‘dc:Creator’, ‘Tee++;’);
-
/*—————— Start Loop Categories ——————*/
-
$xw->startElement(‘category’);
-
$xw->writeCData(‘Name of category’);
-
$xw->endElement(); // end category
-
/*——————- End Loop Categories ——————-*/
-
$xw->startElement(‘guid’);
-
$xw->writeAttribute(‘isPermalink’, ‘false’);
-
$xw->text(‘http://www.jquerytips.com/?p=369′);
-
$xw->endElement(); // end guid
-
-
$xw->startElement(‘description’);
-
$xw->writeCData(‘<p>Long Description should be here.</p>’);
-
$xw->endElement(); // end description
-
-
$xw->startElement(‘content:encoded’);
-
$xw->writeCData(‘<p>Long Description should be here.</p>’);
-
$xw->endElement(); // end content:encoded
-
-
$xw->writeElement(‘wfw:commentRss’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/feed/’);
-
-
$xw->endElement(); // end item
-
/*——————- End Loop ——————-*/
-
-
$xw->endElement(); // end channel
-
$xw->endElement(); // end rss
-
-
-
$xml = $xw->outputMemory(true);
-
$xw->flush(true);
-
echo $xml;
-
?>
ซึ่งจากโคดด้านบนเป็น XML ใน Format Rss 2.0 ครับ โดยที่ผมไม่อยากจะไปนั่งอธิบาย ว่า โคดแต่ละชุดทำงานยังไง เพราะว่า PHP Manual มีบอกหมด (มีตัวอย่างด้วย)
ความสามารถของ XMLWriter สามารถกำหนดได้ ว่า จะ save xml ไว้ที่ file หรือว่า จะให้ render output ออกมา เลย
และส่วนตรงที่ผมเขียนว่า Start Loop – End Loop นั่น จริงๆ แล้วมันควรจะเป็น loop ของ Entries ที่เรามี มาวน
ถ้าโคดไม่มีอะไรผิดพลาดก็จะได้หน้าตาออกมาแบบนี้ครับ

*** จากภาพด้านบนผมใช้ IE6 Render ออกมาครับ เพราะว่า ถ้าใช้ IE7, Firefox, Safari, etc. มันจะ อ่านออกมาไม่เป็นโคด แต่ว่า อ่านออกเป็นภาษามนุษย์ แทนจะทำให้ไม่เห็นภาพกัน ยังไงลองเล่นกันดูนะครับ สำหรับ XMLWriter เจ๋งดี WriteCData ได้ด้วย อิอิ
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
บทความดีมีประโยชน์มากครับ
การทำ rss ก็ไม่ยากอีกต่อไป
เอิ้ก~ ผมเขียนสดเองทุกครั้งเลย เพราะ rss ที่เคยเขียนอย่างมากก็ title link description pubdata = =a
แล้วอยากให้แสดงรูปด้วยนี่ทำยังไงครับ ลองมานานทำไม่ได้สักที