2011-02-05 2 views
2

과수원에 대한 사용자 정의 테마를 작성하려고하는데 지금까지별로 성공하지 못했습니다. 나는 대체 부분에 관해 Bertrand Le Roy's 기사를 읽었다. 그러나 나는 그것이 일하는 것처럼 보일 수 없다.과수원 테마 부분을 사용자 정의하기

프론트 페이지에 최근 블로그 게시물 목록을 표시합니다. 꽤 표준입니다. 메타 데이터 부분에 의해 생성 된 마크 업, 즉 시간 형식을 변경하고 싶습니다.

나는 IShapeTableProvider을 작성하여 메타 데이터 요약 부분에 대한 블로그 관련 대체물을 만들었습니다.

public class MetaDataShapeProvider : IShapeTableProvider 
{ 
    private readonly IWorkContextAccessor workContextAccessor; 

    public MetaDataShapeProvider(IWorkContextAccessor workContextAccessor) 
    { 
     this.workContextAccessor = workContextAccessor; 
    } 

    public void Discover(ShapeTableBuilder builder) 
    { 
     builder 
      .Describe("Parts_Common_Metadata_Summary") 
      .OnDisplaying(displaying => 
      { 
       ContentItem contentItem = displaying.Shape.ContentItem; 
       if (contentItem != null) 
       displaying.ShapeMetadata.Alternates.Add("Metadata__" + contentItem.ContentType); 
      }); 
    } 
} 

정확하게 잡히고 있지만 contentItem이 null입니다. 나는 단지 "Metadata-BlogPost"와 같은 고정 된 이름을 가진 대체물을 만들어 사용해야 만한다. 그래서이 범용 목적을 만들기 위해 다른 이름으로 대체 템플릿을 사용할 수있다.

감사합니다,

이안

답변

1

모양이 같은 렌더링되는 콘텐츠 부분에서 컨텐트 항목을 고려하십시오 :

displaying.Shape.ContentPart.ContentItem; 

대신

displaying.Shape.ContentItem; 

Parts_Common_Metadata_Summary 셰이프는 명명 된 매개 변수로 전달 된 관련 콘텐츠 파트 개체를 가져옵니다. ContentPart, 그렇게해야합니다.

HTH