하위 레이아웃의 코드가 문맥 항목 위에 설정된 경우 데이터 소스 사용을 허용합니까? 당신은 여러 가지 방법으로 이것을 달성 할 수 있습니다. 예컨대 기본 클래스에서 :
protected string DataSource
{
get
{
var sublayout = Parent as SublayoutBase;
return sublayout == null ? string.Empty : sublayout.DataSource;
}
}
protected Item DataSourceItem
{
get
{
return string.IsNullOrEmpty(DataSource)
? Sitecore.Context.Item
: Sitecore.Context.Database.GetItem(DataSource) ?? Sitecore.Context.Item;
}
}
그런 다음 sublayout에 대한 코드가 내용을 표시하기보다는 상황에 맞는 항목을 DatSourceItem을 사용하여 내부. 기본적으로 코드가 상황에 맞는 항목에 대해 작성되는 경우에도 데이터 소스를 지원합니다 그들의 기본 클래스에서이를 상속이 모든 sublayouts를 사용
protected override void Render(HtmlTextWriter writer)
{
if (this.DataSourceItem != null)
using (new Sitecore.Data.Items.ContextItemSwitcher(this.DataSourceItem))
{
base.Render(writer);
}
else
{
base.Render(writer);
}
}
:이 일 본 또 다른 방법이다.