2011-08-23 5 views
5

È possibile utilizzare più layout per uno specifico (o tutti) articoli? Ad esempio, ho un paio di elementi e voglio applicare due layout diversi ad esso. Uno con un verde e uno con uno sfondo blu (comunque). E voglio compilarli in due diverse cartelle nella mia directory di output (ad esempio v1 e v2).nanoc e layout multipli

Stavo giocando con le regole ei blocchi di compilazione, ma non riuscivo a capire come potesse funzionare. Poiché ogni elemento viene compilato una sola volta durante il processo di compilazione, non posso dire a nanoc di compilarlo la prima volta con layout1 e la seconda volta con layout2. Ho provato sth in questo modo, ma ha portato a file di output non funzionanti.

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

Spero di essere stato chiaro e che qualcuno possa aiutare.

thx, Tux

risposta

9

rappresentazioni articolo è destinato a questo scopo. Puoi creare due diverse rappresentazioni, ad es. quello predefinito e uno alternativo, quindi applica loro regole di compilazione e instradamento, come segue:

# 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