我正在尝试为果园编写一个自定义主题,到目前为止还没有取得多大成功。我已经阅读了关于部分候补的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”并使用它,为了实现这个通用目的,它应该是一个动态名称,以便我可以在其他地方使用另一个替代模板。
谢谢,
伊恩
答案 0 :(得分:1)
尝试从呈现形状的内容部分中获取内容项,例如:
displaying.Shape.ContentPart.ContentItem;
而不是
displaying.Shape.ContentItem;
Parts_Common_Metadata_Summary 形状获取作为命名参数 ContentPart 传递的相关内容部件对象,因此应该这样做。
HTH