您可以在Rules
文件中使用预处理块来动态生成新的项目。下面是一个预处理块示例,其中添加了一个新项目:
preprocess do
items << Nanoc::Item.new(
"some content here",
{ :attributes => 'here', :awesomeness => 5000 },
"/identifier/of/this/item")
end
如果您想要每个标签的页面,首先需要收集所有的标签。我使用set进行此操作,因为我不希望出现重复:
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/* /创建特定的编译规则,以便使用“标签”布局进行呈现,该布局将获取:tag属性的值,查找所有具有此标签的项目并在列表中显示它们。该布局大致如下:
<h1><%= @item[:tag] %></h1>
<ul>
<% items_with_tag(@item[:tag]).each do |i| %>
<li><%= link_to i[:title], i %></li>
<% end %>
</ul>
那么,总体来说,这就是你想要的内容!
tag.downcase
或者其他类似操作来进行标签转换。 - bobthecow