如何为nanoc中的每个标记生成页面

我是nanoc的新手,我仍然在找周围的人。 我能够准备好我的网站,它看起来很好,function也很好。 但我需要一个标签区域。 我能够实现这一目标

 "http://example.com/tag/"}) %> 

但是如何为标签生成页面? 因此,例如,有一个名为“NFL”的标签,因此每次用户点击它时,他/她都应该被引导到http://example.com/tag/nfl其中包含与NFL相对应的文章列表。

我可以设置一个可以做到这一点的布局。 但那我应该使用什么样的逻辑呢? 我也需要帮助吗?

您可以在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”布局进行渲染,该布局将采用:tag属性的值,查找具有此标记的所有项目并在名单。 那个布局看起来有点像这样:

 

<%= @item[:tag] %>

    <% items_with_tag(@item[:tag]).each do |i| %>
  • <%= link_to i[:title], i %>
  • <% end %>

从广义上说,应该是你想要的!