روزنوشتهای من درباره اینترنت، کامپیوتر، سایبراسپیس و ...!

بازگشت به صفحه اصلی وبلاگ

 
 

September 16, 2005

 
 
 

نمايش News Feed با استفاده از MagpieRSS

در مطلبی که اينجا نوشته بودم کار با سرويس 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 قرار گرفته است يا نه. در صورت وجود اطلاعات در اين متغير خطوط بعدی اجرا خواهد:

if ($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/>";


 
 

 

نظرات دیگران:

 

 

كله گنده

September 18, 2005 08:41 AM

 
 

نويد خان تولدت مبارك!

 

 

darya

September 19, 2005 05:01 AM

 
 

salam navid jan .. raftam be violet sar zadam , fahmidam tavalodet bude .. koliii tabriikkk .. az un keyk shokolatye ham vase ma yekam bezar kenar .. dastet dard nakone .. )cheshmak)

 

 

 
 

 

استفاده از مطالب این وبلاگ فقط با اجازه نویسنده آن مجاز می باشد

Design: © Mojtaba Dashtinejad