AEM:是否可以在不扩展parsys的情况下测试parsys是否有内容?
是否可以在不扩展和创建parsys的自定义版本的情况下测试parsys是否具有内容?也接受指向parsys属性的某些文档的链接AEM:是否可以在不扩展parsys的情况下测试parsys是否有内容?,aem,sightly,Aem,Sightly,是否可以在不扩展和创建parsys的自定义版本的情况下测试parsys是否具有内容?也接受指向parsys属性的某些文档的链接 我有一个parsys,如果它是空的,我需要删除它,因为应用于parsys的某些类正在影响布局。您可以提取parsys的sling资源,然后检查它是否有子项: boolean isParsysEmpty = !resourceResolver.resolve("/path/to/your/parsys").hasChildren(); 请参阅JavaDoc: 为此,必须
我有一个parsys,如果它是空的,我需要删除它,因为应用于parsys的某些类正在影响布局。您可以提取parsys的sling资源,然后检查它是否有子项:
boolean isParsysEmpty = !resourceResolver.resolve("/path/to/your/parsys").hasChildren();
请参阅JavaDoc:
为此,必须使用use API类 上面引用的hasChildren()函数在js use api类中不起作用(这很烦人——下面是js usp api中可用资源的实现:) 下面是一个解决方案,它使用ResourceUtils.js和q.js来测试所提供的parsys是否存在: 显然:
<div data-sly-use.hasChildren="${'hasChildren.js' @ parsys='MainContent', page=currentPage}" data-sly-unwrap>
<div data-sly-test="${wcmmode.edit || hasChildren}" data-sly-unwrap>
<div data-sly-resource="${'MainContent' @ resourceType='foundation/components/parsys'}"></div>
</div>
</div>
我不能理解你的问题。请您更准确地解释一下您想做什么,这个用例应该是什么,可能还有一些受影响的代码。
"use strict";
use(["/libs/wcm/foundation/components/utils/ResourceUtils.js", "/libs/sightly/js/3rd-party/q.js"], function (ResourceUtils, Q) {
var childPromise = Q.defer();
if(this.page.getContentResource(this.parsys) != null) {
ResourceUtils.getResource(this.page.getContentResource(this.parsys).getPath()).then(function(res) {
res.getChildren().then(function (childItems) {
return childPromise.resolve(childItems.length > 0);
}, function (error) {
});
}, function (error) {
});
return childPromise.promise;
}
});