Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

External RSS


Go to End


6 Posts   2620 Views

Avatar
Mo

Community Member, 541 Posts

28 September 2009 at 1:29pm

Hi All,

Quick question, I want to add the most recent news story from a third party RSS feed to one of my templates. I am quite happpy to do this via SimpleXML, but I was wondering if SS has something builtin that might be more preferable to use?

Cheers,

Mo

Avatar
socks

Community Member, 191 Posts

28 September 2009 at 1:55pm

I just grabbed code from the Blog module (RSSWidget.php).

Attached Files
Avatar
bummzack

Community Member, 904 Posts

28 September 2009 at 6:30pm

Edited: 28/09/2009 6:31pm

Refactoring RSSWidget.php is probably a good solution. If you need more functionality, I'd probably use SimplePie (http://simplepie.org/) instead of parsing RAW XML using SimpleXML. It's a pretty neat php class for all your RSS/Atom Feed needs ;)

Avatar
Mo

Community Member, 541 Posts

30 September 2009 at 10:27am

Quick question. Has anyone tried to pull in the Silverstripe blog (http://www.silverstripe.org/blog/rss/)?

I have tried several different methods, they all result in a file not found error, or something similar?

Anyone know why?

Avatar
Willr

Forum Moderator, 5523 Posts

30 September 2009 at 3:38pm

How are you doing it?

We pull the ss.org blog feed fine from http://www.silverstripe.com/blog/.

Avatar
Mo

Community Member, 541 Posts

1 October 2009 at 3:51am

I got it working now, using recycled code from the blog module, as mentioned above:

function LatestSSNews() {
		$output = new DataObjectSet();
		
		include_once(Director::getAbsFile(SAPPHIRE_DIR . '/thirdparty/simplepie/SimplePie.php'));
		
		$t1 = microtime(true);
		$feed = new SimplePie('http://www.silverstripe.org/blog/rss', TEMP_FOLDER);
		$feed->init();
		if($items = $feed->get_items(0, 2)) {
			foreach($items as $item) {
				
				// Cast the Date
				$date = new Date('Date');
				$date->setValue($item->get_date());

				// Cast the Title
				$title = new Text('Title');
				$title->setValue($item->get_title());
				
				// Cast the description and strip
				$desc = new Text('Description');
				$desc->setValue(strip_tags($item->get_description()));

				$output->push(new ArrayData(array(
					'Title'			=> $title,
					'Date'			=> $date,
					'Link'			=> $item->get_link(),
					'Description'	=> $desc
				)));
			}
			return $output;
		}
	}

This works ok, I think the way I was trying to do it before was incorrect, I was trying to load it in using the RestfulService class, which didn't seem to work :s.

Mo