Вы можете включать динамический контент в Content Assets с помощью синтаксиса $include('Controller-Name', 'name1', 'value1', 'name2', 'value2', ...)$
. См. Документация класса MarkupText для получения дополнительной информации об этом синтаксисе. Параметры name1 и value1 отображаются как атрибуты строки запроса, например: Controller-Name?name1=value1&name2=value2
Создайте контроллер, который выводит нужную вам ссылку перенаправления сеанса, и вызовите его с помощью такого синтаксиса, например: $include(Util-RenderSessionLink, 'siteID', 'foo')$
Контроллер должен будет использовать заголовок ответа Content-Type text/plain
или что-то подобное, чтобы ничего не вводилось в ответ. (например, набор инструментов Storefront или теги отслеживания). Например:
response.setContentType('text/plain');
В качестве альтернативы вы можете обработать актив контента для некоторых видов ключей, с которыми вы выполняете операции поиска и замены. Например, следующий код выполняет поиск и замену основного содержимого Content Asset для ключа: '%%SessionLink%%'.
var ContentMgr = require('dw/content/ContentMgr');
var URLUtils = require('dw/web/URLUtils');
if (!empty(content) {
var content = ContentMgr.getContent('my-content-id');
var contentOut = "";
var viewData = {};
contentOut = content.custom.body.getMarkup()
.replace('%%SessionLink%%', URLUtils.sessionRedirect(...));
viewData.content = contentOut;
// then output your `pdict.content` key within a template with the appropriate encoding
}
person
sholsinger
schedule
07.01.2021