2013-02-27 120 views
6

我想知道在headlibs.jsp中找到的標準調用currentDesign.writeCssIncludes(pagecontext);究竟包含了哪些css。該文件只是說,這是currentDesign.writeCssincludes包含什麼內容?

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

在什麼似乎做展望,它將包括/etc/designs/currentdesign.css這是建立關閉設計組件CSS和/etc/designs/currentdesign/static.css,這僅僅是一個靜態文件。但是,這將包含哪些內容?

特別是,我想要做的是包括一個clientLib處理的css文件作爲我的設計的一部分。要做到這一點是手工打造出來的CSS的一種方式包括:

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

但我寧願讓那得到自動生成的,所以,我的設計師又有靈活性,不同結構的CSS文件進行不同的設計(即,對於「基礎」設計,他們只需要一個static.css文件就可以了,但對於「花哨」的設計,他們希望使用LESS css並更細粒度地分解文件)。將特定於設計的css信息與它們所影響的組件放在一起會很有幫助,而不需要將它們分開。

回答

2

您可以使用<cq:includeClientLib> tag結合主題和/或類別來混合和匹配CSS的位。

但你可能會發現它有點限制;例如,您不能指定媒體屬性。如果您需要這樣做,或者您的設計人員不以符合主題/類別模型的方式構建CSS,那麼您的退步是您在問題中確定的技術,直接使用<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> 

我還沒有看到,會自動應用主題內容樹的特定子樹的任何文件,或基於標籤的存在。

有一個神祕的陳述「主題名稱是從請求中提取的。」在Adobe文檔中,該文檔由Sling docs中的此語句備份,「ThemeResolverFilter爲請求提供主題,主題作爲請求屬性提供。」因此,在查詢字符串上添加&theme=apps.yourproject.foo可能會應用該主題。

+1

這些類別相當簡單。但是我找不到任何有用的主題 - 文檔只是說「指定一個主題或非主題的圖書館」,但沒有關於如何定義一個主題,或者如何選擇一個頁面或網站的主題。 – 2013-02-27 20:43:43

0

CSS文件列表基於頁面的屬性'cq:designPath'。

+0

它基於'cq:designPath',但它包含了什麼以及如何確定? – Trevor 2014-08-15 16:38:08