新しいアイテムを動的に生成するために、Rules
ファイルに前処理ブロックを使用することができます。ここでは単一の新しいアイテムが追加される前処理ブロックの例です:
preprocess do
items << Nanoc::Item.new(
"some content here",
{ :attributes => 'here', :awesomeness => 5000 },
"/identifier/of/this/item")
end
あなたは、各タグのページをしたい場合は、あなたが最初にすべてのタグを収集する必要があります。
require 'set'
tags = Set.new
items.each do |item|
item[:tags].each { |t| tags.add(t.downcase) }
end
最後に、すべてのタグをループをし、それらのアイテムを生成します:私は、私は重複をしたくないので、セットでこれをやっている
tags.each do |tag|
items << Nanoc::Item.new(
"",
{ :tag => tag },
"/tags/#{tag}/")
end
さて、あなたは特定のコンパイルルールを作成することができます/ tags/* /のために:タグ属性の値をとり、このタグを持つすべての項目を見つけてリストに表示する、 "tags"レイアウトを使ってレンダリングされるようにします。そのレイアウトは、次のようになります。
<h1><%= @item[:tag] %></h1>
<ul>
<% items_with_tag(@item[:tag]).each do |i| %>
<li><%= link_to i[:title], i %></li>
<% end %>
</ul>
そして、それはあなたの望むものでなければなりません!
大変ありがとうございます:) – user1758162
一貫性のないタグを正規化すると、ここでは「重複」となります。大文字と小文字を区別しないファイルシステムを使用すると、さまざまな混乱を招く可能性がありますこの線。 'tag.downcase'か何かを最初に実行したときの頭痛を覚悟してください。 – bobthecow
これはすばらしい答えです。それはドキュメント@ddfreyne;にあるはずです)。 –