我可以将参数传递给调用ISML的内容槽吗?

问题描述 投票:1回答:2

我希望能够通过请求范围变量或其他方式将一些补充信息传递给内容槽。

我在调用ISML时试过这个:

<isset name="message" scope="request" value="I want to be an Air Force Ranger" />
<isslot id="slot-message" context="global" description="banner"/>

在插槽的渲染模板中,我有:

<iscontent type="text/html" charset="UTF-8" compact="true"/>
<iscache type="relative" hour="24"/>
<h3>${request.custom.message}</h3>

但是,在输出HTML中,我得到:

<h3>null</h3>

有什么方法可以将对象或字符串传递给内容插槽吗?

demandware salesforce-commerce-cloud
2个回答
0
投票

内容资产无权访问创建或传递给ISML的数据。但是,可以通过将数据添加到DOM然后在内容资产中读取它来完成解决方法:

<div class="banner-data" data-message="${message}">
    <isslot id="slot-message" context="global" description="banner"/>
</div>

然后,在您的内容资产中,您可以阅读该消息并使用它:

<script>
    var bannerData = $('.banner-data').data();
    var message = bannerData["message"];
</script>

0
投票

内容资产不知道它们嵌入的页面。这是设计使然。但是,您可以使用$ include()$在您的内容中嵌入HTML,该$从命名控制器获取html或使用任何$ url-methods链接到网站上的另一个页面。

在内容模板中,还可以分别使用:$ {slotcontent}和$ {slotcontent.content}来引用内容槽或内容本身的数据。

© www.soinside.com 2019 - 2024. All rights reserved.