JSSを使用したMVCアプリの静的生成に関する制限事項と回避策

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

既存のMVCアプリケーションをヘッドレスJSSアプリケーションに変換するプロセスには、いくつかの制限があります。

Next.jsアプリケーションのエクスポート

Next.js with next exportによって提供される静的エクスポート機能の使用に適用されるすべての制限が適用されます。

next exportは多言語アプリをサポートしていないため、languageEmbeddingを無効にする必要があります。

languageEmbeddingを無効にするには:

  • Sitecoreの設定を変更し、languageEmbeddingの値をneverに設定します。

    <configuration>    
      <sitecore>          
        <links>        
          <urlBuilder>                    
            <languageEmbedding>never</languageEmbedding>        
          </urlBuilder>           
        </links>    
      </sitecore>
    <configuration>

さらに、画像をレンダリングするMVCコンポーネントがある場合は、Sitecoreサーバー上のメディア ファイルへのフル パスを指定する必要があります。

メモ

Sitecore Experience Edgeは、メディア ファイル用のCDNを提供し、画像のサーバー URLをすでに埋め込んでいます。

メディアソースURLにサーバーURLを含めるには:

  • Sitecoreの設定をMedia.AlwaysIncludeServerUrlに変更します。

    <setting name="Media.AlwaysIncludeServerUrl" set:value="true" />

Sitecoreのアナリティクスとパーソナライゼーション

JSSアプリで のSitecore分析とパーソナライゼーション に関するすべての制限が適用されます。

セッションベースの機能

アカウントログイン、カート情報、GDPRコンプライアンスなど、サーバー側のセッション情報(ASP.NETまたはCookie)に依存する機能は、静的生成では使用できませんNext.js。

セッションベースの機能を使用するには、次のいずれかを行う必要があります。

  • Next.jsサーバー側レンダリングルートを使用します。このアプローチは、Experience Edgeでは機能しません。

  • Next.jsリライトを使用して、インクリメンタル ストラテジーとしてSitecore CDへの完全なパススルーを許可します。たとえば、サイトのアカウント セクション全体を延期できます。

    {
      source: '/account/:path*',
      destination: `${jssConfig.sitecoreApiHost}/account/:path*`,
    }
  • クライアント側のアプローチを使用するようにアプリケーションをリファクタリングします。これは、ヘッダーの条件付きLogin/LogoutやGDPRコンプライアンスの受け入れなど、サイトのすべてのページに表示されるコンポーネントに適したアプローチである可能性があります。

Sitecoreフォーム

既存のMVCフォームをJSSアプリケーションで機能させるには、MVCフォームラッパーがHTMLとしてレンダリングされ、Next.jsアプリケーションがフォームに必要なリダイレクトを持つように、いくつかの調整を行う必要があります。

大事な

Sitecore Formsは、RESTレイアウト サービスとサーバー側のレンダリングを使用している場合にのみ、Next.jsで機能します。

MVCフォームラッパーをHTMLとしてレンダリングするには:

フォーム固有のリダイレクトを設定するには:

  • Next.js JSSアプリのnext.config.jsファイルのredirectsセクションに、次のルールを追加します。

    // Sitecore forms
    {
      source: '/sitecore%20modules/:path*',
      destination: `${jssConfig.sitecoreApiHost}/sitecore%20modules/:path*`,
    },
    {
      source: '/formbuilder',
      destination: `${jssConfig.sitecoreApiHost}/formbuilder`,
    },
先端
この記事を改善するための提案がある場合は、 お知らせください!