2

我在 EPiServer 中的一个站点上工作,每当我创建一个类型设置为“XHTML 字符串”的页面属性(在编辑模式下使用 WYSIWYG 内容编辑器)时,它都会将所有内容包装在<p>标签中。

有什么办法可以防止这种情况发生吗?我无法通过我的 CSS(例如p {margin: 0 !important;})普遍删除段落边距,因为我确实需要实际文本段落的边距。我什至尝试在编辑器中转到 HTML 源代码视图并手动删除<p>它生成的标签,但是当我保存时它会立即将它们添加回来!

当属性类型是长字符串或短字符串时不会发生这种情况,但这并不总是一种选择,因为内容可能包含图像、动态控件等。

这变得非常麻烦,因为当页面上的每个元素基本上都应用了额外的边距时,很难实现我需要的布局。

4

4 回答 4

1

正如约翰所说,他们在那里是有原因的 -在这里查看更多信息。话虽如此,删除它们并非不可能。它可以通过以下两种方式之一完成(取自world.episerver.com

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    myEditor.InitOptions["force_p_newlines"] = "false";
}

或者

<script type="text/javascript">
tinyMCE.init({
    force_p_newlines: false
});
</script> 
于 2011-11-03T14:47:06.053 回答
0

如果您使用的是带有 TinyMCE 编辑器的 EPiServer 版本,如果您键入 shift-enter 而不是 enter ,则可以插入<br />元素而不是元素。<p>这应该可以消除您的保证金问题。

更多信息在下面的链接:

http://www.tinymce.com/wiki.php/TinyMCE_FAQ#TinyMCE_produce_P_elements_on_enter.2Freturn_instead_of_BR_elements.3F

编辑:我在下面的评论更好地回答了他的问题。

于 2011-11-07T20:51:51.243 回答
0

您可以添加自己的自定义 TinyMCE 配置,以在保存页面或呈现属性/页面时删除 P 元素或使用正则表达式将它们删除。

我认为这是一个坏主意。P 元素是编辑器生成最多的东西,在大多数情况下,它们的内容在语义上也是正确的。最好将您的属性包装在一个带有类的 div 中,并使用您提到的 CSS 调整边距。

于 2011-11-03T14:40:23.773 回答
0

我发现虽然我无法<p>从源视图中删除标签(因为它会自动将它们添加回来),但如果我用标签替换它们<div>,它就会不理会。这确实意味着我有一个额外的<div>包装一些我并不真正需要的元素,但至少 a<div>不会像 a<p>那样添加边距,所以......足够好!

于 2011-11-23T15:24:42.477 回答