根据Adobe的AEM开发文档,对于所有图像呈现组件,我们都应该继承parbase组件。能否请大家分享一下这一必要性背后的理由?还有谁能指出其他替代方案(如果有的话)?
发布于 2016-06-07 07:00:18
请在Adobe论坛上上厕所:- http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum
Parbase只是一个组件,您可以从它进行扩展以获得一些OOTB功能。
如果我可以用技术语言说,Parbase是一个关键组件,因为它允许组件从其他组件继承属性,类似于面向对象语言(如Java )中的子类。
例如,当您在component中打开/libs/foundation/components/text节点时,您会看到它有一个名为sling:resourceSuperType的属性,它引用parbase组件。这里的parbase定义了树脚本来呈现图像、标题等,这样来自parbase的所有子类都可以使用这个脚本。
在创建自己的组件时,不需要添加“parbase”作为超级类型,除非您的组件需要通过parsys中的拖放来启用。
AFAIK,parbase组件从来不被显式使用,但是只有在Parsys中添加组件时才能简化组件的呈现。
“parbase允许组件从其他组件继承属性”
如果您在"/libs/foundation/ components“下检查,大多数可授权和可拖动的组件都将'parbase‘设置为’吊索:resourceSuperType‘,以便在添加到段落系统(Parsys组件)时,它们可以继承图像和文本呈现属性。
文档链接:- components/designmode.html#parbase
我希望这能帮到你。
感谢并致以问候
考图克·萨尼
发布于 2016-06-01 14:24:23
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
https://stackoverflow.com/questions/37565927
复制相似问题