تولید خوراک‌خوان برای سایت (بخش دوم)

تغذیه مشتریان سایت

در شماره پیش در مورد 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» data-x-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); }
مقدار data-x-items برابر آیتم‌هایی هست که در RSS نمایش داده می‌شود؛ بنابراین حالا باید به feed ـ که در بالا تولید کردیم ـ بگوییم چه آیتم‌هایی را باید نمایش دهد، سپس با استفاده از کلاس Rss
20FeedFormatter خروجی RSS را تولید کنیم:
feed.Items = items;
return new Rss20FeedFormatter(feed);
کلاس Rss20FeedFormater هدر فایل را برای نمایش RSS مشخص می‌کند، به طوری که مرورگر شما متوجه می‌شود خروجی صفحه مورد نظر RSS‌ است.
امیر بهاالدین سبط الشیخ
newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها