チュートリアル: JSS Next.jsアプリでのビルド時の静的パスのカスタマイズ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
多くのページ、製品、または記事を含む非常に大規模なWebサイトでは、すべてのページの静的生成に時間がかかる場合があります。静的生成から一部の種類のページ/アイテムを除外することで、静的に生成されたアプリケーションのビルド時間を短縮できます。
これを実現するには、getStaticPaths関数でカスタマイズされたsitemap-fetcherを使用して、ビルド時に静的に生成されるページ パスの一覧を変更します。
このチュートリアルでは、次の方法について説明します。
-
カスタム サイトマップ サービスを作成します。
-
カスタムサイトマップフェッチャーを作成して、静的パスのリストをカスタマイズします。
カスタム サイトマップ サービスを作成する
クラスGraphQLSitemapServiceとインターフェースGraphQLSitemapServiceConfigを拡張して、特定のアイテムタイプを除外できるようにすることができます。
-
src/libで、新しいファイルsitemap-service.tsを作成します。
-
新しいファイルで、Sitecore Next.js SDKからクラスGraphQLSitemapService IDとインターフェイスGraphQLSitemapServiceConfigをインポートします。
-
GraphQLSitemapServiceConfigを拡張し、サービス設定にオプションを追加します。
-
Sitecore Delivery Edgeでは、検索クエリに有効なIDが必要です。 excludeItemIdオプションを使用しない場合は、有効で空のidを指定する必要があります。 emptyID定数を宣言します。
-
GraphQLSitemapServiceクラスを拡張し、query getterをオーバーライドして、excludeItemIdにIDを指定すると、その型の項目が返されないようにします。
メモクエリパラメータ で$excludeItemId: String = "${this.options.excludeItemId ?? emptyId}"を提供し、s earchクエリに{ name: "_path", value: $excludeItemId, operator: NCONTAINS }条件を提供します。
カスタムサイトマップフェッチャーを作成して、静的パスのリストをカスタマイズします
新しいサイトマップ サービスが導入されたことで、ニーズに合ったサイトマップ フェッチャーを追加できるようになりました。
-
src/lib/sitemap-fetcher.jsで、新しいサイトマップ サービスなど、必要なライブラリをインポートします。
リファクタリングされたサイトマップ フェッチャーを使用して、アプリ内の動的ルートの静的パスのリストをカスタマイズできるようになりました。
一部のアイテムタイプを除くすべてのページをフェッチします
新しいExtendedSitemapServiceを使用して、静的パスのリストから特定のアイテムタイプを除外するサイトマップ フェッチャーを作成できます。
たとえば、Products以外のすべてのページを取得するには、次のようにします。
-
src/lib/sitemap-fetcher.jsで、次のRootSitemapFetcherを実装します。
-
RootSitemapFetcherのインスタンスをエクスポートします。
-
ファイルsrc/pages/...path.tsxで、RootSitemapFetcherのインスタンスをインポートします。
-
rootSitemapFetcherを使用するようにgetStaticPathsを変更/追加します。
製品のみを取得する
新しいExtendedSitemapServiceを使用して、特定の種類のアイテムのみをフェッチできます。
たとえば、Productsのみを取得するには、次のようにします。
-
src/lib/sitemap-fetcher.jsでは、製品パスのみを返すProductSitemapFetcherを実装します。
-
フェッチャーのインスタンスをエクスポートします。
-
ファイルsrc/pages/products/path.tsxで、ProductSitemapFetcherのインスタンスをインポートします。
-
productSitemapFetcherを使用するようにgetStaticPaths機能を変更/追加します。