PDA

View Full Version : آموزش: طراحی آر اس اس برای سایت



djsaeedkhan
شنبه 24 دی 1390, 17:11 عصر
با سلام خدمت دوستان
می خوایم ببینیم چطور میشه یه RSS خوب و راحت برای سایت درست کرد.
البته می دونم این بحث دیگه تکراریه ولی خوب یه کد دیدم گفتم شاید به درد کسی هم بخوره:قلب:
برای شروع ابتدا ساختار یک فایل آر اس اس رو می بینیم

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>Example RSS feed</title>
<description>Example of a RSS feed, part of a programming tutorial on making a feed in PHP.</description>
<link>http://www.broculos.net</link>
<copyright>Copyright (C) 2008 Broculos.net</copyright>
<item>
<title>Example 1</title>
<description>This is the description of the first example.</description>
<link>http://www.example.com/example1.html</link>
<pubDate>Mon, 29 Dec 2008 22:10:00 -0600</pubDate>
</item>
<item>
<title>Example 2</title>
<description>This is the description of the second example.</description>
<link>http://www.example.com/example2.html</link>
<pubDate>Thu, 03 Jan 2008 14:27:15 -0600</pubDate>
</item>
</channel>
</rss>

خوب دیدید که وقتی آر اس اس سایت ها رو میبینیم به این شکل هست.
حالا برای اینکه بخوایم همچین چیزی رو با دیتابیس درست کنیم باید یه صفحه مثلا rss.php درست کنید و کد های زیر رو توی اون قرار بدید. البته باید متغیر ها رو بر اساس دیتابیس خودتون مقدار دهی کنید.

<?php

$channel = array("title" => "Example RSS feed",
"description" => "Example of a RSS feed",
"link" => "http://www."Example ",
"copyright" => "Copyright (C) 2008 "Example ");

$items = array(
array("title" => "Example 1",
"description" => "This is the description of the first example.",
"link" => "http://www.example.com/example1.html",
"pubDate" => date("D, d M Y H:i:s O", mktime(22, 10, 0, 12, 29, 2008)))
, array("title" => "Example 2",
"description" => "This is the description of the second example.",
"link" => "http://www.example.com/example2.html",
"pubDate" => date("D, d M Y H:i:s O", mktime(14, 27, 15, 1, 3, 2008)))
);

$output = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$output .= '<rss version="2.0">';
$output .= "<channel>";
$output .= "<title>" . $channel["title"] . "</title>";
$output .= "<description>" . $channel["description"] . "</description>";
$output .= "<link>" . $channel["link"] . "</link>";
$output .= "<copyright>" . $channel["copyright"] . "</copyright>";

foreach ($items as $item) {
$output .= "<item>";
$output .= "<title>" . $item["title"] . "</title>";
$output .= "<description>" . $item["description"] . "</description>";
$output .= "<link>" . $item["link"] . "</link>";
$output .= "<pubDate>" . $item["pubDate"] . "</pubDate>";
$output .= "</item>";
}
$output .= "</channel>";
$output .= "</rss>";

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

?>
با این کار به راحتی فایل آر اس اس ایجاد میشه و نمایش داده می شه. شما می تونید با یه خط دستور کد های ایجاد شده رو در فایلی به اسم rss.xml قرار بدید و لینک اون رو به کاربر نمایش بدید تا بره و ببینه

مرحله آخر
برای اینکه براوزر شما بتونه آر اس اس ایجاد شده رو نمایش بده این کد ها رو هم در صفحتون قرار بدید.

<link rel="alternate" type="application/rss+xml" title="Title of the feed (RSS 2.0)" href="http://www.broculos.net/en/%E2%80%8Brss.xml" />

منابع بیشتر
RSS on Wikipedia
RSS 2.0 Specification
RSS Feed Validator
Feed Icons
FeedBurner

نمونه سورس: http://www.broculos.net/sites/default/files/attachments/rss.zip
اگر مشکلی بود بفرمایید
با تشکر

ravand
یک شنبه 25 دی 1390, 09:42 صبح
ببخشيد من اين كد رو توي اين سايت پيدا كردم .
http://www.carronmedia.com/create-an-rss-feed-with-php/
و حتي برام كار هم مي كنه.
ولي نميدونم چرا عنوان مطالبي كه چاپ مي كنه به صورت لينك در نمياد. و مشكل ديگه هم اينه كه وقتي كد زير رو اول كدهاي php قرار ميدم اسكريپت كلا كار نميكنه و از كار مي افته.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="alternate" type="application/rss+xml" title="عنوان سايت" href="test.php" />
<title>عنوان سايت</title>
</head>
<body>

كدهاي خوراك خوان :

<?php
header("Content-Type: application/rss+xml; charset=utf-8");
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'cms2');
$rssfeed = '<?xml version="1.0" encoding="utf-8"?>';
$rssfeed .= '<rss version="2.0">';
$rssfeed .= '<channel>';
$rssfeed .= '<title>تگ قالب</title>';
$rssfeed .= '<link>http://localhost/cms/nicEdit/ghaleb/tag.php</link>';
$rssfeed .= '<description>This is an example RSS feed</description>';
$rssfeed .= '<language>en-us</language>';
$rssfeed .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
$connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die('Could not connect to database');
mysql_select_db(DB_NAME)
or die ('Could not select database');
$query = "SELECT * FROM jadval ORDER BY id DESC";
mysql_query('SET NAMES \'utf8\'');
$result = mysql_query($query) or die ("Could not execute query");
while($row = mysql_fetch_array($result)) {
extract($row);
$rssfeed .= '<item>';
$rssfeed .= '<title>' . $title . '</title>';
$rssfeed .= '<description>' . $description . '</description>';
$rssfeed .= '<link>' . $link . '</link>';
$rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($date)) . '</pubDate>';
$rssfeed .= '</item>';
}
$rssfeed .= '</channel>';
$rssfeed .= '</rss>';
echo $rssfeed;
?>

ravand
یک شنبه 25 دی 1390, 10:58 صبح
من بايد اين كد رو توي صفحه ي اصلي ميذاشتم :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="alternate" type="application/rss+xml" title="عنوان سايت" href="test.php" />
<title>عنوان سايت</title>
</head>
<body>

djsaeedkhan
یک شنبه 25 دی 1390, 11:47 صبح
سلام
این کد هایی که گذاشتم فقط آر اس اس رو ایجاد می کنه
یعنی شما یه لینک میذاری به آدرس آر اس اس و کاربر می تونه اونو ببینه یا با برنامه های اینکار دریافت کنه
برای اینکه بخوای این کد ها رو نمایش بدی یه تیکه کد باید اضافه تر انجام بدی

این کد برای ذخیره همین کد های بالا در یک فایل xml هست

$filename = 'RSS.xml';
$xml_output=$myfeed->output();

if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w')) { // a=append w=write
echo "<br>Cannot open ($filename)";
exit;
}
if (fwrite($handle, $xml_output) === FALSE) {
echo "<br>Cannot write to ($filename)";
exit;
}
echo "<br>Success, wrote (RSS to ($filename)";
fclose($handle);
} else {
echo "<br>The file $filename is not writable";
} ?>




و در آخر کلاسی برای نمایش آر اس اس و با لینک

<?php
require_once('reader.class.v.1.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<?php
$aaa = new rssReader();
$aaa->rss_result('RSS.xml',5);
?>
</body>
</html>

ravand
یک شنبه 25 دی 1390, 14:49 عصر
براي چي براي من لينك هر مطلب و متن هر مطلب چاپ نميشه؟ و فقط عنوان هر مطلب چاپ ميشه؟

<?php
header("Content-Type: application/rss+xml; charset=utf-8");
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'cms2');
$rssfeed = '<?xml version="1.0" encoding="utf-8"?>';
$rssfeed .= '<rss version="2.0">';
$rssfeed .= '<channel>';
$rssfeed .= '<title>تگ قالب</title>';
$rssfeed .= '<link>http://localhost/cms/nicEdit/ghaleb/tag.php</link>';
$rssfeed .= '<description>This is an example RSS feed</description>';
$rssfeed .= '<language>fa</language>';
$rssfeed .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
$connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die('Could not connect to database');
mysql_select_db(DB_NAME)
or die ('Could not select database');
$query = "SELECT * FROM jadval ORDER BY id DESC";
mysql_query('SET NAMES \'utf8\'');
$result = mysql_query($query) or die ("Could not execute query");
while($row = mysql_fetch_array($result)) {
extract($row);
$rssfeed .= '<item>';
$rssfeed .= '<title>' . $title . '</title>';
$rssfeed .= '<description>' . $description . '</description>';
$rssfeed .= '<link>' . $link . '</link>';
$rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O") . '</pubDate>';
$rssfeed .= '</item>';
}
$rssfeed .= '</channel>';
$rssfeed .= '</rss>';
echo $rssfeed;
?>

com.mohsen
یک شنبه 25 دی 1390, 15:28 عصر
سلام من یه کد rss ضمیمه کردم
من اخبار رو از rss یه سایت خبری نمایش میدم در سایت خودم.
همونطور که می دونید یه لینک داره که با کلیک بر روی اون میره به سایت مورد نظر و خبر رو نمایش میده
سوال: من میخوام با کلیک بر روی لینک بره متن خبر رو از سایت خبری بگیره و در سایت خودم نشون بده.
میشه یه نگاهی به کد بندازید و ویرایش کنید؟ممنون
80853

ravand
یک شنبه 25 دی 1390, 15:31 عصر
سلام من یه کد rss ضمیمه کردم
من اخبار رو از rss یه سایت خبری نمایش میدم در سایت خودم.
همونطور که می دونید یه لینک داره که با کلیک بر روی اون میره به سایت مورد نظر و خبر رو نمایش میده
سوال: من میخوام با کلیک بر روی لینک بره متن خبر رو از سایت خبری بگیره و در سایت خودم نشون بده.
میشه یه نگاهی به کد بندازید و ویرایش کنید؟ممنون
80853


اين كار اصلا از لحاظ اخلاقي درست نيست شايد اون بنده خدايي كه روي مطالب سايتش كار كرده كلي زحمت كشيده . براي چي شما ميخواي اين كار رو بكني؟:عصبانی:

com.mohsen
یک شنبه 25 دی 1390, 15:43 عصر
این یه نمونه بود آقای عزیز.چون rss نمونه نداشتم rss آماده خبری گذاشتم.
2تا سایت دارم که یکیش rss داره و می خوام آخرین اخبار تکنولوژی که تو سایت اصلیم هست تو سایت فرعی هم نشون بدم.
یه مهندس کامپیوتر باید از قانون کپی رایت پیروی کنه.ما خودمون این کارو نکنیم چه انتظاری از بقیه داریم

idea0098
دوشنبه 03 مهر 1391, 15:35 عصر
دوستان اگر بخواهیم از آخرین ارسال های یک سایتی که rss نداره باخبر بشیم و بخواهیم rss بسازیم باید چکار کنیم ؟
ما به دیتابیس دسترسی نداریم
می خواهیم برای هر سایتی مخصوصا سایت های دولتی rss بسازیم
اگر بتونید یک اسکریپت و یا ساتی معرفی کنید ممنون میشم