将正文部件添加到自定义窗口小部件 - 放置

时间:2013-01-03 09:45:36

标签: orchardcms orchardcms-1.6

这次我正在为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编辑器。我是对的吗?

所以我觉得我对小部件,内容部分和展示位置的期望是不正确的。希望有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:2)

使用TextField时,您可以在字段设置中指定TinyMCE来使用HTML flavor

为此,您可以转到内容→(内容类型内容部件,具体取决于您要更改的内容)→选择您的ContentTypeContentPart→展开您正在使用的TextField的定义→从Flavor旁边的下拉菜单中选择 HTML →单击保存按钮。

答案 1 :(得分:1)

来自This post on SO

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)