如何划分Sitecore设备的浏览器代理选择?

时间:2012-06-22 18:02:23

标签: sitecore

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

开箱即用Sit​​ecore设备解析程序尝试将用户代理与代码匹配:

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

所以你看到这里没有任何分界符号。

您仍然可以轻松创建自己的设备解析程序,并在 DeviceResolver 处理器

之前(或代替)插入< httpRequestBegin> 管道
  <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;
    }
}