ایجاد: ۱۴:۰۰ ۱۳۹۲/۱۱/۳
ویرایش: ۱۴:۱۷ ۱۳۹۲/۱۱/۳
»
تولید و تحلیل RSS در سمت سرور
تولید rss به سادگی انجام میشود. کافیست مطالب موردنظر (مثلا ده خبر آخر) در ساختار (یا تمپلت) یک rss قرار گیرد. علاوه بر این، با توجه به اینکه خروجی rss دارای ساختار xml است، در زبانهای مختلف برنامهنویسی نیز توابعی برای کار با xml (خواندن و نوشتن آن) وجود دارد. مثلا در زبان php ما کلاس درونی SimpleXMLElement را داریم که کار با آن ساده است. فرض کنید ما 3 خبر جدید را از دیتابیس استخراج کرده و در متغیر
$data
ذخیره کردهایم. حال کافی است بنویسیم:
$data = array(
array(
'title'=>'عنوان خبر اول',
'description'=>'متن کامل یا مختصر خبر اول',
'link'=>'/news/255/'
), array(
'title'=>'عنوان خبر دوم',
'description'=>'متن کامل یا مختصر خبر دوم',
'link'=>'/news/254/'
), array(
'title'=>'عنوان خبر سوم',
'description'=>'متن کامل یا مختصر خبر سوم',
'link'=>'/news/253/'
)
);
$rss = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"></rss>');
$rss->addChild('channel');
$rss->channel->addChild('title', 'خبرگزاری فالس نیوز');
$rss->channel->addChild('description', 'اولین و بزرگترین خبرگزاری جهان');
$rss->channel->addChild('link', '/');
foreach($data as $d)
{
$item = $rss->channel->addChild('item');
$item->addChild('title', $d['title']);
$item->addChild('description', $d['description']);
$item->addChild('link', $baseUrl.$d['link']);
}
echo $rss->asXML();
گذشته از این، کلاسهای متعددی هم برای این کار نوشته شده که میتوانید دانلود کرده و در برنامه خود include و استفاده کنید. برخی از این کلاسها برای تولید xml و برخی نیز برای تحلیل xml ی است که محتویات آن را از سرور دیگری (با curl و ...) فراخوانی کردهاید. از جمله مشهورترین این کلاسها،
SimplePie است.
RSS در سمت کلاینت
با ajax نمیتوان به محتویات واقع در آدرس یک دامنه دیگر دست یافت. به همین دلیل برای خواندن فید یک سایت دیگر، 2 راه متداول وجود دارد. یکی استفاده از هاست خودتان به عنوان proxy است. به این معنا که ajax ابتدا درخواست فید موردنظر را به سرور شما میفرستد و فایل php که در سرور شماست، این درخواست را دریافت کرده و محتویات rss موردنظر را از سرور دیگر خوانده و به عنوان پاسخ به درخواست ajax ی ارسال میکند.
راه دوم، تکنیکی به نام jsonp است. در این تکنیک، یک فایل js از سروری دیگر در صفحه ما ضمیمه میشود که محتویات rss موردنظر را لود میکند و در یک متغیر قرار میدهد و پس از لود، تابع موردنظر روی آن اجرا میشود تا آن داده را تحلیل و مورداستفاده قرار دهد.
یکی از بهترین این سرویسها، مربوط به گوگل است. فرض کنید ما میخواهیم محتویات 5 خبر جدید خبرگزاری مهر که در آدرس mehrnews.com/rss را لود کرده و پس از لود، تابع alirezaFunc را روی ان اجرا کنیم. در اینصورت کافی است تابع alirezaFunc را تعریف کرده و سپس اسکریپتی با آدرس
http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=5&callback=alirezaFunc&q=http://mehrnews.com/rss
را به صفحه ضمیمه میکنیم. محتویات اسکریپت فوق را میتوانید در
این لینک ببینید. همانطور که میبینید، گوگل محتویات rss سایت خبرگزاری مهر را لود کرده و سپس تابع alirezaFunc را روی آن صدا زده است. (
توضیحات کاملتر در مورد سرویس Google feed API)
یاهو نیز از مدتها قبل از گوگل، راهکار مشابهی را بر روی سرویس
pipes خود ارائه کرده بود که در
این آدرس میتوانید توضیحات بیشتر راجع به این قابلیت یاهو و گوگل را به همراه کد آموزشی مربوط به آن مشاهده کنید.
بر مبنای دو سرویس پایدار گوگل و یاهو در نمایش فید به صورت jsonP، پلاگینهای مختلفی نوشته شده که jQuery Feeds یکی از جدیدترین و بهترین آنهاست.
بهینه سازی فید
سایتهایی هستند که آدرس فید شما را گرفته، و یک آدرس دیگر به عنوان آدرس فید شما میدهند تا بجای آدرس فیدتان در سایتتان درج کنید و در عوض خدماتی را به شما ارائه میدهند مانند:
-
تصحیح و استاندارد سازی فید
-
تولید انواع فیدها حسب درخواست برنامه استفاده کننده از فید
-
شمارش تعداد بازدید فید و کلیکهایی که روی لینک آن میشود
-
افزودن تبلیغات یا متن، امکانات و دکمههای دلخواه به انتهای فید مطالب
-
ارسال اتوماتیک مطالب جدید شما به شبکههای اجتماعی (مانند توییتر)
-
و ...
که
فیدبرنر (feedburner) جزو بهترین سایتها در این زمینه است و در سالهای اخیر توسط گوگل خریداری شده است. (هرچند گوگل بعد از خرید، هیچ ارتقائی در آن ایجاد نکرده است و برخی میگویند شاید مانند برخی از سرویسهای دیگر، گوگل آن را خریده تا هر زمان با برخی منافعش در تضاد بود، آن را تعطیل کند)
[این مطلب ناقص است و در آینده تکمیل خواهد شد]
یادداشتهای مرتبط
- API چیست؟
- بکارگیری pushState و replaceState در برنامه نویسی سایت های ای جکسی
- انواع روش های شناسایی و احراز هویت کاربران یک صفحه وب
- ساخت PDF آنلاین
- کار با قابلیت Page Visibility و کاربردهای آن
- حذف درخواست اضافه تصویر انیمیشن لودینگ
- بهینه سازی و کاهش حجم تصاویر برای استفاده در صفحات وب
- ارسال و دریافت ایمیل با PHP و ساختن اکانت ایمیل
- چه نکاتی را باید در طراحی و برنامه نویسی مجدد سایت مان توجه کنیم؟
- بهینه سازی آنلاین سی اس اس و جاوا اسکریپت