5

特定の (またはすべての) アイテムに複数のレイアウトを使用することはできますか? たとえば、いくつかのアイテムがあり、それに 2 つの異なるレイアウトを適用したいとします。1 つは緑の背景、もう 1 つは青の背景 (ただし)。そして、それらを出力ディレクトリの 2 つの異なるフォルダー (v1 と v2 など) にコンパイルしたいと考えています。

ルールとコンパイル ブロックをいじっていましたが、これがどのように機能するのかわかりませんでした。すべての項目はコンパイル プロセス中に 1 回だけコンパイルされるため、1 回目は layout1 で、2 回目は layout2 でコンパイルするように nanoc に指示することはできません。このように sth を試しましたが、出力ファイルが壊れてしまいました。

compile '*' do
  if item.binary?
    # don’t filter binary items
  else
    filter :erb
    layout 'layout1'
    layout 'layout2'
  end
end

私が自分自身を明確にし、誰かが助けてくれることを願っています。

thx、タックス

4

1 に答える 1

9

アイテム表現は、この目的のために意図されています。次のように、デフォルトの表現と代替の表現など、2 つの異なる表現を作成し、それらにコンパイルとルーティングの規則を適用できます。

# 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
于 2011-08-27T07:30:37.320 に答える