.net 自定义orchard主题部件

.net 自定义orchard主题部件,.net,asp.net,asp.net-mvc,orchardcms,.net,Asp.net,Asp.net Mvc,Orchardcms,我正在尝试为orchard编写一个自定义主题,到目前为止还没有太大成功。我读过一篇关于备用零件的文章,但我似乎无法使它发挥作用 我在头版上显示了最近的博客文章列表,非常标准。我希望更改元数据部分生成的标记,即时间格式 我已经编写了一个IShapeTableProvider,为元数据摘要部分创建特定于博客的备选方案 public class MetaDataShapeProvider : IShapeTableProvider { private readonly IWorkContext

我正在尝试为orchard编写一个自定义主题,到目前为止还没有太大成功。我读过一篇关于备用零件的文章,但我似乎无法使它发挥作用

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

我已经编写了一个
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”)的备用名称,并使用该名称,使其成为一个通用名称,这样我就可以在其他地方使用另一个备用模板

谢谢


Ian

尝试从渲染形状的内容部分获取内容项,如:

displaying.Shape.ContentPart.ContentItem;
而不是

displaying.Shape.ContentItem;
Parts\u Common\u Metadata\u Summary形状获取作为命名参数传递的相关内容部分对象ContentPart,因此应该这样做