Детали Представления Возвращаемого Элемента В Rest API программно

#sitecore

Вопрос:

У меня есть API Rest, который должен возвращать сведения о презентации элемента. Я попробовал эту строку кода, но Sitecore.Context.Device имеет значение null, так как это вызов rest API.

 LayoutItem layoutItem = item.Visualization.GetLayout(Sitecore.Context.Device);
 

Обновление: Я попытался переместить этот код в то время, когда я индексирую свои данные (в надежде прочитать значение и записать его в Solr), но я столкнулся с той же проблемой.

Как бы я это сделал?

Ответ №1:

Визуализации добавляются для каждого «устройства» в Sitecore, но в большинстве случаев в настоящее время существует только одно устройство. В зависимости от того, как вы маршрутизируете конечную точку API и т.д., Устройство может не разрешаться автоматически. Если вы знаете, что у вас есть только одно устройство, вы можете выбрать первое устройство или указать его в качестве параметра. Затем вы можете использовать переключатель устройств на случай, если вам потребуется вызвать другие методы Sitecore, для которых требуется установить устройство. Например, вот так:

 var deviceName = "Default"; // The default device. Modify according to needs
var deviceItem = item.Database.Resources.Devices.GetAll().First(d => string.Equals(d.Name, deviceName, StringComparison.OrdinalIgnoreCase))
using (new DeviceSwitcher(deviceItem)) 
{
  ...
}