Multiple Blogs with Middleman
Changing things up for 2017 #
You might have noticed that I added another section to my website, called
"Thoughts". This is done by adding another blog to Middleman, so now I have
two blogs within the same page. Using Middleman, this is relatively
straightforward, not much fiddling required at all.
config.rb
#
The first step is to add the second blog to the config.rb
, so that it should
look something like this:
# Blog Configuration
activate :blog do |blog|
blog.name = "cats"
blog.prefix = 'cats'
blog.permalink = ':year/:month/:title.html'
blog.sources = ':year/:month/:day-:title.html'
blog.summary_separator = //
blog.year_link = '{year}.html'
blog.paginate = true
blog.per_page = 10
blog.page_link = '{num}'
blog.layout = 'layouts/post'
end
activate :blog do |blog|
blog.name = 'dogs'
blog.prefix = 'dogs'
blog.permalink = ':year/:month/:title.html'
blog.sources = ':year/:month/:day-:title.html'
blog.summary_separator = /READMORE/
blog.year_link = '{year}.html'
blog.paginate = true
blog.per_page = 10
blog.page_link = '{num}'
blog.layout = 'layouts/post'
end
This tell Middleman that there will be two blogs, so you can structure your
project accordingly. For me, this means having separate folders for each of
the blog middleman/dogs
and middleman/cats
.
Organizing the partials #
In order for the pages to be created according to each of the blogs, you will
either have to put the blog name in the frontmatter like so
---
title: Cats gone wild
blog: cats
date: 2017-01-03 23:18 UTC
tags:
---
The other option is to have the blog helper function reference the blog name,
<% blog('cats').articles.each do |article| %>
<article>
<h2>
<a href="<%= article.url %>"><%= article.title %></a>
<time><%= article.date.strftime('%Y') %></time>
</h2>
<a href="<%= article.url %>">Read more</a>
</article>
<% end %>
Writing new articles #
And the last step is to tell Middleman which blog you want to create a new
article for. This is done by using the --blog
flag like so:
middleman article --blog=cats "Cats are better than dogs"
And that's it, nice and simple with Middleman