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

Orchardcms Orchard CMS:将图像添加到自定义项目,orchardcms,orchardcms-1.8,Orchardcms,Orchardcms 1.8,再次你好:)我的下一个关于Orchard CMS的问题看起来很琐碎,但是 我的自定义新闻模块具有新闻项类型,包括标题部分、正文部分、自定义新闻部分新闻部分基于新闻部分记录 现在,我必须用图像扩展我的新闻项目文档类型。到目前为止,我发现有ImagePart和MediaLibraryPickerField。 ImagePart存储图像的width和heihgt,所以我认为它是供内部使用的 下一个是MediaLibraryPickerField。在谷歌搜索了一段时间后,我发现我可以使用WithFiel

再次你好:)我的下一个关于Orchard CMS的问题看起来很琐碎,但是

我的自定义新闻模块具有
新闻项
类型,包括
标题部分
正文部分
、自定义
新闻部分
<代码>新闻部分基于
新闻部分记录

现在,我必须用图像扩展我的
新闻项目
文档类型。到目前为止,我发现有
ImagePart
MediaLibraryPickerField
ImagePart
存储图像的
width
heihgt
,所以我认为它是供内部使用的

下一个是
MediaLibraryPickerField
。在谷歌搜索了一段时间后,我发现我可以使用
WithField()
方法扩展我的
NewsPart
。 但是这里的第一个问题:当我使用管理UI配置
页面
类型时,我可以将字段添加到
类型
。但是使用
迁移
我不能将字段添加到
新闻项目
,只能添加到
新闻部分

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

那么,在Orchard中,用图标扩展项目的最佳实践是什么


谢谢。

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

要添加您正在使用的部件,请使用AlterTypeDefinition

this.ContentDefinitionManager.AlterTypeDefinition(
    "NewsItem", 
    cfg => cfg.WithPart("NewsPart"));
但要添加字段,还必须使用AlterPartDefinition并指定新闻项而不是新闻部分

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")

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

好的,当您在管理UI中将字段添加到
类型
时,orchard会创建与
类型
同名的新
部分
。因此,第一个问题已经解决,我只能在
部分添加字段,您应该一次问一个问题。问两个问题几乎可以保证只给你一个问题的答案,而且这会使文章的谷歌搜索效率降低。“媒体选取器”字段有一个用于限制可选择的媒体内容类型的设置。将
MediaLibraryPickerField
添加到
part
显然不是问题所在。在第一部分中,我询问了如何将字段添加到
类型中,但我已经发现这是不可能的。考虑到第二部分,我以前没有读过关于
DisplaydContentTypes
,所以非常感谢,似乎这正是我需要的。我应该使用什么
DisplaydContentTypes
值来过滤图像?已尝试
图像
,但不起作用。在源代码中找不到这些字段您不了解我的意思,您可以通过
AlterPartDefinition
Type
添加字段。它的名字让人困惑,它也可以用来向类型中添加字段。只是不要将其作为部件的第一个参数名,而是将其作为类型的名称,即“NewsItem”。我不知道该怎么说。添加字段不是问题。问题是允许用户仅从媒体库中选择图像。我不知道DisplayedContentTypes不起作用。在这个问题上产生了争议