【问题标题】:What exactly does currentDesign.writeCssincludes include?currentDesign.writeCssincludes 究竟包括什么?
【发布时间】:2013-02-27 18:25:30
【问题描述】:

我正试图弄清楚 headlibs.jsp 中对 currentDesign.writeCssIncludes(pagecontext); 的标准调用所包含的究竟是什么 css。文档简单地说它是

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 信息与其影响的组件放在一起会很有帮助,而不是需要将它们分开。

【问题讨论】:

    标签: aem


    【解决方案1】:

    您可以使用&lt;cq:includeClientLib&gt; tag,结合主题和/或类别,混合和匹配 CSS 位。

    但是您可能会发现它有些限制;例如,您不能指定媒体属性。如果您需要这样做,或者您的设计师没有以适合主题/类别模型的方式构建他们的 CSS,则您的后备是您在问题中确定的技术,直接使用 &lt;link&gt;

    更新

    关于主题的一个很好的问题!我只看到过它们的使用。

    您可以通过在/etc/designs/yourproject/clientlibs/themes 下添加一个新文件夹/节点来定义主题,作为default 的同级。

    您可以为带有&lt;cq:includeClientLibs&gt; 标签的主题拉取客户端库,也许在某些条件逻辑的控制下。例如,在我的一个项目中,我有一个名为authoring 的主题,我只想将其应用于作者实例;我在headlibs.jsp 中使用此代码:

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

    我没有看到任何文档可以将主题自动应用于内容树的特定子树,或者基于标签的存在。

    有一个神秘的陈述“主题名称是从请求中提取的。”在由 Sling docs 中的此语句支持的 Adob​​e 文档中,“ThemeResolverFilter 为请求提供主题。主题作为请求属性提供。”因此,也许将 &amp;theme=apps.yourproject.foo 添加到查询字符串上会应用该主题。

    【讨论】:

    • 类别相当简单。但是我在主题上找不到任何有用的东西 - 文档只是说“指定主题或非主题库”,但没有关于如何定义主题或如何为页面或网站选择主题。
    【解决方案2】:

    CSS 文件列表基于页面的属性“cq:designPath”。

    【讨论】:

    • 它是基于cq:designPath,但是它包括什么以及它是如何确定的?
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2017-04-25
    • 1970-01-01
    • 2014-10-28
    • 2012-08-27
    • 2010-11-12
    相关资源
    最近更新 更多