2011-02-05 80 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爲空。我是否應該創建一個具有固定名稱(如「Metadata-BlogPost」)的替代品並使用它,爲了實現這個通用目的,它應該是一個動態名稱,以便我可以在別處使用另一個替代模板。

感謝,

伊恩

回答

1

嘗試採取內容項目從它的形狀被渲染,如內容的一部分:

displaying.Shape.ContentPart.ContentItem; 

而不是

displaying.Shape.ContentItem; 

Parts_Common_Metadata_Summary形狀獲取相關內容部分對象作爲命名參數傳遞ContentPart,所以應該這樣做。

HTH