Orchard CMS:将图像添加到自定义项目

时间:2014-10-23 10:29:44

标签: orchardcms orchardcms-1.8

嗨再次:)我关于Orchard CMS的下一个问题看起来微不足道但是......

我的自定义NewsModule具有NewsItem类型,其中包含TitlePartBodyPrt和我的自定义NewsPartNewsPart基于NewsPartRecord

现在我必须使用Image扩展我的NewsItem文档类型。到目前为止,我发现有ImagePartMediaLibraryPickerFieldImagePart存储widthheihgt图片,因此我认为它适合内部使用。

下一个是MediaLibraryPickerField。谷歌搜索了一段时间后,我发现我可以使用NewsPart方法扩展我的WithField()。 但!第一个问题:当我使用管理员界面配置Page类型时,我可以向type添加字段。但是使用Migrations我无法将字段添加到NewsItem,只能添加到NewsPart

这里的第二个问题。 MediaLibraryPicker允许我从库,图像,文本,zip或任何其他文件中选择任何类型的文件。这不是我真正需要的。

那么,Orchard使用图标扩展Items的最佳做法是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以向NewsItem添加字段,它只需要不同类型的定义。它也使我感到困惑,因为它不像你想的那样直观。

添加使用 AlterTypeDefinition 的部件。

this.ContentDefinitionManager.AlterTypeDefinition(
    "NewsItem", 
    cfg => cfg.WithPart("NewsPart"));

但是要添加字段,您还必须使用 AlterPartDefinition 并指定NewsItem而不是NewsPart。

this.ContentDefinitionManager.AlterPartDefinition(
    "NewsItem", 
    builder =>
        builder.WithField(
            "NewsImages", 
             fieldBuilder =>
                 fieldBuilder.OfType("MediaLibraryPickerField")
                 .WithDisplayName("News Images")
                 // Allow multiple images
                 .WithSetting("MediaLibraryPickerFieldSettings.Multiple", "true"))

考虑到第二个问题,MediaLibraryPickerField可以选择只显示选定的类型/部分。

.WithSetting(MediaLibraryPickerFieldSettings.DisplayedContentTypes="Document,Video")

如果您需要新媒体类型,则必须使用Stereotype“Media”创建新的ContentType,它还需要“MediaPart”以及定义该类型元数据的部分。您可以查看如何为示例代码定义文档视频