gpt4 book ai didi

ruby - nanoc中如何为每个标签生成页面

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:37 24 4
gpt4 key购买 nike

我是 nanoc 的新手,但我仍在探索它。我能够准备好我的网站,它看起来不错,功能也很好。但我需要有一个标签区域。我能够通过

实现这一目标
<%= tags_for(post, params = {:base_url => "http://example.com/tag/"}) %>

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

我可以设置一个布局来做到这一点。但是我应该使用什么样的逻辑呢?我还需要 helper 吗?

最佳答案

您可以在Rules 文件中使用预处理 block 来动态生成新项目。这是添加单个新项目的预处理 block 示例:

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/*/创建一个特定的编译规则,以便使用“标签”布局呈现它,它将采用 :tag 属性的值,找到所有带有此标签的项目并显示他们在一个列表中。该布局看起来有点像这样:

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

从广义上讲,这应该就是您想要的!

关于ruby - nanoc中如何为每个标签生成页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com