2011-02-05 79 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