3

我正在 Adob​​e CQ5.5 中开发自定义容器组件,我希望将自定义消息作为占位符,而不是默认的“将组件或资产拖到此处”。

到目前为止,我发现我必须添加 cq:emptyText="My custom placeholder message"。可能我错过了一些东西,因为这个属性被完全忽略了。这是我的组件的文件夹结构:

  • [客户端库]
  • .content.xml
  • _cq_editConfig.xml
  • 对话框.xml
  • 我的容器.jsp

根据Adob​​e 的官方教程以及构建 Accordion 容器的精彩教程,cq:emptyText 应该进入 _cq_editConfig.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    cq:actions="[edit]"
    cq:dialogMode="floating"
    cq:emptyText="Drag My Custom components here"
    jcr:primaryType="cq:EditConfig">
    <cq:listeners
        jcr:primaryType="cq:EditListenersConfig"
        afteredit="REFRESH_PAGE"/>
</jcr:root>

不幸的是,即使包含 cq:emptyText 我仍然看到默认的占位符文本。

任何帮助将不胜感激!

谢谢!

斯坦。


更新:

在 Tomek 的建议之后,我仍然得到“将组件或资产拖到这里”而不是我的自定义消息,所以我仍在寻找答案。我的组件的文件结构现在如下所示: - [clientlib] - [new] ---- .content.xml ---- _cq_editConfig.xml - .content.xml - _cq_editConfig.xml - dialog.xml - tabContainer.jsp

.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"
    cq:isContainer="{Boolean}true"
    jcr:primaryType="cq:Component"
    jcr:title="Tab Container"
    jcr:description="Container component for tab pages"
    sling:resourceSuperType="foundation/components/parsys"
    componentGroup="MyComponents"/>

_cq_editConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    cq:actions="[edit]"
    cq:dialogMode="floating"
    jcr:primaryType="cq:EditConfig">
    <cq:listeners
        jcr:primaryType="cq:EditListenersConfig"
        afteredit="REFRESH_PAGE"/>
</jcr:root>

新/.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"
    jcr:primaryType="cq:Component"
    jcr:title="New Paragraph"
    sling:resourceType="foundation/components/parsys/new"
    componentGroup=".hidden"/>

新/_cq_editConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    cq:actions="[_clear,insert]"
    cq:emptyText="Drag My Custom components here"
    jcr:primaryType="cq:EditConfig" />
4

2 回答 2

4

正如 Tomek Rękawek 建议的那样,当您实施 parsys 时,您需要以下结构:

.content.xml这里的重要部分是resourceSuperType

<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"
    cq:isContainer="{Boolean}true"
    jcr:primaryType="cq:Component"
    jcr:title="Your title"
    sling:resourceSuperType="foundation/components/parsys" />

新/.content.xml

<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:Component"
    jcr:title="New Paragraph"
    sling:resourceType="foundation/components/parsys/new"
    componentGroup=".hidden"/>

new/_cq_editConfig.xml这是您要设置cq:emptyText属性的地方)

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    cq:actions="[_clear,insert]"
    cq:emptyText="Drag My Custom components here"
    jcr:primaryType="cq:EditConfig"/>

此时我没有在组件占位符上看到“将我的自定义组件拖到此处”文本。对我来说,诀窍是new/new.jsp使用以下内容进行创建:

新/新.jsp

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"
%><%@include file="/libs/foundation/global.jsp"
%><%@ page session="false" import="
    com.day.cq.wcm.api.components.EditContext" %><%

    editContext.getEditConfig().setEmpty(true);
%>

然后我能够看到我设置的空文本new/_cq_editConfig.xml。我已经在 CQ5.6 上对此进行了测试。

希望这可以帮助。

于 2013-10-10T23:16:20.113 回答
2

此容器通常称为段落系统parsys。你应该有这样的结构:

.content.xml

<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"
    cq:isContainer="{Boolean}true"
    jcr:primaryType="cq:Component"
    jcr:title="Your title"
    sling:resourceSuperType="foundation/components/parsys" />

新/.content.xml

<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:Component"
    jcr:title="New Paragraph"
    sling:resourceType="foundation/components/parsys/new"
    componentGroup=".hidden"/>

新/_cq_editConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    cq:actions="[_clear,insert]"
    cq:emptyText="Drag My Custom components here"
    jcr:primaryType="cq:EditConfig"/>

因此,您需要为new组件创建子目录,并将属性添加到文件new/_cq_editConfig.xml中。

于 2013-10-08T06:40:32.817 回答