1

这次我正在为 Orchard 的自定义小部件苦苦挣扎。这是一个包含两个字段的简单内容部分: - 背景颜色 - 大小

我希望能够将 HTML 内容添加到这个小部件;所以我添加了身体部分。这部分必须显示在我的小部件中。结果应该是这样的:

<div class="size-small bg-color-red"> BODY PART HTML CONTENT </div>

但不幸的是,正文部分总是显示在我的小部件之前之后

<Placement>
    <Place Parts_ContentTile="Content"/>
    <Place Parts_ContentTile_Edit="Content:7.5"/>
</Placement>

不太好的“解决方案”: 解决此问题的一种方法是删除正文部分并将其替换为简单的文本字段。此文本字段在所需位置呈现。但随后 TinyMCE 编辑器不可用。

来自 Ivan 的评论后更新:
我尝试同时更改(内容类型和内容部分(单独)),但不幸的是,两次,TextField 内容都显示在小部件之后。这应该在 Placement.info 中修复吗?

另一种选择是在我的小部件模型中添加一个字符串字段。但随后无法显示 TinyMCE 编辑器。我对吗?

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

4

2 回答 2

2

使用时TextField,可以通过在字段的设置中TinyMCE指定来使用。HTML flavor

为此,您可以转到Content→(Content TypesContent Parts取决于您要更改的内容)→选择您的ContentTypeContentPart→展开TextField您正在使用的定义→HTML从旁边的下拉菜单中选择Flavor→单击Save按钮。

于 2013-01-03T12:25:14.513 回答
1

Mark Z的这篇关于 SO的帖子对我很有帮助!

我在我的模型中添加了一个字符串属性并添加了一个新的数据库迁移:

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>

Content 属性现在显示为 TextArea。由于类 'html 和 tinymce',TinyMCE 编辑器被实例化。(不要忘记 Script.Require 调用)

由于 Content 属性包含 HTML,因此需要使用 @Html.Raw 帮助器来显示该属性的值。

@Html.Raw(Model.Content)
于 2013-01-07T11:32:27.690 回答