2

Sitecoreデバイスの[ブラウザエージェント]フィールドに複数のブラウザエージェントタイプを入力しようとしていますが、試した区切り文字はどれも機能しません。

単一のブラウザエージェントタイプを入力すると機能しますが、たとえば「Chrome、Firefox」のように複数のエージェントタイプを入力しようとすると、機能しません。

これらはすべて私が試した区切り文字です([]、/ \ |&;:)。

ありがとう!

4

1 に答える 1

2

すぐに使用できるSitecoreデバイスリゾルバーは、ユーザーエージェントをコードと照合しようとします。

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;
    }
}
于 2012-06-22T19:39:02.850 に答える