我正在尝试为 Sitecore 设备中的浏览器代理字段输入多个浏览器代理类型,但我尝试过的分隔符都不起作用,有什么想法吗?
当我输入一个浏览器代理类型时,它可以工作,但是当我尝试输入多个时,例如:“Chrome,Firefox”,它就无法工作。
这些都是我尝试过的所有分隔符([],/\|&;:)。
谢谢!
我正在尝试为 Sitecore 设备中的浏览器代理字段输入多个浏览器代理类型,但我尝试过的分隔符都不起作用,有什么想法吗?
当我输入一个浏览器代理类型时,它可以工作,但是当我尝试输入多个时,例如:“Chrome,Firefox”,它就无法工作。
这些都是我尝试过的所有分隔符([],/\|&;:)。
谢谢!
开箱即用的 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;
}
}