Nanoc и несколько макетов - PullRequest
       32

Nanoc и несколько макетов

5 голосов
/ 23 августа 2011

возможно ли использовать несколько макетов для определенного (или всех) элемента (ов)? Например, у меня есть пара предметов, и я хочу применить к ним два разных макета. Один с зеленым, а другой с синим фоном (однако). И я хочу скомпилировать их в две разные папки в моей выходной директории (например, v1 и v2).

Я играл с правилами и блоками компиляции, но я не мог понять, как это может работать. Поскольку каждый элемент компилируется только один раз в процессе компиляции, я не могу сказать, чтобы nanoc скомпилировал его первый раз с layout1 и второй раз с layout2. Я попробовал что-то подобное, но это привело к повреждению выходных файлов.

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

Надеюсь, я ясно дал понять, и кто-нибудь может помочь.

ТНХ, пингвин

1 Ответ

9 голосов
/ 27 августа 2011

Представления предметов предназначены для этой цели.Вы можете создать два разных представления, например, одно по умолчанию и альтернативное, а затем применить к ним правила компиляции и маршрутизации, например:

# 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
...