防止EPiServer在<p>标签中包装内容</p>

时间:2011-11-02 20:41:39

标签: wysiwyg margin paragraph episerver

我正在使用EPiServer中的某个站点,每当我创建一个类型设置为“XHTML string”(在编辑模式下使用WYSIWYG内容编辑器)的页面属性时,它会包含{{1}中的所有内容}标签。

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

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

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

4 个答案:

答案 0 :(得分:1)

正如约翰所说,他们出于某种原因 - see more info here。话虽如此,删除它们并非不可能。它可以通过两种方式之一完成(取自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> 

答案 1 :(得分:0)

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

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

答案 2 :(得分: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

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

答案 3 :(得分:-1)

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