防止 EPiServer 将内容包装在

中标签

发布于 2024-12-13 11:57:19 字数 445 浏览 3 评论 0原文

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

中。 标签。

有什么办法可以防止这种情况发生吗?我无法通过 CSS 普遍删除段落边距(例如 p {margin: 0 !important;}),因为我确实需要实际文本段落的边距。我什至尝试进入编辑器中的 HTML 源视图并手动删除它生成的

标签,但当我保存时它会立即将它们添加回来!

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

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

I'm working on a site in EPiServer, and whenever I create a page property with the type set to "XHTML string" (which uses the WYSIWYG content editor in Edit mode), it wraps all content in <p> tags.

Is there any way to prevent this from happening? I can't remove the paragraph margins universally through my CSS (e.g. p {margin: 0 !important;}) since I do need the margins for actual paragraphs of text. I've even tried going to the HTML source view in the editor and manually deleting the <p> tags that it generates, but it immediately adds them back in when I save!

It doesn't happen when the property type is either a long or short string, but that's not always an option since the content might contain images, dynamic controls, etc.

This is becoming a real nuisance since it's very hard to achieve the layout I need when basically every element on the page has extra margins applied to it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哑剧 2024-12-20 11:57:19

正如 Johan 所说,它们的存在是有原因的 - 在此处查看更多信息。话虽这么说,删除它们也不是不可能的。它可以通过两种方式之一完成(取自 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> 

As Johan is saying, they are there for a reason - see more info here. That being said, it's not impossible to remove them. It can be done in one of two ways (taken from world.episerver.com:

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

or

<script type="text/javascript">
tinyMCE.init({
    force_p_newlines: false
});
</script> 
烟雨凡馨 2024-12-20 11:57:19

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

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

You can add your own custom TinyMCE-config that removes P-elements or strip them out using regular expressions either when saving the page or when rendering the property/page.

I think it's a bad idea though. P-elements are what the editors generate the most and in most cases their content is also semantically correct. Better to wrap your property in a div with a class and adjust margins using CSS like you mention.

赠我空喜 2024-12-20 11:57:19

如果您使用带有 TinyMCE 编辑器的 EPiServer 版本,则可以在键入 shift-enter 时插入
元素而不是

元素而不是输入。这应该可以消除您的保证金问题。

更多信息请访问以下链接:

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

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

If you're using a version of EPiServer with TinyMCE editors, you can insert <br /> elements instead of <p> elements if you type shift-enter instead of enter. This should eliminate your margin problems.

More info at the link below:

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

EDIT: My comment below answers his question better.

心清如水 2024-12-20 11:57:19

我发现虽然我无法从源视图中删除

标记(因为它会自动将它们添加回来),但如果我将它们替换为

标签,它会保留所有内容。这确实意味着我有一个额外的

包装了一些我并不真正需要的元素,但至少

没有像

一样添加边距,所以...足够好!

I discovered that while I can't remove the <p> tags from the source view (because it adds them back in automatically), if I replace them with <div> tags, it'll leave things alone. It does mean that I've got an extra <div> wrapping some elements that I don't really need, but at least a <div> doesn't add margins like a <p> does, so...good enough!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文