Могу ли я передать параметры в слот контента из вызывающего ISML?

Я хотел бы иметь возможность передавать некоторую дополнительную информацию в слот контента либо с помощью переменной области запроса, либо с помощью других средств.

Я пробовал это в моем вызове 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>

Есть ли способ передать объект или строку в слот контента?

1 ответ

Решение

Ресурс контента не имеет доступа к данным, созданным или переданным в 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>

Content Assets не знает о странице, в которую они встроены. Это сделано специально. Однако вы можете встроить HTML в ваш контент, используя $include()$, который выбирает html с именованного контроллера или ссылку на другую страницу сайта, используя любой из методов $ url.

В шаблонах контента можно также ссылаться на данные из слота контента или из самого контента, используя: ${slotcontent} и ${slotcontent.content} соответственно.

Другие вопросы по тегам