Awesome
RSSClientBundle
Service for provide RSS client in your website, you can automatically add content to your site from your favorite information providers.
Bundle Installation
Get the bundle
Add to your /composer.json
file :
"require": {
...
"desarrolla2/rss-client-bundle": "2.*"
},
And make
composer update
Register the bundle
// app/AppKernel.php
<?php
public function registerBundles()
{
return array(
// ...
new Desarrolla2\Bundle\RSSClientBundle\RSSClientBundle(),
);
}
Using RSS Bundle
Configure providers
You need edit your config.yml and add the rss routes you want to get.
# app/config/config.yml
rss_client:
cache:
ttl: 3600 # This is the default
channels:
channel_name1:
- 'http://www.osukaru.es/feed/'
- 'http://desarrolla2.com/feed/'
channel_name2:
- 'http://feeds.feedburner.com/symfony/blog'
- 'http://www.symfony.es/feed/'
The cache option is completely optional. If not specified the shown default take effect.
Optionally: configure custom processors
If you want to use custom processors to extract additional information from a feed, also add the "processors" key pointing to services that implement the ProcessorInterface
.
rss_client:
processors: ["my_service_id", "my_other_service_id"]
In your controller
Retrieve the service and fetch the content.
<?php
class NewsController extends Controller
{
/**
* Renders latest news
*
* @return array
* @Route("/noticias", name="news_index")
* @Template()
*/
public function indexAction()
{
$this->client = $this->get('rss_client');
return array(
'feeds' => $this->client->fetch('channel_name1'),
);
}
}
In your view
Render the content for your users
{% block content %}
<section>
{% for feed in feeds %}
<article>
<header>
<a href="{{ feed.link }}" target="_blank">{{ feed.title }}</a>
<time>{{ feed.pubDate | date('d/m/Y H:i') }}</time>
</header>
<p>{{ feed | raw }}</p>
</article>
{% else %}
<p>Not news :(</p>
{% endfor %}
</section>
{% endblock %}
Contact
You can contact with me on twitter.
More Info
See RSSClient.