مرجع پارسی MyBB
آموزش ایجاد rss نمایش خبر خوان اختصاصی - نسخه‌ی قابل چاپ

+- مرجع پارسی MyBB (https://community.mybbiran.com)
+-- انجمن: آرشیو (https://community.mybbiran.com/forum-128.html)
+--- انجمن: آرشیو انجمن های قدیمی (https://community.mybbiran.com/forum-129.html)
+---- انجمن: مای بی بی نسخه 1.6 (https://community.mybbiran.com/forum-83.html)
+----- انجمن: آموزش ها (https://community.mybbiran.com/forum-84.html)
+------ انجمن: سایر آموزش ها (https://community.mybbiran.com/forum-114.html)
+------ موضوع: آموزش ایجاد rss نمایش خبر خوان اختصاصی (/thread-14189.html)



آموزش ایجاد rss نمایش خبر خوان اختصاصی - salehkhan - ۱۳۹۲/۴/۱۲

با استفاده از اين آموزش ميتوانيد جديدترين اخبار مربوط به وب سايتها و وبلاگهاي دلخواه خودتان را درون صفحه يا سايت قرار بدهيد ! همچنين اين اسکريپت مناسب براي انجمن ها مي باشد که مي خواهند مطالب بخشي هايي از انجمن خودشان را در يک صفحه گلچين کرده و نمايش بدهند . همچنين اين آموزش به خاطر درخواست يکي از کاربران سايت قرار داده شده است .

يک پوشه ايجاد ايجاد کنيد به اسم rss و فايلهاي زير را ايجاد کرده و در آن قرار بدهيد !

در ابتدا يک فايل php تحت عنوان rsslib.php ايجاد کرده و کدهاي زير را در آن قرار بدهيد :

کد php:
<?php
/*
    RSS Extractor and Displayer
    (c) 2007-2010  Scriptol.com - Licence Mozilla 1.1.
    rsslib.php
    
    Requirements:
    - PHP 5.
    - A RSS feed.
    
    Using the library:
    Insert this code into the page that displays the RSS feed:
    
    <?php
    require_once("rsslib.php");
    echo RSS_Display("http://www.xul.fr/rss.xml", 15);
    ? >
    
*/

$RSS_Content = array();

function 
RSS_Tags($item$type)
{
        
$y = array();
        
$tnl $item->getElementsByTagName("title");
        
$tnl $tnl->item(0);
        
$title $tnl->firstChild->textContent;

        
$tnl $item->getElementsByTagName("link");
        
$tnl $tnl->item(0);
        
$link $tnl->firstChild->textContent;
        
        
$tnl $item->getElementsByTagName("pubDate");
        
$tnl $tnl->item(0);
        
$date $tnl->firstChild->textContent;        

        
$tnl $item->getElementsByTagName("description");
        
$tnl $tnl->item(0);
        
$description $tnl->firstChild->textContent;

        
$y["title"] = $title;
        
$y["link"] = $link;
        
$y["date"] = $date;        
        
$y["description"] = $description;
        
$y["type"] = $type;
        
        return 
$y;
}


function 
RSS_Channel($channel)
{
    global 
$RSS_Content;

    
$items $channel->getElementsByTagName("item");
    
    
// Processing channel
    
    
$y RSS_Tags($channel0);        // get description of channel, type 0
    
array_push($RSS_Content$y);
    
    
// Processing articles
    
    
foreach($items as $item)
    {
        
$y RSS_Tags($item1);    // get description of article, type 1
        
array_push($RSS_Content$y);
    }
}

function 
RSS_Retrieve($url)
{
    global 
$RSS_Content;

    
$doc  = new DOMDocument();
    
$doc->load($url);

    
$channels $doc->getElementsByTagName("channel");
    
    
$RSS_Content = array();
    
    foreach(
$channels as $channel)
    {
         
RSS_Channel($channel);
    }
    
}


function 
RSS_RetrieveLinks($url)
{
    global 
$RSS_Content;

    
$doc  = new DOMDocument();
    
$doc->load($url);

    
$channels $doc->getElementsByTagName("channel");
    
    
$RSS_Content = array();
    
    foreach(
$channels as $channel)
    {
        
$items $channel->getElementsByTagName("item");
        foreach(
$items as $item)
        {
            
$y RSS_Tags($item1);    // get description of article, type 1
            
array_push($RSS_Content$y);
        }
         
    }

}


function 
RSS_Links($url$size 15)
{
    global 
$RSS_Content;

    
$page "<ul>";

    
RSS_RetrieveLinks($url);
    if(
$size 0)
        
$recents array_slice($RSS_Content0$size 1);

    foreach(
$recents as $article)
    {
        
$type $article["type"];
        if(
$type == 0) continue;
        
$title $article["title"];
        
$link $article["link"];
        
$page .= "<li><a href=\"$link\">$title</a></li>\n";            
    }

    
$page .="</ul>\n";

    return 
$page;
    
}



function 
RSS_Display($url$size 15$site 0$withdate 0)
{
    global 
$RSS_Content;

    
$opened false;
    
$page "";
    
$site = (intval($site) == 0) ? 0;

    
RSS_Retrieve($url);
    if(
$size 0)
        
$recents array_slice($RSS_Content$site$size $site);

    foreach(
$recents as $article)
    {
        
$type $article["type"];
        if(
$type == 0)
        {
            if(
$opened == true)
            {
                
$page .="</ul>\n";
                
$opened false;
            }
            
$page .="<b>";
        }
        else
        {
            if(
$opened == false
            {
                
$page .= "<ul>\n";
                
$opened true;
            }
        }
        
$title $article["title"];
        
$link $article["link"];
        
$page .= "<li><a href=\"$link\">$title</a>";
        if(
$withdate)
        {
      
$date $article["date"];
      
$page .=' <span class="rssdate">'.$date.'</span>';
    }
        
$description $article["description"];
        if(
$description != false)
        {
            
$page .= "<br><span class='rssdesc'>$description</span>";
        }
        
$page .= "</li>\n";            
        
        if(
$type==0)
        {
            
$page .="</b><br />";
        }

    }

    if(
$opened == true)
    {    
        
$page .="</ul>\n";
    }
    return 
$page."\n";
    
}


?>

سپس يک فايل css تحت عنوان rss-style.css ايجاد کرده و کدهاي زير را در آن قرار بدهيد . اين فايل استايل محتويات فايل خروجي را نمايش مي دهد .

کد:
.rsslib
{
  font-family: tahoma, Georgia, Arial;
  font-size:90%;

}

.rsslib ul
{
  list-style-type: square;
}

.rsslib ul li
{
  margin-bottom:8px;
}

.rssdate, .rssdesc
{
  font-size: 90%;
  
}


سپس براي نمايش محتويات آخرين مطالب انجمن خودتان (mybb) بصورت زير اقدام کنيد :

يک فايل php به عنوان مثال rss01.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" xml:lang="en" dir="ltr" lang="en">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
base target="_blank">
<
title>نمايش خبرخوان</title>
<!---- 
start Loading ---->
<
script>
var 
DHTML = (document.getElementById || document.all ||document.layers);
function 
ap_getObj(name) {
if(
document.getElementById) {
return 
document.getElementById(name).style;}
else if (
document.all) {
return 
document.all[name].style; }
else if(
document.layers) {
return 
document.layers[name]; } }
function 
ap_showWaitMessage(div,flag) {
if (!
DHTML) return; var =ap_getObj(div); x.visibility = (flag) ? 'visible':'hidden' ;
if(!
document.getElementById) if(document.layersx.left=280/2; return true;}</script>
<
div id="waitDiv" style="border: 1px dotted ; POSITION:absolute;TOP:90px;RIGHT:400px;TEXT-ALIGN:center; visibility:hidden; width:272px;background-color:#FFFFFF
padding-left:4px; padding-right:4px;padding-top:1px; padding-bottom:1px"
>
<
p dir="rtl" style="margin-top: 5; margin-bottom:5">
<
font color="#0F4F86" face="Tahoma" style="font-size: 9pt">صفحه در حال بارگذاري
است
لطفا کمي صبر کنيد...</font></p><p dir="rtl" style="margin-top: 0">
<
font face="Tahoma"style="font-size: 8pt"><br> <img title="...در حال بارگذاري " src="http://tools.sepna.com/script/images/loading.gif" border="0"> <br>
<
font color="#0F4F86" face="Tahoma" style="font-size: 8pt"> ... Loading </font></a>
<
div style="display:none"> </div>
</
div><SCRIPTap_showWaitMessage('waitDiv',1)
</
SCRIPT>
<!--
finish Loading  -->
<
style>
p,legend,ul,input,label{
font-family:tahoma;
font-size 10pt;
}
text-decoration:none }
a:link    {color:blue;}
a:visited {color:navy;}
a:hover {background-color:#CC0000;color:#ffffff;-moz-border-radius:5px;-webkit-moz-border:5px;border-radius:5px;text-shadow:0 1px 1px #fff;}    
a:active {color:yellow;}
</
style>


</
head>
<
link type="text/css" href="rss-style.css" rel="stylesheet">

    
<
body>


<
fieldset dir=rtl class="rsslib" style="border: 1px solid #BCD7ED"> <legendآخرين مطالب</legend>

<?
php
    
require_once("rsslib.php");
    
$url "http://www.sepna.com/rss.php";
    echo 
RSS_Links($url30);
?> 

</fieldset>

<SCRIPT>
ap_showWaitMessage('waitDiv', 0)
</SCRIPT>

</body>
</html> 

در کد بالا بجاي آدرس سايت سپنا آدرس سايت خودتان را وارد کنيد.




کد:
$url = "http://www.sepna.com/rss.php";

کار تمام هست ما براي زيباتر کردن خروجي فايل از اسکريپت loading و همچنين براي باز شدن لينکها در صفحه جديد از کد زير استفاده کرديم :




کد:
<base target="_blank">

جهت تغيير دادن رنگ لينکها کدهاي استايل زير را ويرايش کنيد :




کد:
a { text-decoration:none } // لينکهاي عادي
a:link    {color:blue;} // رنگ لينکهاي معمولي
a:visited {color:navy;} // رنگ لينکهاي کليک شده
a:hover {background-color:#CC0000;color:#ffffff;-moz-border-radius:5px;-webkit-moz-border:5px;border-radius:5px;text-shadow:0 1px 1px #fff;}  // رنگ لينکها در هنگام رفتن ماوس
a:active {color:yellow;} // رنگ لينکهاي فعال شده

نمونه آنلاين :

http://tools.sepna.com/rss/rss01.php

راهنما و شيوه استفاده از خبرخوان براي يک موضوع دلخواه يا مورد نظر در انجمن :

يک فايل php به عنوان مثال rss02.php ايجاد کنيد و کدهايي که در بالا شرح داده شد را در آن قرار بدهيد فقط بجاي کدهاي زير :



کد:
$url = "http://www.sepna.com/rss.php";

کدهاي زير را قرار بدهيد :



کد:
$url = "http://www.sepna.com/syndication.php?fid=279";

نحوه ي پيدا کردن id يک انجمن براي قرار دادن در کد بالا :

فرض کنيد شما يک انجمن با نام تفريح و سرگرمي داريد که آدرسش شبيه لينک زير هست :

your-site.com/forum-561.html ==> يعني با کليک کردن بر روي اين لينک شما وارد تالار تفريح و سرگرمي مي شويد .
پس شماره ID اين انجمن 561 مي باشد که شما بايد آنرا در کد بالا قرار بدهيد تا مطالب مربوط به اين انجمن را براي شما در خبر خوان نمايش بدهد .

کد:
http://www.sepna.com/syndication.php?fid=561

نمايش خبرخوان : بجاي your-site.com آدرس سايت خودتان را بنويسيد .
کد:
http://www.your-site.com/rss/rss02.php

نمونه آنلاين :

http://tools.sepna.com/rss/rss02.php

منبع : http://www.sepna.com/thread-418.html


RE: آموزش ایجاد rss نمایش خبر خوان اختصاصی - ahmad_r55 - ۱۳۹۲/۴/۲۷

با سلام
پوشه rss را کجا قرار دهم


RE: آموزش ایجاد rss نمایش خبر خوان اختصاصی - sco1385 - ۱۳۹۲/۱۲/۲۳

با سلام
پوشه rss را کجا قرار دهیم؟


RE: آموزش ایجاد rss نمایش خبر خوان اختصاصی - Pars - ۱۳۹۲/۱۲/۲۳

هر که می خواهید قرار دهید. لینک rss در آنجا ساخته می شود.
به لینک نمونه ای که قرار دادن توجه کنید.