ページ エディターの使用に移行する準備として、Sitecore ソリューションを「コンポーネント化」しようとしてきましたが (すごい!ついに!)、継承ベースの複合体である可能性のあるページ テンプレートを主に使用して実際に作業しています。ページ固有のフィールドに加えて、これらのコンポーネント化されたテンプレートの 1:多く。これが当社のソリューションでどのように見えるかの例を以下に示します。バナー機能カルーセルと注目の漫画は、当社が作成しているこれらの新しいコンポーネントの一部です。
Sitecore.Context.Item を使用しないようにするために (この記事で最近思い出したように)、新しいコンポーネントのサブレイアウトのデータソース テンプレート フィールドに入力し始めました。プレゼンテーションの詳細、Sitecore サブレイアウト、および .NET コード ファイルの間で適切な接続が確立されました (私が知る限り、この方法で作業するのは私たちの方が新しいです)。
また、Nick Allen によるこの投稿に従って、これらのコンポーネントの基本クラスを設定しようとしましたが、ここで問題が発生しています。コードを実行すると、この基本クラスはコンポーネントのサブレイアウトを適切に見つけています (全体「this.Parent as Sublayout」のこと) しかし、Sublayout.Datasource プロパティを調べると、空の文字列になります。この基本クラスのコードは次のとおりです (これまでのところ)。
public class ComponentBase : System.Web.UI.UserControl
{
private Sublayout Sublayout { get { return Parent as Sublayout; } }
public Item DataSourceItem
{
get
{
return Sublayout != null && !String.IsNullOrEmpty(Sublayout.DataSource) ?
Sitecore.Context.Database.GetItem(Sublayout.DataSource) : Sitecore.Context.Item;
}
}
}
どうやら、Sitecore サブレイアウトのデータソース テンプレート フィールドと、それが実際にデータソースに変換される方法との間の相互作用が欠けているようです。これらのコンポーネント テンプレートがページ テンプレートを構成するために使用されているためですか? データソースは、問題のコンポーネントが現在使用されているページ テンプレートに最終的に解決されると考えていましたが、おそらくそれは私の誤解です。
誰かが私に確認すべきことのヒントを教えてくれたり、さらに先に進むために使用できるリソースを教えてくれたりしたら、私はそれを感謝します. 私自身、Googs にかなりの質問をしましたが、役に立ちそうなものは何も得られませんでした。
Sitecore の皆様、よろしくお願いします。