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