2011-08-23 12 views
5

क्या किसी विशिष्ट (या सभी) आइटम के लिए एकाधिक लेआउट का उपयोग करना संभव है? उदाहरण के लिए, मेरे पास कुछ आइटम हैं, और मैं इसे दो अलग-अलग लेआउट लागू करना चाहता हूं। एक हरा और एक नीली पृष्ठभूमि के साथ एक (हालांकि)। और मैं उन्हें अपनी आउटपुट निर्देशिका में दो अलग-अलग फ़ोल्डरों में संकलित करना चाहता हूं (उदा। V1 और v2)।नैनोक और एकाधिक लेआउट

मैं नियमों और संकलन ब्लॉक के साथ खेल रहा था, लेकिन मुझे पता नहीं लगा कि यह कैसे काम कर सकता है। चूंकि, प्रत्येक आइटम संकलन प्रक्रिया के दौरान केवल एक बार संकलित हो जाता है, मैं लेआउट 1 के साथ पहली बार संकलन और लेआउट 2 के साथ दूसरी बार संकलित करने के लिए नैनोक नहीं बता सकता। मैंने इस तरह sth कोशिश की, लेकिन यह टूटी आउटपुट फाइलों के लिए नेतृत्व किया।

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

आशा है कि मैंने स्वयं को स्पष्ट कर दिया है और कोई भी मदद कर सकता है।

THX, टक्स

उत्तर

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 
संबंधित मुद्दे