What exactly does currentDesign.writeCssincludes include?



我想弄清楚到底是什么css包含在标准调用中找到的currentDesign.writeCssIncludes(pagecontext);在headlib .jsp。文档简单地说明了它是

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文件就可以了,但是对于"花哨"设计,他们想要使用更少的css并更精细地分解文件)。将特定于设计的css信息与它们所影响的组件放在一起会更有帮助,而不是需要将它们分开。

您可以使用<cq:includeClientLib>标签,结合主题和/或类别,混合和匹配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文档中的这条语句支持的,"ThemeResolverFilter为请求提供主题。"主题作为请求属性提供。"因此,也许将&theme=apps.yourproject.foo添加到查询字符串上将应用该主题。

CSS文件列表基于页面的属性'cq:designPath'

最新更新