Nanoc和多个布局

5
是否可以为特定(或所有)项目使用多个布局?
例如,我有几个项目,我想将两种不同的布局应用于它。一种绿色背景和另一种蓝色背景。并且我想将它们编译到输出目录的两个不同文件夹中(例如 v1 和 v2)。
我尝试了规则和编译块,但是我无法弄清楚如何使其工作。因为,在编译过程中每个项目仅编译一次,我不能告诉 nanoc 在第一次使用 layout1 编译它,第二次使用 layout2 编译它。 我尝试了类似这样的东西,但导致输出文件损坏。
compile '*' do
  if item.binary?
    # don’t filter binary items
  else
    filter :erb
    layout 'layout1'
    layout 'layout2'
  end
end

希望我表达清楚了,希望有人能够帮忙。谢谢,tux。
1个回答

9

项目表示是为此目的而设计的。您可以创建两种不同的表示,例如默认表示和替代表示,然后对它们应用编译和路由规则,如下所示:

# default rep, although you can pass
# :rep => :default explicitly too
compile '/stuff/*/' do
  filter :erb
  layout 'default'
end

route '/stuff/*/' do
  # /stuff/foo/ -> /boring/stuff/foo/
  # Just an example; you probably need something else
  '/boring' + item.identifier
end

compile '/stuff/*/', :rep => :special do
  filter :erb
  layout 'special' # this is different
end

route '/stuff/*/', :rep => :special do
  # /stuff/foo/ -> /special/stuff/foo/
  # Again, just an example
  '/special' + item.identifier
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接