关于答案的问题"限制cq5"中模板允许的组件。

时间:2015-05-21 17:25:03

标签: cq5

我看到Alisneaky从这个链接回答: Limiting allowed components in a template in cq5 但我对Alisneaky提供的答案提出了疑问,他建议在模板中加入以下内容:

   <TEMPLATENAME jcr:primaryType="nt:unstructured">
       <content
           jcr:lastModified="{Date}2014-04-11T13:04:48.855+10:00"
           jcr:lastModifiedBy="admin"
           jcr:primaryType="nt:unstructured"
           sling:resourceType="/libs/foundation/components/parsys"
           components="[/libs/foundation/components/text,
                        /libs/foundation/components/textimage]">
       </content>
   </TEMPLATENAME>

我试着将它们放在/ etc / designs / mysite下的.content.xml中,并且没有看到sidekick中显示的任何组件。但是,如果我打开设计对话框,我会看到复选框以及这些预定义组件。

我也将这些行放在我的模板中,这一次,我在sidekick和设计对话框中都没有看到任何内容。

我的问题: 1.把这些线放在哪里?在我的模板中或/ etc / designs / mysite

下的.content.xml中
  1. 为了在sidekick中显示这些预定义的组件列表,我必须配置什么? (我确实将designPath指向了page属性中的/ etc / designs / mysite)。
  2. 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您需要将此配置放在设计的.content.xml下。所以,如果你必须遵循项目结构:

├── jcr_root
    ├── apps
    │   └── company
    │       └── project
    │           ├── components
    │           │   ├── component1
    │           │   └── component2
    │           │   └── component3
    │           ├── pages
    │           │   └── mypage
    │           └── templates
    │               └── mypage
    └── etc
        └── designs
            └── company
                └── project

说,您的页面模板如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="cq:Template"
    jcr:title="My page template title"
    jcr:description="My page template description"
    allowedPaths="[/content(/.*)?]">
    <jcr:content
        jcr:primaryType="cq:PageContent"
        sling:resourceType="company/project/pages/mypage"
        cq:designPath="/etc/designs/company/project">
        <content
            jcr:primaryType="nt:unstructured"
            sling:resourceType="foundation/components/parsys"/>   
    </jcr:content>
</jcr:root>

您可以将/etc/designs/company/project/.content.xml下的.content xml放入以下内容

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="cq:Page">
    <jcr:content
        cq:doctype="HTML_5"
        jcr:primaryType="nt:unstructured"
        jcr:title="My website design"
        sling:resourceType="wcm/core/components/designer">
        <mypage jcr:primaryType="nt:unstructured">
            <content
                jcr:primaryType="nt:unstructured"
                sling:resourceType="foundation/components/parsys"
                components="[/apps/company/project/components/component1,/apps/company/project/components/component2]">
                <section jcr:primaryType="nt:unstructured"/>
            </content>
        </mypage>
    </jcr:content>
</jcr:root>

通过这种方式,您可以将组件company / project / components / component1和company / project / components / component2(基础组件与示例相同)放在具有基础/组件/ parsys类型的内容节点中。 但我建议您始终通过design mode中的设计器进行更改,并使用包管理器导出生成的.content.xml。事实证明,这种方式是对您的设计进行更改的最安全方式。即使您在xml中的更改有效并将它们部署到cq,有时cq拒绝应用这些设置(确切地说,您的情况下,设置显示在sidekick中,但实际上并未应用)。

所以你的第一个问题的答案是,你必须将这些设置放在你的设计中。关于你的第二个问题,除了正确的模板设计路径外,你不必配置任何其他东西。