nanoc と複数のレイアウト
概要
特定の(またはすべての)アイテムに複数のレイアウトを使用することはできますか? たとえば、いくつかのアイテムがあり、それに 2 つの異なるレイアウトを適用したいとします。 1 つは緑の背景、もう 1 つは青の背景です (ただし)。そして、それらを出力ディレクトリ内の 2 つの異なるフォルダー (例: v1 と v2) にコンパイルしたいと考えています。
ルールとコンパイルブロックをいじっていましたが、これがどのように機能するのか理解できませんでした。すべての項目はコンパイル プロセス中に 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、 タキシード
解決策
項目表現はこの目的を目的としています。 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