silverstripe-framework/docs/en/02_Developer_Guides/11_Integration/How_Tos/embed_rss.md
2017-08-07 14:01:38 +12:00

1.4 KiB

title: Embed an RSS Feed

Embed an RSS Feed

RestfulService can be used to easily embed an RSS feed from a site. In this How to we'll embed the latest weather information from the Yahoo Weather API.

First, we write the code to query the API feed.

mysite/code/Page.php

	public function getWellingtonWeather() 
	{
		$fetch = new RestfulService(
			'https://query.yahooapis.com/v1/public/yql'
		);
		
		$fetch->setQueryString([
			'q' => 'select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="Wellington, NZ")'
		]);
		
		// perform the query
		$conn = $fetch->request();

		// parse the XML body
		$msgs = $fetch->getValues($conn->getBody(), "results");

		// generate an object our templates can read
		$output = new ArrayList();

		if($msgs) {
			foreach($msgs as $msg) {
				$output->push(new ArrayData([
					'Description' => Convert::xml2raw($msg->channel_item_description)
				]));
			}
		}

		return $output;
	}

This will provide our Page template with a new WellingtonWeather variable (an ArrayList). Each item has a single field Description.

mysite/templates/Page.ss


	<% if WellingtonWeather %>
	<% loop WellingtonWeather %>
		$Description
	<% end_loop %>
	<% end_if %>