2012-05-08 2 views
1

이, 내가 템플릿의 표준 값에 sublayout이 규칙을 적용했습니다 사용자 프로필 fb_likes 필드 TestItem2Sitecore 규칙이 데이터 소스를 다른 항목으로 설정하지 않습니까?

에 sitecore

세트 데이터 소스를 포함

내 규칙이지만, 이 규칙은 데이터 소스를 변경하지 않습니다.

또한이 조건

사실 (행동이 항상 실행)

을 시도했습니다. 내가 렌더링

숨기려면 작업을 변경할 경우

그러나 다시 행운

,

그것을 잘 작동합니다.
내가 뭘 잘못하고 있니?

답변

1

하위 레이아웃의 코드가 문맥 항목 위에 설정된 경우 데이터 소스 사용을 허용합니까? 당신은 여러 가지 방법으로 이것을 달성 할 수 있습니다. 예컨대 기본 클래스에서 :

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); 
     } 
    } 

:이 일 본 또 다른 방법이다.

관련 문제