のは、順不同リストをレンダリングし、プロジェクトのプレゼンテーションコンポーネントが存在するとしましょう私たちは、ページ上の任意のListRendererにデータを供給するカップルのオプションがあります(おそらく、ListRendererと呼ばれるが。):サイトコアのコンテンツツリーアーキテクチャ
- コンテンツアイテムにTreeList(またはTreeListEx)フィールドがあり、そこからListRendererを読み取るようにします。
- プレゼンテーションの詳細を介して、ListRendererにDataSource(または他のパラメータ)を供給します。
私は通常サブレイアウトをテンプレートにバインドするので、私のプロジェクトでは#1を避けていますが、これはかなり面倒です。そのパスを下ると、最終的にプロジェクト内のすべての潜在的なサブレイアウトをサポートするフィールドが表示されます。
私のソリューションは、その問題を取り除くオプション#2に向く傾向があります。しかし、それは自分の質問のバッグが付属しています。与えられたListRendererがこれらのさまざまな "List"をどこに入れて使うのですか?再利用と共有を最大限にするために、私はリストが共有されると予測すれば、通常、サイトルートの近くにこれらのタイプのものをすべて含むコンポーネントディレクトリを作成します。これは、プレゼンテーションの詳細を開く方法を知っていないかぎり(私の平均的なユーザーにとっては少し進んでいる)、ListRendererのソースがどこにないのか突然わからないコンテンツ作成者にとって、使いにくく、使いにくいようです。
リストが共有されず、ページに固有のものだと思われる場合は、問題のアイテムのすぐ下に配置します。しかし、コンテンツツリーを混乱させる傾向があり、動的に生成されたナビゲーションサブレイアウトは、項目がリンクを生成する前に実際のページであるかどうかをチェックする必要があります。私がSitecoreで働くほど、このアプローチは少なくなりますが、コンテンツ作成者にとってはより簡単に思えます。このアプローチを使用すると情報へのアクセスがずっと簡単になります。
業界で認められているこの問題に近づく方法はありますか?それはいつもプロジェクトで起こり、私の頭の中では、私はこれらのような状況で技術とコンテンツの著者の懸念をバランスさせるために奮闘しています。
簡単な答えはいいえ、業界標準はありません。 Sitecore開発者がよく熟考しても、あなたが言及したことはすべて共通のものです。主に要件に基づいています。これらのモジュラーサブレイアウトのページエディターをサポートしている場合は、グローバルに共有されているデータソースフォルダーを使用して#2のアプローチが必要です。コンテンツエディタを使用していてプレゼンテーションの詳細が気に入らない場合、サブアイテムによっては簡単になる場合もあります。アプローチを選択して各プロジェクトに強制するか、編集者の要件に基づいてプロジェクトごとのアプローチを定義する(私の好み) –