Orchard CMS 1.4:将文本字段添加到自定义ContentPart
问题描述:
在自定义ContentPart的模块中,如何将字段设置为文本字段?Orchard CMS 1.4:将文本字段添加到自定义ContentPart
在我migrations.cs类,我创建了表的一部分:
public int UpdateFrom1()
{
SchemaBuilder.CreateTable("RightContentPartRecord", table =>
table.ContentPartRecord()
.Column<string>("Html"));
return 2;
}
所以,我有一个称为HTML列。我想使用所见即所得的编辑器,所以我被告知我需要一个文本字段才能使它“开箱即用”。
但是,这不会发生在我身上,所以我需要做些什么才能将名为Html的列转换为零件上的文本字段?
我该如何配置它以使用所见即所得的编辑器?
答
文本字段与部件属性不同。字段不作为自己的数据库列存储。下面是如何将一个字段从迁移添加到零件的例子:
ContentDefinitionManager.AlterPartDefinition("Product",
builder => builder.WithField("ProductImage", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Product Image")));
对于文本字段,你想也需要通过添加.WithSetting("Flavor", "html")
到外地生成器来设置风味设置。
答
如果您希望将自己的自定义内容部分的属性显示为htmleditor,请在部件的editortemplate中将其配置为如下形式。
@Script.Require("OrchardTinyMce")
@Html.TextAreaFor(x => x.Header, new { @class = "html tinymce" })
在这种情况下,'Header'属性显示为一个html编辑器。
如果您需要更多的部分,可以考虑为它编写一个Html扩展或编辑器模板。
谢谢我已经到了那里,现在我的问题是,由于该字段不是该部分的模型的一部分,因此它不是该形状的一部分。所以当我尝试放置零件时(使用Pete Hurst的ZoneProxy代码),结果表明该字段是具有通用名称的不同形状的一部分,所以不能放置。有没有办法让场地成为形状的一部分?或者控制字段的形状名称,以便我可以单独精确放置它(并且不要将所有其他字段形状放在页面上,并且名称相同,例如Field_Common_Text)? – awrigley
或者有没有办法使一个领域的一部分属性,以便它共享形状... – awrigley
不。那不是你需要的领域。看看身体部位是如何构建的并将其复制到您的身上。 –