2013-02-27 124 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि मानक कॉल द्वारा currentDesign.writeCssIncludes(pagecontext); में सीएसएस को क्या शामिल किया गया है, headlibs.jsp में पाया गया है। प्रलेखन बस कहा गया है कि यहवर्तमानडिज़ाइन.writeCssincludes में वास्तव में क्या शामिल है?

Convenience method that writes the CSS include strings to the response. 

क्या यह लगता है ऐसा करने के लिए को देखते हुए, यह /etc/designs/currentdesign.css जो बंद डिजाइन घटकों सीएसएस बनाया गया है, और /etc/designs/currentdesign/static.css शामिल होंगे, जो सिर्फ एक स्थिर फ़ाइल है। लेकिन क्या यह सब शामिल है?

विशेष रूप से, मैं अपने डिजाइन के हिस्से के रूप में क्लाइंटलिब-संसाधित सीएसएस फ़ाइल को शामिल करना चाहता हूं। एक तरीका यह मैन्युअल रूप से सीएसएस बाहर का निर्माण करना है करने के लिए शामिल हैं:

<link rel="stylesheet" href="<%= currentDesign.getPath() %>/myclientlib.css" /> 

लेकिन मुझे लगता है कि स्वचालित रूप से उत्पन्न हो, ताकि मेरे डिजाइनरों अलग डिजाइन के लिए अलग तरह से सीएसएस फ़ाइलों की संरचना का विकल्प होता है यह बताने के लिए पसंद करते हैं (यानी , "बेस" डिज़ाइन के लिए वे केवल static.css फ़ाइल के साथ ठीक हैं, लेकिन "फैंसी" डिज़ाइन के लिए वे कम सीएसएस का उपयोग करना चाहते हैं और फ़ाइलों को अधिक बारीक से तोड़ना चाहते हैं)। और डिजाइन-विशिष्ट सीएसएस जानकारी को उन घटकों के साथ रखना उपयोगी होगा, जिन्हें वे प्रभावित करते हैं, बल्कि उन्हें अलग करने की आवश्यकता होती है।

उत्तर

2

आप <cq:includeClientLib> tag का उपयोग कर सकते हैं, विषयों और/या श्रेणियों के साथ संयुक्त, सीएसएस के बिट्स मिश्रण और मिलान करने के लिए।

लेकिन आप इसे कुछ हद तक सीमित कर सकते हैं; उदाहरण के लिए, आप एक मीडिया विशेषता निर्दिष्ट नहीं कर सकते हैं। यदि आपको ऐसा करने की ज़रूरत है, या आपके डिज़ाइनर अपने सीएसएस को थीम/श्रेणियों के मॉडल के अनुरूप तरीके से नहीं बनाते हैं, तो आपकी फॉलबैक वह तकनीक है जिसे आपने अपने प्रश्न में पहचाना है, <link> का उपयोग कर सीधे।

अद्यतन

विषयों के बारे में एक उत्कृष्ट सवाल! मैंने उन्हें केवल गुजरने में उपयोग किया है।

आप /etc/designs/yourproject/clientlibs/themes के तहत default पर एक नया फ़ोल्डर/नोड जोड़कर एक थीम को परिभाषित कर सकते हैं।

आप <cq:includeClientLibs> टैग के साथ किसी विषय के लिए क्लाइंटलिब्स को खींच सकते हैं, शायद कुछ सशर्त तर्क के नियंत्रण में। उदाहरण के लिए, मेरी परियोजनाओं में से एक में मेरे पास authoring नामक थीम है जिसे मैं केवल लेखक उदाहरण पर लागू करना चाहता हूं; मैं इसे headlibs.jsp में में खींच इस कोड के साथ:

<c:if test="${ (global['wcmmode'] eq 'EDIT') || (global['wcmmode'] eq 'PREVIEW') }"> 
    <cq:includeClientLib theme="apps.myproject.authoring" /> 
</c:if> 

मैं किसी भी प्रलेखन कि विषय सामग्री के पेड़ की एक विशेष सबट्री में अपने आप लागू होता नहीं देखा है, या एक टैग की उपस्थिति पर आधारित।

वह गुप्त वाक्य है "विषय का नाम अनुरोध से निकाला गया है।" एडोब डॉक्स में, जिसे Sling docs में इस कथन द्वारा समर्थित किया गया है, "ThemeResolverFilter अनुरोध के लिए थीम प्रदान करता है। थीम को अनुरोध विशेषता के रूप में प्रदान किया जाता है।" तो शायद एक क्वेरी स्ट्रिंग पर &theme=apps.yourproject.foo से निपटने से उस थीम को लागू किया जाएगा।

+1

श्रेणियां काफी सरल हैं। लेकिन मुझे थीम पर कुछ भी उपयोगी नहीं मिल रहा है - दस्तावेज़ सिर्फ "थीम्ड या गैर-थीमाधारित लाइब्रेरी निर्दिष्ट करें" कहें, लेकिन विषय को परिभाषित करने के तरीके के बारे में कुछ भी नहीं, या पृष्ठ या साइट के लिए थीम का चयन कैसे करें। –

0

सीएसएस फाइलों की सूची पृष्ठ की संपत्ति 'cq: designPath' पर आधारित है।

+0

यह 'cq: designPath' पर आधारित है, लेकिन इसमें क्या शामिल है और यह कैसे निर्धारित किया जाता है? – Trevor