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've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

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   3084 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