我正在使用EPiServer中的某个站点,每当我创建一个类型设置为“XHTML string”(在编辑模式下使用WYSIWYG内容编辑器)的页面属性时,它会包含{{1}中的所有内容}标签。
有没有办法防止这种情况发生?我不能通过我的CSS(例如<p>
)普遍删除段落边距,因为我做需要实际段落文本的边距。我甚至尝试在编辑器中转到HTML源视图并手动删除它生成的p {margin: 0 !important;}
标签,但是当我保存时它会立即将它们添加回去!
当属性类型是长字符串或短字符串时,不会发生这种情况,但这并不总是一个选项,因为内容可能包含图像,动态控件等。
这变得非常麻烦,因为当页面上的每个元素基本上都应用了额外的边距时,很难实现我需要的布局。
答案 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>
元素。这应该可以消除您的保证金问题。
以下链接中的更多信息:
编辑:我的评论更好地回答了他的问题。
答案 3 :(得分:-1)
我发现虽然我无法从源视图中删除<p>
标记(因为它会自动将其添加回来),但如果我将替换为<div>
标签,它会让事情孤立。这确实意味着我有一个额外的<div>
包装了一些我不需要的元素,但至少<div>
不会像<p>
那样添加边距,所以......够好了!