1

デフォルト デバイスとモバイル デバイスで異なるコンテンツを表示する必要があります。デバイスに応じて言語バージョンを作成する方法はありますか? または、現在のデバイスの種類を識別できるハンドラーまたはモジュールを作成することは可能ですか? MediaRequestHandlerまた、現在のデバイスを識別しMediaPath、要求されたイメージの変更できるカスタムを作成することは可能ですか?

これはパイプライン プロセッサの私の実装です。

public class MediaToDeviceProcessor : HttpRequestProcessor 
{
    public override void Process(HttpRequestArgs args)
    {
        HttpContext currentHttpContext = HttpContext.Current;

        if (currentHttpContext == null || Context.Database == null || Context.Device == null)
            return;

        var request = MediaManager.ParseMediaRequest(currentHttpContext.Request);
        if (request != null)
        {
            var media = MediaManager.GetMedia(request.MediaUri);
            if (media != null)
            {
                if (!Context.Device.IsDefault)
                {

                }
            }
        }
    }
}
4

1 に答える 1

0

質問の最初の部分については、カスタム デバイス リゾルバーの作成をご覧ください。web.config を調べてから、 dotPeek<processor type="Sitecore.Pipelines.HttpRequest.DeviceResolver, Sitecore.Kernel" />を使用して、これが Sitecore でどのように実装されているかを確認します。通常、標準のリゾルバーを独自のものに置き換えるのは非常に簡単です。Sitecore のデバイス リゾルバーから継承し、必要なデバイス検出コードを追加できます。次に、このデバイス リゾルバーで言語コンテキストを設定できます。

サイトのモバイル バージョンでは、別のプレゼンテーション コンポーネントを使用していますか? その場合は、モバイル プレゼンテーション コンポーネントに使用される一連のフィールドをテンプレートに含めることを検討できます。

カスタムMediaRequestHandlerについて これが必要かどうかはわかりません。メディア アイテムの代替コンテンツ フィールドがある場合、これらはメディア アイテムのモバイル対応物を参照するだけです。モバイル コンテンツに別の言語を使用している場合、これはモバイルで同等の画像を指すことになります。

編集

モバイル/デフォルト コンテンツ用に異なる言語バージョンのコンテンツを用意することを選択した場合/sitecore/templates/System/Media/Versioned/Fileは、「Unversioned」( に基づく) の代わりに「Versioned」メディア テンプレート ( に基づく) を使用して調査できます/sitecore/templates/System/Media/Unversioned/File。新しいメディア アイテムを作成するときに使用されるデフォルトを設定できる構成設定があります。これは、モバイル サイト用に対応する言語バージョンのメディア アイテムを作成 (別の画像をアップロード) できることを意味します。この場合、特別なメディア ハンドラーは必要ありません。

于 2013-01-25T19:32:02.410 に答える