در مطلبی که اينجا
نوشته بودم کار با سرويس Feed2js را توضيح دادم. استفاده از اين سرويس اگر چه به
خوبی کار نمايش News Feed را به خوبی نمايش میدهد اما به دليل اينکه وابسته به يک
سايت ديگر است در صورتی آن سايت با مشکلی مواجع شود کار ما به مشکل برمیخورد.
در اين مطلب کار با برنامه MagpieRSS را توضيح خواهم داد. اين برنامه که با php
نوشته شده است برروی سايت نصب میشود و کار نمايش News Feed را بسيار آسان میکند،
مزيت اين برنامه مستقل بودن آن از سايتهای ديگر است.
من از اين برنامه برای نمايش عنوان آخرين مطالب وبلاگهای خارج از سايت
Special.ir
استفاده کردهام.
نصب Magpierss
برای نصب اين برنامه ابتدا آن را از
اينجا دانلود کنيد سپس بعد از باز کردن آن، پوشه «extlib» و فايلهای زير را در شاخهای به نام «magpierss» که در شاخه اصلی سايت ايجاد
کردهايد آپلود کنيد:
rss_fetch.inc
rss_parser.inc
rss_cache.inc
rss_utils.inc
برنامه MagpieRSS برای بالا بردن سرعت بعد از دريافت فايل News Feed آن را ذخيره
میکند تا در هر بار نمايش آن مجبور به دريافت فايل نباشد. MagpieRSS خود سعی
میکند شاخهای را که اطلاعات را در آن cache میکند را ايجاد کند ولی غالبا به علت
عدم اجازه ساخت شاخه اين کار ممکن نمیشود. برای جلوگيری از ايجاد هر گونه مشکلی در
شاخه اصلی سايت شاخهای به نام cache ايجاد کنيد و به آن Premission (اختيار) 755
بدهيد، برای اين کار در برنامه FTP خود به دنبال دستور chmod بگرديد سپس آن را به
اين شکل تنظيم کنيد:

برای استفاده از اين برنامه در صفحه php مورد نظر خود بايد از کدهايی شبيه به زير
استفاده کنيد: (بعدا خط به خط اين کدها را توضيح خواهم داد.)
<?
require_once('magpierss/rss_fetch.inc');
define('MAGPIE_OUTPUT_ENCODING', 'utf-8');
ini_set('display_errors', 0);
$rss = fetch_rss('http://weblog.mojde.com/index.rdf');
if ($rss){
$items = array_slice($rss->items, 0, 5);
echo $rss->channel['title'] . "<BR/>";
foreach ($items as $item) {
echo "<A href='" . $item['link'] ."'>" . $item['title'] . "</A><BR/>";
}
}
?>
توضيحات کد:
ابتدا ما بايد کدهای MagpieRSS را وارد صفحه خود کنيم، اين کار به وسيله دستور زير
انجام میشود:
Require_once('magpierss/rss_fetch.inc');
در اين دستور بايد به محل قرارگيری فايل rss_fetch.inc اشاره کنيد. برای مثال در
دستور بالا فرض بر اين است که فايل rss_fetch.inc ما در شاخهای به نام magpierss
قرار گرفته و شاخه magpierss هم در همان جايی است که صفحه php ما در آن قرار دارد.
در دستور بعد برای اينکه بتوانيم اطلاعات يونیکد را بخوانيم از کد زير استفاده
میکنيم:
define('MAGPIE_OUTPUT_ENCODING', 'utf-8');
در دستور بعدی برای اينکه در هنگام ايجاد مشکل برای MagpieRSS، پيام خطای غير
مفهمومی برای بازديدکنندههای معمولی نمايش داده نشود، از اين دستور استفاده
کردهايم:
ini_set('display_errors', 0);
در اينجا ما آماده خواندن اطلاعات از داخل فايل News Feed مورد نظرمان شدهايم.
برای اين کار از دستور زير استفاده کردهايم:
در دستور بالا تابع fetch_rss نشانی News Feed را میگيرد و اطلاعات خوانده شده از
صفحه مورد نظر را داخل متغير $RSS قرار میدهد. از اين متغير بعدا برای نمايش
اطلاعات استفاده خواهيم کرد. برای به دست آوردن نشانی News Feed میتوانيد در
سايتها به دنبال آيکون يا لينکی با متن XML ،RSS يا ATOM بگرديد و نشانی آن را کپی
کنيد. MagpieRSS از همه انواع News Feed پشتيبانی میکند.
برای مثال نشانی News Feed وبلاگهای داخل بلاگر به اين صورت است:
و نشانی News Feed وبلاگهای بلاگفا به اين صورت است:
در خط بعدی کد ما با اين دستور کنترل میکنيم که آيا اطلاعات از داخل صفحه خوانده
شده و داخل متغير $RSS قرار گرفته است يا نه. در صورت وجود اطلاعات در اين متغير
خطوط بعدی اجرا خواهد:
در خط بعدی ما برای انتخاب 5 مطلب اول از News Feed مورد نظرمان از اين دستور
استفاده کردهايم:
$items = array_slice($rss->items, 0, 5);
MagpieRSS اطلاعات داخل RSS را در يک آرايه ذخيره میکند؛ دستور بالا 5 مورد اول از
اين آرايه انتخاب میکند و آن را داخل آرايه $items ذخيره میکند.
در خط بعدی ما عنوان صفحهای که نشانی صفحه RSS آن را دادهايم را نمايش میدهيم.
با اين دستور:
echo $rss->channel['title'] . "<BR/>";
در خط بعد ما برای نمايش يک به يک مطالب داخل RSS از اين دستور استفاده کردهايم:
foreach ($items as $item) {
دستور foreach برای هر کدام از موارد داخل آرايه دستورات مورد نظر ما در تکرار
میکند. در ضمن اين دستور هر مورد را داخل متغير $item ذخيره میکند تا بتوانيم به
آن دستری داشته باشيم.
دستور بعدی که داخل foreach قرار دارد و برای هر مورد خوانده شده تکرار میشود، کار
نمايش عنوان و لينک مطالب موجود در News Feed را انجام میدهد:
echo "<A href='" . $item['link'] ."'>" . $item['title'] . "</A><BR/>";