順序付けされていないリスト(おそらくListRendererと呼ばれる)をレンダリングするプレゼンテーションコンポーネントがプロジェクトに存在するとします。ページ上の任意のListRendererにデータを提供するオプションがいくつかあります。
- コンテンツアイテムにTreeList(またはTreeListEx)フィールドを設定し、そこからListRendererを読み取ります。
- プレゼンテーションの詳細を介して、データソース(または他のパラメーター)をListRendererに提供します。
Sublayoutsをテンプレートにバインドするため、プロジェクトで#1を使用することは通常避けていますが、これは非常に面倒です。その道を進むと、最終的には、プロジェクト内のすべての潜在的なサブレイアウトをサポートするフィールドができます。
したがって、私の解決策は、その問題を取り除くオプション#2に向かう傾向があります。ただし、独自の質問バッグが付属しています。特定のListRendererが使用するこれらのさまざまな「リスト」はどこに配置しますか?再利用と共有を最大化するために、リストが共有されると予測した場合、通常、サイトルートの近くにこれらすべてのタイプのものを含むコンポーネントディレクトリを作成します。これは、コンテンツ作成者にとっては見つけにくく、使いにくいように思われます。コンテンツ作成者は、プレゼンテーションの詳細をクラックする方法を知らない限り、ListRendererのソースがどこにあるのか突然わかりません(これは私の平均的なユーザーにとっては少し進んでいます)。
リストが共有されないように感じ、ページに非常に固有である場合は、問題のアイテムのすぐ下にリストを配置します。ただし、これはコンテンツツリーを混乱させる傾向があり、動的に生成されたナビゲーションサブレイアウトは、アイテムへのリンクを生成する前に、アイテムが実際のページであるかどうかを確認する必要があります。Sitecoreで作業すればするほど、このアプローチを使用することは少なくなりますが、コンテンツ作成者にとっては簡単に思えます。このアプローチを使用すると、情報へのアクセスがはるかに簡単になります。
この問題に取り組むための業界で認められた方法はありますか?これは常にプロジェクトで発生します。私の頭の中では、このような状況で技術的な問題とコンテンツの作成者の問題のバランスを取るのに苦労しています。