An index of posts for Nanoc 4-blog
Let's implement a simple side-menu containing the content items on our site, an index of posts.
After reading nanoc.ws and stoneship -repos on github, a lot of sillyness with a separate sidebar -layout and html - and couple of hours of trial...
I finally have the insight. First: I moved all the posts into /content/posts/ -directory, and the javascript and css into /content/res/. I Think this may be a good approach for many blog-sites. It may make rendering and filtering the content easier.
Then, added the template below to layouts/default.html - to render a link-list to the posts into the sidemenu, sorted by datetime, :
<ul>
<li>
<a href="./">Home</a>
</li>
<% @uitems = @items.find_all('/posts/*').sort_by {|i| i[:datetime] } %>
<% @uitems.reverse_each do |item| %>
<li>
<a href=".<%= item.path %>"><%= item[:title] %></a>
</li>
<% end %>
</ul>
And then I added a filter :erb in Rules, so that the compile rule for posts is:
compile '/posts/*.html' do filter :erb write item.identifier.to_s end
As you can see on this page (to the right) - it works, and also sorts the items in reverse date order, but crashes if the items do not contain datetime-field in the yml-header. One could also use some other yml-field for sorting, even add a sort-index -field used only for sorting within a erb template.
Well it that wasn't as smooth and pleasant and super quick as I had hoped for 8). - Its the usual: the concepts and ideas behind a solution are bit of "hebrew" to me. Well at least I have a working content-template, time to polish the sidemenu css-styles.