2011-08-23 3 views
5

특정 (또는 전체) 항목에 대해 여러 레이아웃을 사용할 수 있습니까? 예를 들어, 몇 가지 항목이 있고 두 개의 다른 레이아웃을 적용하려고합니다. 하나는 녹색이고 하나는 파란색 배경입니다 (그러나). 그리고 출력 디렉토리 (예 : v1 및 v2)의 서로 다른 두 폴더에서 파일을 컴파일하려고합니다.nanoc 및 여러 레이아웃

나는 규칙과 컴파일 블록을 가지고 놀고 있었지만 이것이 어떻게 작동 하는지를 알 수 없었다. 모든 항목은 컴파일 과정에서 한 번만 컴파일되기 때문에 layout1을 처음으로 컴파일하고 layout2를 사용하여 두 번째 컴파일하도록 nanoc에 지시 할 수 없습니다. 나는 이렇게 sth 시도했지만 고장 출력 파일을 이끌었다.

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

희망 나는 분명히했고 누군가 도와 줄 수 있습니다.

들으, 턱시도는

답변

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