这次我正在为Orchard的自定义小部件挣扎。 这是一个简单的内容部分,包含两个字段: - 背景颜色 - 尺寸
我希望能够将HTML内容添加到此小部件中;所以我添加了身体部位。此部分必须显示在我的小部件中。结果应该是这样的:
<div class="size-small bg-color-red"> BODY PART HTML CONTENT </div>
但遗憾的是,Body Part始终在之前或之后我的小部件显示。
<Placement>
<Place Parts_ContentTile="Content"/>
<Place Parts_ContentTile_Edit="Content:7.5"/>
</Placement>
不太好'解决方案': 解决此问题的方法是删除正文部分并将其替换为简单的文本字段。此文本字段呈现在所需位置。但是TinyMCE编辑器不可用。
Ivan评论后更新:
我试图更改它们(内容类型和内容部分(单独))但不幸的是,两次都在窗口小部件之后显示TextField内容。应该在Placement.info中修复吗?
另一种选择是在我的Widget模型中添加一个String字段。但是,不可能展示TinyMCE编辑器。我是对的吗?
所以我觉得我对小部件,内容部分和展示位置的期望是不正确的。希望有人能指出我正确的方向。
答案 0 :(得分:2)
使用TextField
时,您可以在字段设置中指定TinyMCE
来使用HTML flavor
。
为此,您可以转到内容→(内容类型或内容部件,具体取决于您要更改的内容)→选择您的ContentType
或ContentPart
→展开您正在使用的TextField
的定义→从Flavor
旁边的下拉菜单中选择 HTML →单击保存按钮。
答案 1 :(得分:1)
Mark Z对我很有帮助!
我在我的模型中添加了一个String属性,并添加了一个新的数据库迁移:
public int UpdateFrom3()
{
// Adds a new Content column
SchemaBuilder.AlterTable("ContentTileRecord", table => table.AddColumn("Content", DbType.String));
return 4;
}
之后我将该字段添加到编辑器零件视图中:
@Script.Require("OrchardTinyMce")
<div class="editor-label">
@Html.LabelFor(model => model.Content)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Content, new { @class = "html tinymce" })
</div>
内容属性现在显示为TextArea。由于课程&#html和tinymce&#39; TinyMCE编辑器被实例化。 (不要忘记Script.Require call)
由于Content属性包含HTML,因此需要使用@ Html.Raw帮助程序来显示此属性的值。
@Html.Raw(Model.Content)