PDA

View Full Version : سوال در مورد rss



mostafa612003
شنبه 24 فروردین 1392, 11:31 صبح
سلام
دیگه از بس در مورد نحوه اعمال Rss تو سایت گشتم خسته شدم حالا دست به دامن شما دوستان شدم
سوال:
میخوام تو سایتم قابلیتی رو ایجاد کنم که از rss استفاده بشه و مطالب روز اون با استفاده از نرم افزار rssreader خونده بشه
به عبارتی
قبلیت rss رو تو سایتم بزارم اما نمیدونم چی کار کنم دوستان لطف کنید منو راهنمایی کنید
مرسی............

Unique
شنبه 24 فروردین 1392, 13:08 عصر
ببینین rss و atom feed ها یک ساختار xml استاندارد دارند ،‌شما کافیه اطلاعاتتون را بر اساس این ساختار خروجی بگیرین.
اگه میخواین مثل اب خوردن rss ایجاد کنید با استفاده از این کلاس (http://www.phpclasses.org/package/2569-PHP-Generate-RSS-2-0-feed-from-an-array-of-items.html) میتونید یک ساختار آرایه ای را به rss تبدیل کنید.

برای اینکه ساختار و Option های مربوط به rss را ببینید اینجا (http://www.xul.fr/en-xml-rss.html) را مطالعه کنید.
برای یک نمونه php هم این (http://www.carronmedia.com/create-an-rss-feed-with-php/) مثال خیلی خوبیه.

mostafa612003
شنبه 24 فروردین 1392, 13:48 عصر
خیلی متشکرم
وقتی فایل php را مانند مثال نوشتم با همان پسوند php ذخیره کنم یا xml

واینکه این فایل را کجا بزارم ؟

ممنون

pary_daryayi
شنبه 24 فروردین 1392, 15:48 عصر
من از این سایت (http://www.vbiran.ir/thread28196.html) یاد گرفتم و انجام دادم .

Unique
شنبه 24 فروردین 1392, 17:50 عصر
وقتی فایل php را مانند مثال نوشتم با همان پسوند php ذخیره کنم یا xml

rss خوان ها به header ی توسط تولید کنند xml که همون فایل php باشه توجه میکنند و اگه ساختار xml درست باشه نشون میدهند !

ببین اول مثالش کاملش زده :

header("Content-Type: application/rss+xml; charset=ISO-8859-1");

فقط شما چون فارسیه باید بزنی :

header("Content-Type: application/rss+xml; charset=UTF-8");

وقتی هم کل مطلب را میریزه توی متغیر مربوطه میاد echo میکنه ! پس در جواب شما همون فایل php مناسبه ! البته با htaccess. میشه کاری کرد که پسوندهای rss هم مانند php شناخته بشوند ! و یا کلا فایل را درقالب rss به صورت روزانه یا هفتگی ذخیره کنید و یا cache کنید و از همون header استفاده کنید ! ماشاا... راه براش تا دلت بخواد هست.

ravand
یک شنبه 25 فروردین 1392, 10:10 صبح
با کمک مروگر اکسپلورر ، فایرفاکس ، اپرا و سفری هم میشه خوراک خوان سایتی رو خوند. این یه برنامه ی ساده برای ساخت خوراک خوان یا همون rss feeds

<?php
$link = mysql_connect('localhost','root','');
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}

$db = mysql_select_db(search);
if(!$db) {
die("Unable to select database");
}
?>
<?php
$output = '<?xml version="1.0" encoding="utf-8"?>';
$output .= '<rss version="2.0">';
$output .= '<channel>';
$output .= '<title>تگ قالب</title>';
$output .= '<link>http://localhost/ravand/link.php</link>';
$output .= '<description>This is an example RSS feed</description>';
$output .= '<language>fa</language>';
$output .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
?>
<?php
mysql_query('SET NAMES \'utf8\'');
$qa=mysql_query("select * from jadval order by id DESC limit 15");
while ($qb=mysql_fetch_array($qa)){
extract($qb);
$output .= '<item>';
$output .= '<title>'.$subject.'</title>';
$output .= '<description>' . $body . '</description>';
$output.= '<link>'.'id.php?id='.$id .'</link>';
$output .= '</item>';
}
$output .= '</channel>';
$output .= '</rss>';
echo $output;
?>

mostafa612003
یک شنبه 25 فروردین 1392, 11:28 صبح
خیلی متشکرم
تونستم فایل php مورد نظرم را به صورت بالا تغییربدم
حالا برای اینکه برنامه های rss خوان صفحه من را بخوانند، باید چه کنم؟

خیلی متشکرم

ravand
یک شنبه 25 فروردین 1392, 11:42 صبح
همه چی واضحه . مشکل شما چیه بگید تا توضیح بدم.
شما جدول و دیتابیس و فیلد ها رو به برنامه بدید.
مثلا در کد زیر نام فیلد عنوان هر مطلب مشخص شده:

$output .= '<title>'.$subject.'</title>';
نام فیلد عنوان شما مثلا subject است.

mostafa612003
سه شنبه 27 فروردین 1392, 11:44 صبح
خیلی متشکرم
تونستم برنامه را درست کنم
ولی یک مشکلی هست
این سورس برنامه است:



<table class="top_news">



<?php



$output = '<?xml version=1.0 content="text/html; charset=utf-8"?>';
$output .= '<rss version="2.0">';
$output .= '<channel>';
$output .= '<title>تگ قالب</title>';

include("../db.php");
$myDb = new db();
$myDb->connect('io');


$sql ="Select * From hoomad_mohtava where part=1 ";
//echo $sql;
$objrs = $myDb->query($sql);
$numRec = $myDb -> printrec($objrs);
$end = count($numRec);

$Result = $myDb->query("Select * From hoomad_mohtava WHERE part=1 ORDER BY id DESC");
$numRec = $myDb -> printrec($Result);
$end = count($numRec);
if ($end > 0)
{
for ($counter=0; $counter < 9; $counter++)
{
$id=$numRec[$counter]['id'];
$onvan=$numRec[$counter]['onvan'];
$output .= '<item>';
$output .= '<title>اخبار</title>';
$output .= ' <tr><td><img src=images/icon/arrow.gif /> <a href=?pg=internal2&cn=mohtava/detail&m='.$id.'>';
$output .= '<description>' . $onvan . '</description>';
// $output.= '<link>id.php?id='.$id .'</link>';
$output .= '</td></tr></item><br />';

} /* for */

$output .= '</channel>';
$output .= '</rss></table>';
echo $output;


} /*if ($end > 0)*/
?>

خروجیش را ببینید
http://hoomad.teo.ir/mohtava/page_rss.php

نمی دونم برای header چی بنویسم که اینطوری اطلاعات را نمایش نده

درضمن وقتی آدرس سایتم را در اینجا وارد می کنم
http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fsoft98.ir%2Frss.xml
پیغام میده که برنامه ات درست نیست

2undercover
سه شنبه 27 فروردین 1392, 15:05 عصر
همونطور که کاربر Unique گفت باید این header رو در اول صفحه ارسال کنید:


header("Content-Type: application/rss+xml; charset=UTF-8");

ravand
سه شنبه 27 فروردین 1392, 15:32 عصر
درضمن وقتی آدرس سایتم را در اینجا وارد می کنم
http://feedvalidator.org/check.cgi?u...8.ir%2Frss.xml
من وقتی از مرورگر اپرا استفاده میکردم هم ، مشکلات rss سایتم رو بهم نشون میداد.

mostafa612003
چهارشنبه 28 فروردین 1392, 10:00 صبح
سلام
این خط را کجای صفحم بزارم؟

header("Content-Type: application/rss+xml; charset=UTF-8");

2undercover
چهارشنبه 28 فروردین 1392, 13:55 عصر
قبل از جایی که دارید کد های رو تو صفحه نمایش می دید یعنی قبل echo!

البته دقت کنید ابتدای صفحه ob_start رو فرا خوانی کنید و انتهای صفحه هم ob_end_flush رو!

mostafa612003
پنج شنبه 29 فروردین 1392, 18:00 عصر
با سلام
اگه میشه یک برنامه به من نشون بدید که این header و اون دوتابعی را که گفتید را داشته باشه

خیلی متشکرم

2undercover
جمعه 30 فروردین 1392, 18:59 عصر
این همون کدیه که دوستمون کاربر ravand نوشتن +‌ هدر و اون توابع (که اونم کاربر Unique گفتن! با تشکر!):


<?php ob_start();
header("Content-Type: application/rss+xml; charset=UTF-8");
$link = mysql_connect('localhost','root','');
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}

$db = mysql_select_db(search);
if(!$db) {
die("Unable to select database");
}
?>
<?php
$output = '<?xml version="1.0" encoding="utf-8"?>';
$output .= '<rss version="2.0">';
$output .= '<channel>';
$output .= '<title>تگ قالب</title>';
$output .= '<link>http://localhost/ravand/link.php</link>';
$output .= '<description>This is an example RSS feed</description>';
$output .= '<language>fa</language>';
$output .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
?>
<?php
mysql_query('SET NAMES \'utf8\'');
$qa=mysql_query("select * from jadval order by id DESC limit 15");
while ($qb=mysql_fetch_array($qa)){
extract($qb);
$output .= '<item>';
$output .= '<title>'.$subject.'</title>';
$output .= '<description>' . $body . '</description>';
$output.= '<link>'.'id.php?id='.$id .'</link>';
$output .= '</item>';
}
$output .= '</channel>';
$output .= '</rss>';
echo $output;
ob_end_flush();
?>

ravand
جمعه 30 فروردین 1392, 20:37 عصر
البته وقتی header اول برنامه ی ما باشه دیگه نیازی به این کد ها نیست. چون میشه با انتخاب گزینه ی Encode in UTF-8 without BOM مشکل رو حل کرد. اون دستورات مال مواقعی هست که دستور header و سشن ما بعد از مثلا کدهای html و php باشه.

mostafa612003
شنبه 31 فروردین 1392, 11:48 صبح
خیلی متشکرم
برنامه را به این صورت تغییر دادم:


<table >

<?php ob_start();
header("Content-Type: application/rss+xml; charset=utf-8");


$output = '<?xml version="1.0" encoding="utf-8"?>';
$output .= '<rss version="2.0">';
$output .= '<channel>';
$output .= '<title>تگ قالب</title>';

include("../db.php");
$myDb = new db();
$myDb->connect('io');


$sql ="Select * From hoomad_mohtava where part=1 ";
//echo $sql;
$objrs = $myDb->query($sql);
$numRec = $myDb -> printrec($objrs);
$end = count($numRec);

$Result = $myDb->query("Select * From hoomad_mohtava WHERE part=1 ORDER BY id DESC");
$numRec = $myDb -> printrec($Result);
$end = count($numRec);
if ($end > 0)
{
for ($counter=0; $counter < 9; $counter++)
{
$id=$numRec[$counter]['id'];
$onvan=$numRec[$counter]['onvan'];
$output .= '<item>';
$output .= '<title>اخبار</title>';
$output .= ' <tr><td><img src=images/icon/arrow.gif /> <a href=?pg=internal2&cn=mohtava/detail&m='.$id.'>';
$output .= '<description>' . $onvan . '</description>';
// $output.= '<link>id.php?id='.$id .'</link>';
$output .= '</td></tr></item><br />';

} /* for */

$output .= '</channel>';
$output .= '</rss></table>';
echo $output;


} /*if ($end > 0)*/

ob_end_flush();
?>


ولی شما خروجی را ببینید
http://hoomad.teo.ir/mohtava/page_rss.php
دلیلش هم اینه که در بانک mysql اطلاعات فارسی به همین صورت ذخیره میشه
ولی من درصفحات دیگه چون از این هدر استفاده می کنم مشکلی ندارم
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ولی در اینجا چون قضیه فرق می کنه اطلاعات را درست نمایش نمیده

حالا تکلیف چیه؟
خیلی ممنون

ravand
شنبه 31 فروردین 1392, 11:54 صبح
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=1690765&viewfull=1#post1690765

قسمت تبدیل دیتابیس غیر Unicode به Unicode بصورت خودکار رو بخون.

mostafa612003
شنبه 14 اردیبهشت 1392, 09:29 صبح
من صفحه ام را که قابلیت rss داشته باشه را درست کردم
حالا میشه بگویید که چطوری از آن استفاده کنم؟