当您为网站指定设计时,默认情况下AEM会包含哪些css文件?

时间:2014-08-14 16:27:08

标签: aem

我在AEM创建了一个网站,并为该网站创建了一个设计。最初,该设计包括一个带有图像的文件夹和一个名为static.css的css文件。当我在网站内容的节点上指定cq:designPath时,会自动包含static.css文件(/etc/designs/mywebsite/static.css); AEM还尝试包含另一个文件(/etc/designs/mywebsite.css)。如果static.css文件不存在,则不会包含该文件,但mywebsite.css文件包含('ed}),无论它是否存在。我找到的文档(参见此处)表明您可以在设计中包含任意数量的css文件,但是当我尝试将其他css文件添加到/etc/designs/mywebsite/文件夹时,它们都不会包含在内。我在这里错过了什么吗?是否应将/etc/designs/mywebsite/下的所有css文件都包含在网站中,或者是否只包含/etc/designs/mywebsite.css/etc/designs/mywebsite/static.css,并且需要手动包含任何其他文件?

2 个答案:

答案 0 :(得分:3)

设计节点上的.css扩展名调用servlet(/libs/wcm/core/components/designer/designer.css.java),该servlet根据设计的jcr:content节点中的各种节点动态生成CSS到CSS中。

当内容作者切换到设计模式(WCMMode=Design)时,编辑对话框会保存到当前应用的设计或默认(/etc/designs/default)设计的jcr:content节点。用于创建页面的模板以及正在编辑的组件的路径将确定保存设计设置的jcr:content节点下的路径。

例如,如果你编辑一个开箱即用的parsys组件,你会看到一个选项来编辑" Cell Padding"

Edit Dialog

如果在文本框中输入CSS填充值并单击“确定”,则该值将保存到以下位置的div.padding属性中:

/etc/designs/mydesign/jcr:content/mytemplate/par/section[div.padding="30px"]

然后,servlet将在设计CSS中呈现以下内容:

.mytemplate .par div.section {
  padding: 8px;
}

实际将节点转换为CSS的类是cq-wcm-core jar中的CSSWriter

有关详细信息,请参阅我前一段时间提出的类似问题:

In Adobe AEM, how does the parsys component inject styles into the design css file?

答案 1 :(得分:1)

只是一个简短的修正。实际上它不是:/ etc / designs / mydesign / jcr:content / mytemplate而是/ etc / designs / mydesign / jcr:content / my_page_component

这意味着如果两个页面具有不同的模板但共享相同的页面呈现组件,那么它们将共享相同的设计配置,并且它们的组件将在设计模式下在同一位置写入。