2012-03-05 1 views
1

리스트를 렌더링하는 방법을 사용자 정의 할 수 있기를 원합니다. ContainerWidget. 단지 나에게 다음과 같은 옵션을 제공합니다 추적 모양 :오차드에서 컨테이너 위젯에 대한 존 기반 대체품을 어떻게 추가합니까?

  1. Parts.ContainerWidget.cshtml을
  2. Parts.ContainerWidget-URL-homepage.cshtml

I가 대체를 제공 할 수 있도록하고 싶습니다 특정 지역. I 그 생각은 IShapeTableProvider이긴하지만 확실하지 않습니다. 나 또한 위젯 대체 (Widget-MyZone.cshtml)를 사용하는 방법을 생각해 봤지만 기본 렌더링 항목을 사용하여 직접 렌더링하는 방법을 이해할 수 없습니다. 또한, 위젯을 오버라이드하는 것은 과도한 것처럼 보입니다. 이상적으로는, Parts.ContainerWidget-MyZone.cshtml과 같은 Part alternate를 추가 할 수 있기를 원합니다.

웹에서이 문제에 대해 다루는 게시물이 많이 있지만 실제로 찾을 수있는 것은 구체적인 작업 예제를 가리키는 것이 아닙니다.

이 방법이 맞습니까? 내가 시도해야 할 다른 것? 주위에 어떤 예가 있습니까?

답변

1

그것은 오차드 1.4이 내장되어 해당 영역 기반 컨테이너 위젯 교대에 대한 지원 밝혀 : 여기 (안 테스트) 대략적인 예입니다. 따라서 권장되는 솔루션은 1.4로 업그레이드하는 것입니다.

0

IShapeTable 공급자가 작동해야합니다. 당신이 그것을 시도하면 어떻게됩니까?

public class Shapes : IShapeTableProvider { 
    public void Discover(ShapeTableBuilder builder) { 
     builder.Describe("Content").OnDisplaying(displaying => { 

       if (displaying.ShapeMetadata.DisplayType == "Detail" 
        && (displaying.Shape.ContentItem as ContentItem).ContentType.Equals("MyWidgetType", System.StringComparison.OrdinalIgnoreCase)) { 

        var metadata = displaying.ShapeMetadata; 
        ContentItem contentItem = displaying.Shape.ContentItem; 
        metadata.Alternates.Add("MyWidgetType_MyCUstomAlternate"); 
       } 

      }); 



    } 
+0

간단한 모양 테이블 공급자 (http://pastebin.com/NwiYqh6a)를 만들어 내 테마의 "코드"폴더에 넣었지만 아무 것도하지 않는 것 같습니다. 모양 추적은 Parts_ContainerWidget에 대한 다른 대체 항목을 표시하지 않습니다. – Ragesh

+0

관련 메모에 셰이프 테이블 공급자 (사용 방법, 수행 할 수있는 기능 등)에 대한 설명서가 있습니까? – Ragesh

+0

"WidgetAlternates"및 "UrlAlternates"모듈을 아직 활성화하지 않은 경우 활성화하십시오. –