vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   RSS reader to display more the 1 forum RSS feed (https://vborg.vbsupport.ru/showthread.php?t=285746)

Popa Andrei 07-20-2012 07:23 AM

RSS reader to display more the 1 forum RSS feed
 
PHP Code:

<?php
// ######################################################
// ## configuration
// ##
// ## $rss_file= 'http://www.vbulletin.com/forum/external.php?type=rss';
// ## Adjust this variable to point to your RSS feed
 
$rss_file 'link here';
    
// ## configuration end
// ######################################################
// ## Do not touch code below!
    
$max_items 5;
$item_count 0;    
$is_item false;
$tag '';
$title '';
$description '';
$link '';


echo 
'<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<style type="text/css">
A:link {text-decoration: none; color: #FB7800; font-weight:bold;}
A:visited {text-decoration: none; color: #FB7800; font-weight:bold;}
A:active {text-decoration: none; color: #FB7800; font-weight:bold;}
A:hover {text-decoration: underline; color: red; font-weight:bold;}
</style>
</head>
<body>'
;
  
function 
character_data($parser$data)
{
    global 
$is_item$tag$title$description$link $date;
    if (
$is_item)
    {
        switch (
$tag)
        {
            case 
"TITLE":
            
$title .= $data;
            break;
            case 
"DESCRIPTION":
            
$description .= $data;
    
            break;
            case 
"LINK":
            
$link .= $data;
            break;
            
            case 
"PUBDATE":
            
$date .= $data;
            break;
        }
    }
}
    
function 
begin_element($parser$name)
{
    global 
$is_item$tag;
    if (
$is_item)
    {
        
$tag $name;
    }
    else if (
$name == "ITEM")
    {
        
$is_item true;
    }
}
    
function 
end_element($parser$name)
{
    global 
$is_item$title$description$link$rss_output$date;
    if (
$name == "ITEM")
    {
        global 
$item_count$max_items;
        
$item_count++;
        if (
$item_count <= $max_items)
        {
        
$rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'>
                            <tr>
                                <td style='padding-left:15px;' align='left'><p><a href='"
.trim($link)."' target=\"_blank\">".htmlspecialchars(trim($title))."</a></p></td>
                            </tr>
                            <tr>
                            <td><p style='color:#95BEDA;'>Posted "
.$date."</p></td>
                            </tr>
                            <tr>
                                <td><p style='color:#70CCA0'>" 
htmlspecialchars(trim($description)) . "</p></td>
                            </tr>
                        </table>"
;
        
$title "";
        
$description "";
        
$link "";
        
$date "";
        
$is_item false;
        }
    }
}
    
    
$parser xml_parser_create();
    
xml_set_element_handler($parser"begin_element""end_element");
xml_set_character_data_handler($parser"character_data");
$fp fopen($rss_file,"r");
    
while (
$data fread($fp4096))
{
    
xml_parse($parser$datafeof($fp));        
}
    
fclose($fp);
xml_parser_free($parser);

echo 
'</body>
</html>'
;
?>


i want to make it like

PHP Code:

$rss_file 'link here';
[
COLOR="Red"]$rss_file2 'link  2 here';[/COLOR


Can someone help me,i have no ideea about php scripting.
Thank you.

Simon Lloyd 07-20-2012 08:06 AM

I haven't changed my core files, what i have done is add an rss link in each forums description like this
HTML Code:

http://www.mysite.com/forum/external.php?type=rss2&forumids=40

Popa Andrei 07-20-2012 08:13 AM

well that wont be ussefull since i want to disaply data separate on the custom HTML page i have.

kh99 07-20-2012 11:36 AM

Try this:

PHP Code:

<?php
// ######################################################
// ## configuration
// ##
// ## $rss_file= 'http://www.vbulletin.com/forum/external.php?type=rss';
// ## Adjust this variable to point to your RSS feed
 
$rss_files[] = array(
                      array(
url => 'link 1 here'max => 5),
                      array(
url => 'link 2 here'max => 10),
                   );
    
// ## configuration end
// ######################################################
// ## Do not touch code below!
    
echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<style type="text/css">
A:link {text-decoration: none; color: #FB7800; font-weight:bold;}
A:visited {text-decoration: none; color: #FB7800; font-weight:bold;}
A:active {text-decoration: none; color: #FB7800; font-weight:bold;}
A:hover {text-decoration: underline; color: red; font-weight:bold;}
</style>
</head>
<body>'
;
  
function 
character_data($parser$data)
{
    global 
$is_item$tag$title$description$link $date;
    if (
$is_item)
    {
        switch (
$tag)
        {
            case 
"TITLE":
            
$title .= $data;
            break;
            case 
"DESCRIPTION":
            
$description .= $data;
    
            break;
            case 
"LINK":
            
$link .= $data;
            break;
            
            case 
"PUBDATE":
            
$date .= $data;
            break;
        }
    }
}
    
function 
begin_element($parser$name)
{
    global 
$is_item$tag;
    if (
$is_item)
    {
        
$tag $name;
    }
    else if (
$name == "ITEM")
    {
        
$is_item true;
    }
}
    
function 
end_element($parser$name)
{
    global 
$is_item$title$description$link$rss_output$date;
    if (
$name == "ITEM")
    {
        global 
$item_count$max_items;
        
$item_count++;
        if (
$item_count <= $max_items)
        {
        
$rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'>
                            <tr>
                                <td style='padding-left:15px;' align='left'><p><a href='"
.trim($link)."' target=\"_blank\">".htmlspecialchars(trim($title))."</a></p></td>
                            </tr>
                            <tr>
                            <td><p style='color:#95BEDA;'>Posted "
.$date."</p></td>
                            </tr>
                            <tr>
                                <td><p style='color:#70CCA0'>" 
htmlspecialchars(trim($description)) . "</p></td>
                            </tr>
                        </table>"
;
        
$title "";
        
$description "";
        
$link "";
        
$date "";
        
$is_item false;
        }
    }
}
    

foreach (
$rss_files AS $feed)
{
    
$max_items $feed['max'];
    
$item_count 0;    
    
$is_item false;
    
$tag '';
    
$title '';
    
$description '';
    
$link '';

    
$parser xml_parser_create();
    
    
xml_set_element_handler($parser"begin_element""end_element");
    
xml_set_character_data_handler($parser"character_data");
    
$fp fopen($feed['url'],"r");
    
    while (
$data fread($fp4096))
    {
        
xml_parse($parser$datafeof($fp));        
    }
    
    
fclose($fp);
    
xml_parser_free($parser);

    
// You might want to echo some html here if you want to separate the feeds.
    // ex. echo '<br />';
}
echo 
'</body>
</html>'
;
?>


Popa Andrei 07-21-2012 03:18 AM

tryed it but now it doesent display any data.
BTW this is how it output`s the feed
PHP Code:

include_once ('rss.php');
echo 
$rss_output


kh99 07-21-2012 09:59 AM

Oh, sorry. Near the top, "$rss_files[] = array( " should be:

Code:

$rss_files = array(

The script you originally posted outputs some code using "echo" - if you're using this in a vb page then it looks like you'd probably just want to remove those parts.

Popa Andrei 07-21-2012 01:17 PM

This is my current file

PHP Code:

<?php 
// ###################################################### 
// ## configuration 
// ## 
// ## $rss_file= 'http://www.vbulletin.com/forum/external.php?type=rss'; 
// ## Adjust this variable to point to your RSS feed 

$rss_files[] = array( 
                      
url => 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=18'max => 5
                      
url => 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=48'max => 5
                   
); 
     
// ## configuration end 
// ###################################################### 
// ## Do not touch code below! 
     
echo '<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title></title> 
<style type="text/css"> 
A:link {text-decoration: none; color: #FB7800; font-weight:bold;} 
A:visited {text-decoration: none; color: #FB7800; font-weight:bold;} 
A:active {text-decoration: none; color: #FB7800; font-weight:bold;} 
A:hover {text-decoration: underline; color: red; font-weight:bold;} 
</style> 
</head> 
<body>'

   
function 
character_data($parser$data

    global 
$is_item$tag$title$description$link $date
    if (
$is_item
    { 
        switch (
$tag
        { 
            case 
"TITLE"
            
$title .= $data
            break; 
            case 
"DESCRIPTION"
            
$description .= $data
     
            break; 
            case 
"LINK"
            
$link .= $data
            break; 
             
            case 
"PUBDATE"
            
$date .= $data
            break; 
        } 
    } 

     
function 
begin_element($parser$name

    global 
$is_item$tag
    if (
$is_item
    { 
        
$tag $name
    } 
    else if (
$name == "ITEM"
    { 
        
$is_item true
    } 

     
function 
end_element($parser$name

    global 
$is_item$title$description$link$rss_output$date
    if (
$name == "ITEM"
    { 
        global 
$item_count$max_items
        
$item_count++; 
        if (
$item_count <= $max_items
        { 
        
$rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'> 
                            <tr> 
                                <td style='padding-left:15px;' align='left'><p><a href='"
.trim($link)."' target=\"_blank\">".htmlspecialchars(trim($title))."</a></p></td> 
                            </tr> 
                            <tr> 
                            <td><p style='color:#95BEDA;'>Posted "
.$date."</p></td> 
                            </tr> 
                            <tr> 
                                <td><p style='color:#70CCA0'>" 
htmlspecialchars(trim($description)) . "</p></td> 
                            </tr> 
                        </table>"

        
$title ""
        
$description ""
        
$link ""
        
$date ""
        
$is_item false
        } 
    } 

     

foreach (
$rss_files AS $feed

    
$max_items $feed['max']; 
    
$item_count 0;     
    
$is_item false
    
$tag ''
    
$title ''
    
$description ''
    
$link ''

    
$parser xml_parser_create(); 
     
    
xml_set_element_handler($parser"begin_element""end_element"); 
    
xml_set_character_data_handler($parser"character_data"); 
    
$fp fopen($feed['url'],"r"); 
     
    while (
$data fread($fp4096)) 
    { 
        
xml_parse($parser$datafeof($fp));         
    } 
     
    
fclose($fp); 
    
xml_parser_free($parser); 

    
// You might want to echo some html here if you want to separate the feeds.
    // ex. echo '<br />'; 

echo 
'</body> 
</html>'

?>

And here the data is displayed http://cabal.elitegamers.co

As you may se in the page only the second rrs feed is loaded.
And i would like to display them separated like
PHP Code:

echo $rss_output
echo 
$rss_output2


Thank you for your intereset in helping me untill now.I much appreciate it.

Popa Andrei 07-22-2012 09:34 PM

bump

kh99 07-23-2012 01:45 PM

The config part at the top should be:

Code:

$rss_files = array(
                      array('url' => 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=18', 'max' => 5),
                      array('url' => 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=48', 'max' => 5)
                  );


If you really want a separate variables for each feed it will require more changes, but you shouldn't really need that because if you want them separated in some way, you can add some html inside the loop.

Popa Andrei 07-23-2012 10:31 PM

Well that worked.Thank you very much.
Now can you tell me how to separate them in the loop?
Thank you again.


All times are GMT. The time now is 07:55 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01253 seconds
  • Memory Usage 1,881KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)bbcode_html_printable
  • (6)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete