【发布时间】:2016-06-07 15:00:18
【问题描述】:
根据 Adobe 的 AEM 开发文档,我们应该为所有图像渲染组件继承 parbase 组件。 任何人都可以分享这种必要性背后的理由吗?还有谁能指出这个的其他选择(如果有的话)
【问题讨论】:
标签: aem
根据 Adobe 的 AEM 开发文档,我们应该为所有图像渲染组件继承 parbase 组件。 任何人都可以分享这种必要性背后的理由吗?还有谁能指出这个的其他选择(如果有的话)
【问题讨论】:
标签: aem
请访问 Adobe AEM 论坛帖子:- http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__3vh2-why_do_we_needtoin.html
Parbase 只是一个组件,您可以从中扩展以获得一些 OOTB 功能。
如果我可以用技术语言说,Parbase 是一个关键组件,因为它允许组件从其他组件继承属性,类似于 Java 等面向对象语言中的子类。
例如,当您在 CRX Explorer 中打开 /libs/foundation/components/text 节点时,您会看到它有一个名为 sling:resourceSuperType 的属性,它引用了 parbase 组件。这里的 parbase 定义了树脚本来渲染图像、标题等,以便从这个 parbase 子类化的所有组件都可以使用这个脚本。
在创建您自己的组件时,您不需要将“parbase”添加为超类型,除非您的组件需要通过 parsys 中的拖放来启用。
AFAIK,parbase 组件从不显式使用,仅在添加到 Parsys 时促进组件的呈现。
“parbase 允许组件从其他组件继承属性”
如果您在“/libs/foundation/components”下进行检查,大多数可创作和可拖动组件都将“parbase”设置为它们的“sling:resourceSuperType”,以便它们在添加到段落系统(Parsys 组件)。
文档链接:-https://docs.adobe.com/docs/en/cq/5-6-1/wcm/default_components/designmode.html#parbase
我希望这会有所帮助。
感谢和问候
考图克·萨尼
【讨论】:
parbase 有一个 img.GET.java 文件,它将处理所有具有“img”选择器的请求。如果您调用“component.img.png”,图像将被处理。如果您不从 parbase 继承,您有两个选择:为您的组件实现 img.GET.java 或在组件中保存图像的资源类型。当我有一个将图像数据存储在子节点中的组件时,我通常会这样做。
如果我想将图像保存在名为 image 的子节点中,这就是我在 dialog.xml 中添加的内容:
<image
jcr:primaryType="cq:Widget"
cropParameter="./image/imageCrop"
ddGroups="[media]"
fileNameParameter="./image/fileName"
fileReferenceParameter="./image/fileReference"
mapParameter="./image/imageMap"
name="./image/file"
requestSuffix="/image.img.png"
rotateParameter="./image/imageRotate"
title="Image"
xtype="html5smartimage">
<items jcr:primaryType="cq:WidgetCollection">
<restype
jcr:primaryType="cq:Widget"
ignoreData="{Boolean}true"
name="./image/sling:resourceType"
value="/libs/foundation/components/image"
xtype="hidden"/>
</items>
</image>
这里讨论了这种方法,例如:AEM Page Image in Page Properties Doesn't Apply a sling:resourceType
【讨论】: