توليد خوراك‌خوان براي سايت (بخش دوم) تغذيه مشتريان سايت

 

در شماره پيش در مورد RSS و ساختار آن و لزوم داشتن يك RSS براي يك سايت كه مطالب آن هميشه در حال به‌روزرساني است، توضيحاتي داديم، اما اين RSS‌ها چگونه توليد مي‌شود؟هر زبان برنامه‌نويسي تحت وب روش‌هاي متفاوتي براي توليد RSS دارد؛ اما يك راه ساده كه هميشه جوابگوست توليد يك صفحه پاسخ و قراردادن محتويات RSS به صورت يك رشته متني و با فرمت XML است.براي شروع از PHP براي نوشتن يك RSS استفاده مي‌كنيم. در ادامه در مورد راه‌حل‌هايي كه مايكروسافت براي توليد RSS به برنامه‌نويسان داده است، بحث خواهيم كرد.در ابتدا به يك Header نياز داريم تا به مرورگر بگوييم خروجي صفحه مورد نظر براي RSS‌ است، براي اين‌كار از كد زير استفاده مي‌كنيم.

header("Content-Type: application/xml; charset=utf-8");

قرار است وقتي اين صفحه اجرا شد يك ساختار XML كه در شماره پيش در مورد آن توضيح داديم، توليد شود.اگر به ساختار RSS هفته پيش دقت كنيد، مي‌بينيد كه داراي يك بخش اصلي است كه هميشه بايد وجود داشته‌باشد، اما يك بخش ثابت و از نوع آرايه دارد كه قرار است بر اساس اطلاعات ما پر شود، اين بخش ارائه‌اي محتواي صفحه RSS شما خواهد شد. در اولين مرحله ما بخش‌هاي ثابت را در خروجي نمايش مي‌دهيم سپس ارائه را براي توليد RSS توليد مي‌كنيم.

$rssfeed = '«?xml version="1.0" encoding="ISO-8859-1"?»';

$rssfeed .= '«rss version="2.0"»';

$rssfeed .= '«channel»';

$rssfeed .= '«title»Sample«/title»';

$rssfeed .= '«link»http://jamejamonline.ir«/link»';

$rssfeed .= '«description»This is an example RSS feed«/description»';

$rssfeed .= '«copyright»Copyright (C) 2012 jamejamonline.com«/copyright/»';

حالا بايد بخش متغير آن را كه شامل فهرستي از مطالبي است كه در RSS قرار مي‌گيرند كامل ‌كنيم:

for($index = 0; $index « 10; $index++) {

$rssfeed .= '«item»';

$rssfeed .= '«title»Ttile' . $index . '«/title»';

$rssfeed .= '«description»Description' . $index . '«/description»';

$rssfeed .= '«link»http://domain.com/' . $index . '«/link»';

$time = time();

$now = (int)(date('Y',$time).date('m',$time).date('j',$time));

$rssfeed .= '«pubDate»' . $now . '«/pubDate»'; $rssfeed .= '«/item»'; }

اما XML بالا دو تگ باز ـ channel و ديگري rss ـ دارد كه بايد آنها را ببنديد بعد از آن شما مي‌توانيد متغير $rssfeed را كه نشان‌دهنده خروجي RSS شماست در خروجي چاپ كنيد:

$rssfeed .= '«/channel»';

$rssfeed .= '«/rss»';

echo $rssfeed;

اما به يك نكته دقت داشته‌باشيد، در مثال بالا آيتم‌هاي خود را به صورت نمونه پر كرديم (حلقه for) شما مي‌توانيد آيتم‌هاي خود را بر اساس ديتابيس خود پر كنيد.اين راه حل در net. هم جوابگوي كار شما خواهد بود. در net. شما صرف نظر از تمامي اين كارها مي‌توانيد از روش Serialize كردن (در php نيز مي‌توانيد اين‌كار را انجام دهيد) يك شيء از يك كلاس آن را به قالب يك RSS در بياوريد.در دات نت شما راه‌هاي متفاوتي براي اين‌كار داريد؛ يكي از اين راه‌ها استفاده از كلاس‌هايي است كه براي توليد و پردازش XML به شما ارائه مي‌كند استفاده كنيد، يا كلاس‌هاي آماده‌اي را كه ديگران براي توليد RSS‌نوشته‌اند به كار ببريد؛ اما ساده‌ترين كار استفاده از WCF و API‌هايي است كه براي توليد RSS‌ به شما مي‌دهد، در زير يك مثال ساده از توليد RSS‌ با استفاده از WCF بيان مي‌كنيم.ابتدا شما با استفاده از SyndicationFeed مشخصات RSS‌خود را به صورت زير مشخص مي‌كنيد:

SyndicationFeed feed = new SyndicationFeed("Sample",

" This is an example RSS feed ",

new Url("http://jamejamonline.ir "));

در اين مرحله براي اضافه كردن item مي‌توانيد از كلاس SyndicationItem استفاده كنيد. به كد زير دقت كنيد:

List«SyndicationItem» items = new List«SyndicationItem»();

for (int i = 0; i « 10; i++){

SyndicationItem item = new SyndicationItem(

"Title" + i.ToString(),

"Content" + i.ToString(),

new Url("http://domain.com/" + i.ToString()),

"Item" + i.ToString(),

DateTime.Now);

items.Add(item); }

مقدار items برابر آيتم‌هايي هست كه در RSS نمايش داده مي‌شود؛ بنابراين حالا بايد به feed ـ كه در بالا توليد كرديم ـ بگوييم چه آيتم‌هايي را بايد نمايش دهد، سپس با استفاده از كلاس Rss20FeedFormatter خروجي RSS را توليد كنيم:

feed.Items = items;

return new Rss20FeedFormatter(feed);

كلاس Rss20FeedFormater هدر فايل را براي نمايش RSS مشخص مي‌كند، به طوري كه مرورگر شما متوجه مي‌شود خروجي صفحه مورد نظر RSS‌ است.





تاريخ : چهار شنبه 19 مهر 1391برچسب:, | | نویسنده : مقدم |