Versions:

This document contains information for an outdated version and may not be maintained any more. If some of your projects still use this version, consider upgrading as soon as possible.

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(array(
        '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(array(
                '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 %>

Was this article helpful?