2

我正在尝试为果园编写一个自定义主题,但到目前为止还没有取得太大的成功。我已经阅读了Bertrand Le Roy 的部分替代文章,但我似乎无法让它发挥作用。

我在首页上显示了最近的博客文章列表,非常标准。我希望更改元数据部分产生的标记,即时间格式。

我写了一个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”)的替代名称并使用它,以使其具有通用性,它实际上应该是一个动态名称,以便我可以在其他地方使用另一个替代模板。

谢谢,

伊恩

4

1 回答 1

1

尝试从为其呈现形状的内容部分获取内容项,例如:

displaying.Shape.ContentPart.ContentItem;

代替

displaying.Shape.ContentItem;

Parts_Common_Metadata_Summary形状获取作为命名参数ContentPart传递的相关内容部分对象,因此应该这样做。

高温高压

于 2011-03-09T00:48:27.047 回答