Могу ли я передать параметры в слот контента из вызывающего 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} соответственно.