Orchard CMS:如何在新模块中添加媒体选择器字段

4

我正在为Orchard CMS构建一个模块。 我想在我的模块中使用Mediapicker模块。

通过Orchard后端界面,可以将模块添加到内容项中。 不清楚的是如何在另一个模块中使用一个模块。

我该如何在Visual Studio的Razor视图中添加Mediapicker字段?

2个回答

5
您需要查看 Orchard.Fields 中的 MediaPickerFieldDriver.cs 和 MediaPicker.Edit.cshtml。这将为您提供所需的一切。 但是,您试图做什么并不完全清楚。如果您只是想从代码中向内容类型添加媒体选择器字段,则应该像这样在迁移中执行:
ContentDefinitionManager.AlterPartDefinition("Product",
    builder => builder.WithField("ProductImage",
        fieldBuilder => fieldBuilder
            .OfType("MediaPickerField")
            .WithDisplayName("Product Image")));

更新:正如 @ed13 在他的回答中指出的那样,对于更近期版本的Orchard 1.x(1.10+),字段类型应为MediaLibraryPickerField而不是MediaPickerField

在Orchard 1.8中没有名为AlterPartDefinition的方法。在这种情况下该怎么办? - Sriwantha Attanayake
好的,找到了。它来自一个扩展方法! - Sriwantha Attanayake
如果有人使用更高版本的Orchard,则应该使用"MediaLibraryPickerField"类型。请参阅我的答案中的完整代码片段:https://dev59.com/kGPVa4cB1Zd3GeqP30C1#52038109 - ed13

1
如果有人使用更高版本的Orchard(v1.10.+),添加媒体选择器字段所需的代码如下:
ContentDefinitionManager.AlterPartDefinition("YourContentPart", builder =>
                builder.WithField("BackgroundImage",
                    fieldBuilder => fieldBuilder
                        .OfType("MediaLibraryPickerField")
                        .WithDisplayName("Background Image")));

希望能对某些人有所帮助。

你能解释一下它跟我的答案有什么不同吗? - Bertrand Le Roy
@BertrandLeRoy 当然可以 - MediaPickerField 在我的版本(1.10.2)中无法正常工作。我不得不使用MediaLibraryPickerField - 我以为这只是版本问题,难道不是吗? - ed13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接