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

2
Pinaki Mukherjee 30 Дек 2020 в 22:13

1 ответ

Лучший ответ

Вы можете включить динамический контент в 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 или что-то в этом роде, чтобы в ответ ничего не вводилось. (например: набор инструментов витрины или теги отслеживания) Например:

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
}
1
sholsinger 7 Янв 2021 в 22:34