メニューの生成とブレッドクラムについては、自分で処理する必要があり、最終的にはSiteMapProvider でSiteMap.Resolveイベントを使用して、「存在しない」ページを動的にフックインします。
ルートに関しては、C1 に機能があり、URL を最初の「実際のページ」に解析し、作業できる URL の余分な部分を渡します。/myshop がショップ ページで、ユーザーが /myshop/clothes をリクエストした場合、実行されるのは /myshow であり、カテゴリを処理するコードをそこに配置します。
「myshop」ページで「服」を抽出するコードは になりComposite.Core.Routing.Pages.C1PageRoute.GetPathInfo()
、C1 に 404 エラーをスローしないように指示するには、 を呼び出しComposite.Core.Routing.Pages.C1PageRoute.RegisterPathInfoUsage()
て、「服」が有効なカテゴリであることを C1 に知らせます。
API の詳細については、こちらをご覧ください。
カテゴリが選択されたときや、ユーザーが /myshop を直接クリックしたときなど、さまざまな状況を処理する必要がある場合は、特定のテンプレートを使用するように MyShop ページを設定し、そこで<rendering:contentplaceholder>
要素を関数でラップします。一種のelse-ifロジック。カテゴリが選択されていない<rendering:contentplaceholder>
場合は、 のコンテンツを出力します。それ以外の場合は、カテゴリに基づいて検索を行い、代わりに他のコンテンツを出力します。