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

时间:2018-11-28 23:55:49

标签: demandware salesforce-commerce-cloud

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

我已经在调用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>

我可以通过某种方式将对象或字符串传递到内容槽吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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