2

我正在尝试为 Sitecore 设备中的浏览器代理字段输入多个浏览器代理类型,但我尝试过的分隔符都不起作用,有什么想法吗?

当我输入一个浏览器代理类型时,它可以工作,但是当我尝试输入多个时,例如:“Chrome,Firefox”,它就无法工作。

这些都是我尝试过的所有分隔符([],/\|&;:)。

谢谢!

4

1 回答 1

2

开箱即用的 Sitecore 设备解析器尝试将用户代理与代码匹配:

return Request.UserAgent.IndexOf(agent, StringComparison.OrdinalIgnoreCase) >= 0;

因此,如您所见,这里没有任何分隔符的位置。

您仍然可以轻松创建自己的设备解析器并将其插入到<httpRequestBegin>管道之前(或代替)DeviceResolver处理器

  <processor type="Sitecore.Pipelines.HttpRequest.DeviceResolver, Sitecore.Kernel"/>

您需要在处理器中做的是找到合适的DeviceItem并将其设置为Sitecore.Context.Device

public class MyDeviceResolver : HttpRequestProcessor
{
    public override void Process(HttpRequestArgs args)
    {
        DeviceItem deviceItem = TryToMatchTheDevice();
        Context.Device = deviceItem;
    }
}
于 2012-06-22T19:39:02.850 回答