我想使用它data-sly-resource来包含资源,但是仅当它存在时,例如
<div class="pull-right" data-sly-resource="/content/blog/stats"></div>
Run Code Online (Sandbox Code Playgroud)
如果资源不存在,脚本执行将失败,并显示以下错误消息:找不到用于处理资源/内容/博客/状态的servlet。从“请求进度”列表中,我可以看到它是SyntheticResource:
TIMER_START {resolveServlet(SyntheticResource,type = null,path = / content / blog / stats)}
仅在资源存在的情况下,如何才能有条件地包括该资源?
小智 4
在这种情况下,最好的解决方案是允许您的组件正确处理应该渲染的redis/stats情况,或者更一般地说,不提供任何属性。ResourceSyntheticResource
因此,调用 Sightly 代码片段应该是:
<div class="pull-right" data-sly-resource="${'/content/blog/stats' @ resourceType='redis/stats'}"></div>
Run Code Online (Sandbox Code Playgroud)
这会强制由您的组件进行渲染redis/stats,即使/content/blog/stats资源不存在(好吧,Sling 将返回 a SyntheticResource,就像您提到的那样)。
redis/stats然后,您可以在您的组件中尝试此保护措施:
<div class="blog-stats" data-sly-test="${properties}">
<!--/* This whole block will only be rendered if properties is not empty */-->
</div>
Run Code Online (Sandbox Code Playgroud)
div.blog-stats仅当属性映射不为空时才会渲染[0]。
[0] - https://github.com/Adobe-Marketing-Cloud/sightly-spec/blob/1.1/SPECIFICATION.md#225-test
| 归档时间: |
|
| 查看次数: |
4495 次 |
| 最近记录: |