Service for provide RSS client in your website, you can automatically add content to your site from your favorite information providers.
Add to your /composer.json
file :
"require": {
...
"desarrolla2/rss-client-bundle": "2.*"
},
And make
composer update
// app/AppKernel.php
<?php
public function registerBundles()
{
return array(
// ...
new Desarrolla2\Bundle\RSSClientBundle\RSSClientBundle(),
);
}
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.
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"]
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'),
);
}
}
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 %}
You can contact with me on twitter.
See RSSClient.