5

Adobe AEM(以前称为 Adob​​e CQ)中的客户端库 (ClientLib) 功能可以轻松按类别包含客户端库,并且每个库都可以通过依赖关系拉入其他库。然而,围绕“主题”的文档有点薄。

这个链接是我能找到的关于这个主题的所有内容。以下是示例代码的摘录:

<%-- theme only (theme-js + css) --%>
<cq:includeClientLib theme="cq.collab.calendar, cq.security" />

如果要使用此标签,CQ 将如何确定要引入哪些客户端库?它是否寻找 String[] 类型的主题属性?

或者它是否在 /etc/designs 部分中寻找某个目录结构?

还是像这样将传入的类别添加到最后?

cq.collab.calendar.theme-js

还是通过 URL 调用主题?换句话说,在这种情况下,“主题”这个词是一个被 URL 应用主题中的选择器替换的标记?

4

3 回答 3

8

客户端库位于 cq:ClientLibraryFolder 文件夹中。此文件夹有一个名为 category 的属性。在以下示例中,cq.collab.calendar 和 cq.security 是类别:

<cq:includeClientLib theme="cq.collab.calendar, cq.security" />

当调用此包含时,它会查找任何 cq:ClientLibraryFolder 并分配有 cq.collab.calendar 或 cq.security 类别。 使用主题属性添加驻留在父 ClientLibraryFolder 的主题文件夹中的 clientLibs 的 css 和 javascript。 如果您要查看您的页面源代码,这些将被添加到它们自己的 css 和 js 文件中。例如,我在geometrixx clientLibary下创建了如下结构:

geometrixx
    clientlibs
        themes
            myTheme (clientLibray)
               css.txt
               myCSS.css
               js.txt
               myJS.js

如果,你使用这个 clientlib 的主题属性,你会得到一个 myTheme.css 和 myTheme.js 文件显示在你的源/网络选项卡中。

主题标志是一种关闭和关闭主题包含的方法。以下 cq:include 将包含 clientLibrary 中的所有 css,包括主题目录中的内容。

<cq:includeClientLib css="apps.geometrixx-main" />

但是,如果我添加主题标志并将其设置为 false,则主题目录下的任何内容都将被排除:

<cq:includeClientLib css="apps.geometrixx-main" themed="false" />

所以在那种情况下, myTheme.css 不会出现。需要注意的一件事是,主题标志仅适用于“纯 css 和 js 包含”类别和主题属性不适用于此。

这个问题的答案有点过头了:currentDesign.writeCssincludes 到底包括什么?

于 2013-07-15T16:25:06.030 回答
2

取决于您所说的“主题”是什么意思。如果您习惯于 wordpress、drupal 等,那么在这些系统中所谓的主题在 CQ5/AEM 中称为“设计”。

要设置设计,请在页面属性中选择“设计路径”。这将影响每个模板的组件信息的存储位置(在设计模式中所做的所有更改,即允许哪些组件存储在此路径下),并且是 CSS、JS 和非 DAM 图像资源存储位置的约定。这需要计划,但您可以在 AEM/CQ5 中重用代码和标记,但通过更改设计完全改变外观。

于 2014-11-29T21:14:29.703 回答
2

已经提到主题是从请求中获取的,做了一点挖掘,最终发现它试图从名为“forceTheme”的请求参数中获取它

private String getDefaultThemeName(SlingHttpServletRequest request)
  {
    String theme = request.getParameter("forceTheme");
    if (theme == null) {
      theme = this.defaultUserThemeName;
    }
    return theme;
  }

但需要 request.getAttribute 因为使用查询参数会将所有请求发送到 pub。

所以猜测这个主题选项根本没有用。

于 2013-10-19T11:53:44.650 回答