RSS-Feeds

To add a RSS-Feed to your blog is applicable to pretty much any part of your Kirby-flavoured site, so if you want to rssify your site, this is the way to go.

Adding an invisible feed page

Do you remember the page setup for our blog? We've got visible pages (with numbers prepended) for each article and a blog.txt so far. No we add an invisible feed folder, so later our feed will be available at http://yourdomain.com/blog/feed but it won't appear in any menu.

Inside the feed folder add a feed.txt, so we can build a specific feed.php template later.

In your feed.txt you can add some basic information about your feed. Here's mine:

Title: Blog Feed
----
Description: The latest updates from our blog
----

The template

First of all please download the feed plugin and add the entire feed plugin folder to /site/plugins. It's no hokuspokus, just a simple wrapper to make feed generation easier.

With this plugin building the final feed template is very, very straight forward:

site/templates/feed.php

Add a file named feed.php to your site/templates folder. Do you remember that we named the text file inside our blog/feed folder feed.txt? By providing a feed.php template we make sure that this template will be used instead of the default.php template when we open http://yourdomain.com/blog/feed

All we need to do now is to get the right set of items for our feed and to embed our feed snippet. Here is how it is done:

<?php

echo page('blog')->children()->visible()->flip()->limit(10)->feed(array(
  'title'       => $page->title(),
  'description' => $page->description(),
  'link'        => 'blog',
));

?>

In the first line we search for the latest articles in our blog. We find our blog page first, get all the visible children (all our articles), flip them to get the latest first and finally we make sure to only get the last 10 articles by using ->limit(10). Pretty easy, right?

Afterwards we call the new feed method, which is being created by the plugin. With the added options we finalize the feed and that's it.

Visiting your feed

After all that hard work you should finally visit your feed and see if all went as expected. Go to http://yourdomain.com/blog/feed in your browser or feed reader.

You probably want to link to your feed somewhere. The most simple way is to include a link in your blog template somewhere – maybe with a nice little RSS-icon. You can do that by using the handy url() helper function again:

<a href="<?= url('blog/feed') ?>">Subscribe to our RSS-feed</a>

Another good way is to add the feed to the header of your site, so browsers and feed readers can automatically detect it:

<link rel="alternate" type="application/rss+xml" href="<?= url('blog/feed') ?>" title="Blog Feed" />

If you want to make sure that the title="" attribute is filled dynamically with the content of the title field in your feed.txt, do it like this:

… title="<?= html($pages->find('blog/feed')->title()) ?>" …

Multiple feeds

With bigger site projects you probably get to the point where you need multiple feeds for different parts of your site. A good way to do this is by adding multiple feed templates. You probably would call the content file for your blog feed blogfeed.txt instead of feed.txt so your template for your blog feed would be blogfeed.php. Then you can easily just add another feed for your projects for example by having a content folder content/projects/feed with a projectfeed.txt file and a projectfeed.php template file. By embedding the feed snippet over and over again your template code is staying very small and maintainable, so it's really up to you how many feeds you want to add.