PDA

View Full Version : help with creating an rss feed aggregator page


sweeps78
12-03-2011, 09:13 PM
Hi,

I'm trying to create a page inside my forums that simply displays a single RSS feed (title & body). I'm running into trouble trying to figure out how to use some of vBulletin's existing classes on my custom page. I'm pretty much a n00b to the vBulletin architecture (and mostly to php as well) so I'm guessing the issue is something very fundamental. I've learned as much as I have from Lynne's awesome tutorial on building my own page and template and then hacking at vBulletin's CMS RSS Feed Widget.

Here's my page:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'trblog');
define('CSRF_PROTECTION', true);
// change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();
$rss = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('trblog',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');
require_once('./includes/class_rss_poster.php');
// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################



$feed = new vB_RSS_Poster($vbulletin);
$feed->fetch_xml('http://feeds.trossenrobotics.com/TrossenRoboticsBlog');

// TODO: Add config values for encoding behaviour
$feed->parse_xml(false, true, false, true);

// get rss elements
if ($rss['items'] = $feed->fetch_normalised_items())
{
$rss['title'] = $feed->xml_array['channel']['title'];
$rss['description'] = $feed->xml_array['channel']['description'];
$rss['link'] = $feed->xml_array['channel']['link'];

// check quantity
if (sizeof($rss['items']) > $config['max_items'])
{
$rss['more'] = true;
$rss['items'] = array_slice($rss['items'], 0, $config['max_items']);
}

//$rss['url'] = vB::$vbulletin->input->xss_clean_url($config['url']);
}


$navbits = construct_navbits(array('' => 'TR Blog'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'TR Blog';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('trblog');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>


and my template:

{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
<title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
{vb:raw headinclude}
{vb:raw headinclude_bottom}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>

<h2 class="blockhead">Title</h2>
<div class="blockbody">
<div class="blockrow">
Text

<!-- {vb:raw rss_description} -->

<vb:each from="rss_items" key="id" value="item">
<h4 ><a href="{vb:raw item.link}" target="_blank">{vb:raw item.title}</a></h4>

</vb:each>


</div>
</div>

{vb:raw footer}
</body>
</html>


BTW, the error that I'm getting at the moment is: Fatal error: Class 'vB' not found in /home/sandboxt/public_html/includes/class_rss_poster.php on line 421