チュートリアル: Next.js JSSアプリをSitecoreエディターに接続する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore Containersテンプレートを使用してNext.js JSSアプリケーションを作成すると、Next.jsアプリはSitecoreエディターとの統合用に事前構成されています。ただし、JSSアプリ初期化子を使用してアプリを作成した場合は、Sitecoreエクスペリエンス エディターとの統合を手動で設定する必要があります。
Next.js JSSアプリをSitecoreエディターに接続する前に、次のことを行う必要があります。
JSSアプリケーションに接続すると、Next.js JSSアプリケーションをSitecoreエディタ(Sitecoreエクスペリエンスエディタなど)と統合できます。
このチュートリアルでは、次の方法について説明します。
-
JSSアプリのSitecore設定パッチを更新します。
-
Sitecoreエディター エンドポイントを保護します。
-
Next.jsアプリケーションを構成します。
-
Next.jsでtrailingSlashが有効になっている場合にJSSアプリを構成します。
Next.jsのSitecoreコンテナー テンプレートは、エクスペリエンス エディターとの事前設定された統合を提供します。
JSSアプリのSitecore設定パッチを更新する
コードファーストのNext.jsアプリケーションで高度なSitecoreエディターとの統合を有効にするには、まずSitecore設定パッチを使用してJSSアプリケーションを設定する必要があります。
Sitecoreエディターの統合に必要な設定を作成するには、次の手順に従います。
-
Next.js JSSアプリケーションディレクトリのルートで、/sitecore/configファイルを開きます。
-
configuration/sitecore/javaScriptServices/appsパスのNext.jsアプリケーションのappノードで、次の属性を設定します。
-
serverSideRenderingEnginehttpに。これは、Next.jsアプリケーションがSitecoreエディターとの統合にHTTPレンダリング エンジンを使用しているためです。
-
serverSideRenderingEngineApplicationUrl選択したホスト名とポートに貼り付けます。デフォルト値はhttp://localhost:3000です。
-
serverSideRenderingEngineEndpointUrlを、SitecoreエディターからのPOSTリクエストを処理するためのNext.jsアプリのAPIルートの絶対URLに設定します。デフォルト値は、レンダリング ルート (Render API Route)http://localhost:3000/api/editing/renderのルートです。
デフォルト値のデフォルト設定は次のとおりです。
RequestResponse<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> ... <javaScriptServices> <apps> <app name="exampleApp" ... serverSideRenderingEngine="http" serverSideRenderingEngineEndpointUrl="http://localhost:3000/api/editing/render" serverSideRenderingEngineApplicationUrl="http://localhost:3000" ... /> </apps> </javaScriptServices> ... </sitecore> </configuration>
-
-
ターミナルで、次のコマンドを実行して、新しい設定をSitecoreインスタンスにデプロイします。
RequestResponsejss deploy config
Sitecoreエディター エンドポイントを保護する
Next.jsアプリケーションを使用して編集モードでSitecoreページをレンダリングする場合、Next.jsアプリのエディター統合APIルートを通じてSitecoreエディター エンドポイントを公開します。
Sitecoreエディターのエンドポイントを保護するには、まずシークレット トークンを生成する必要があります。Sitecoreでは、英数字の値at least 16 charactersを推奨しています。
このシークレットは、サーバー側とクライアント側の両方で設定する必要があり、値は一致する必要があります。
JSS Editing Secretをサーバー側で設定するには、2つのオプションがあります。SITECORE_JSS_EDITING_SECRET環境変数を設定するか、Sitecore構成パッチを使用してSitecoreエディターエンドポイントを保護できます。
Sitecore設定パッチを使用してSitecoreエディター エンドポイントを保護するには、次の手順に従います。
-
Next.js JSSアプリケーションディレクトリのルート、/sitecore/configファイル、configuration/sitecore/javaScriptServices/settingsノードで、以下を追加またはコメント解除してJavaScriptServices.ViewEngine.Http.JssEditingSecretを設定します。
RequestResponse<setting name="JavaScriptServices.ViewEngine.Http.JssEditingSecret" value="<YOUR_SECRET_TOKEN>" />
-
ターミナルで、次のコマンドを実行して新しい設定をSitecoreインスタンスにデプロイします。
RequestResponsejss deploy config
Next.jsアプリケーションを構成する
Sitecoreエディター統合用にNext.jsアプリケーションを設定するには:
-
プロジェクトのルートディレクトリにある .envファイルで、環境変数JSS_EDITING_SECRETをサーバー側で構成したSITECORE_JSS_EDITING_SECRETの値に設定します。
-
Sitecoreエディターで編集可能な任意のページで、useEffect Reactフック内で、ユーティリティ関数handleEditorFastRefreshがまだ存在しない場合は呼び出します。
RequestResponseimport { handleEditorFastRefresh } from '@sitecore-jss/sitecore-jss-nextjs'; const MyPage = ({ notFound, layoutData, componentProps }: SitecorePageProps): JSX.Element => { useEffect(() => { // Refresh Experience Editor markup and JS after Next.js Fast Refresh handleEditorFastRefresh(); }, []); ... }; export default MyPage;
手記Next.jsサンプル アプリケーションには、既定のキャッチオール ルートにこのコードが既に含まれています。
Next.jsの高速更新機能では、レンダリングごとにSitecoreエディターによって挿入された追加のマークアップとJavaScriptを保持するために、Sitecoreエクスペリエンス エディター内で特別な処理を行う必要があります (多くの場合、エディター クロームと呼ばれます)。
デフォルトでは、エディターのクロムのみが更新されます。一部のシナリオでは、forceReloadパラメーターを使用して、代わりにページ全体を強制的に再読み込みしたい場合があります。
RequestResponsehandleEditorFastRefresh(true)
Next.jsでtrailingSlashが有効になっている場合のJSSアプリの構成
Next.jsのtrailingSlash設定オプションを有効にしている場合、JSSアプリのSitecore設定は、後続のリダイレクト動作を考慮する必要があります。そうしないと、アプリをSitecoreにデプロイした後にエクスペリエンス エディターを開くと、次のエラーが表示されます。
Connection to your rendering host failed with a Permanent Redirect error. Ensure the POST endpoint at URL http://localhost:3000/api/editing/render has been enabled.
エラーを防ぐには:
-
Next.jsアプリのSitecore構成パッチ ファイルで、末尾にスラッシュが含まれるようにserverSideRenderingEngineEndpointUrl設定を変更します。たとえば、serverSideRenderingEngineEndpointUrl="http://localhost:3000/api/editing/render" からserverSideRenderingEngineEndpointUrl="http://localhost:3000/api/editing/render/"です。
-
ターミナルで、次のコマンドを実行して、新しい設定をSitecoreインスタンスにデプロイします。
RequestResponsejss deploy config
統合を確認する
Next.jsアプリケーションが正しく実行されていることを確認するには、次のようにします。
-
アプリケーションのURLを開きます (デフォルトではブラウザー http://localhost:3000 )。
-
エクスペリエンス エディターでページを開き、変更を加えます。
先端Next.jsを開発モードで実行すると、動的コンパイルのために最初のページ編集でタイムアウトが発生する場合があります。ただし、これは後続の要求で自動的に解決されることが期待できます。
問題が発生した場合:
-
JSSデバッグ ロガーを使用して、Next.jsアプリでのSitecoreエディター統合をデバッグします。これは、発生している問題の原因を特定するのに役立ちます。
-
JSS編集シークレットがサーバー側とクライアント側の両方で一致していることを確認します。
-
Sitecoreログにエラーがないか確認します。