Создать ссылку перенаправления сеанса в ресурсе контента

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

Но URLUtils недоступен в ресурсах контента. Можно ли сформировать ссылку перенаправления сеанса в ресурсе контента, сохраняя всю информацию о сеансе?

Заранее спасибо.


person Pinaki Mukherjee    schedule 30.12.2020    source источник


Ответы (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 или что-то подобное, чтобы ничего не вводилось в ответ. (например, набор инструментов 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
comment
ты обалденный. Благодарю вас! - person Pinaki Mukherjee; 08.01.2021