阻止 Umbraco/TinyMce 将绝对 URL 转换为相对 URL

Stop Umbraco/TinyMce from converting absolute URLs to relative URLs

两者 Umbraco/TinyMce 都喜欢从编辑器中的任何绝对 URL 中剥离基域。这是有问题的,因为我有一个 RSS 提要,可以抓取我的 posts,并每周通过电子邮件将它们发送给订阅者。问题是,图像(和 links,但我稍后会担心)如果它们的 URL 是相对的,显然将不起作用。

到目前为止,我已经完成了以下工作:

1) 添加到 tiny_mce_src.js:

convert_urls : false,
relative_urls : false,
remove_script_host : false,   

与那里的内容相反,对于 Umbraco convert_urls 必须设置为 false。

使用媒体内容选择器(或内置 HTML 编辑器),这将保留输入的内容(直到 saving/publishing..)。否则它会在关闭媒体内容选择器或内置 HTML 编辑器时删除基域。

2) 下一个问题是内容创作者不想乱搞 HTML,所以我需要媒体选择器在选择图片时自动拥有基本域。我在 insertImage.js:

中对此进行了硬编码
        if (src.substring(0, umbracoPath.length) == umbracoPath) {
            // if the path contains a reference to the umbraco path, it also contains a reference to go up one level (../)
            src = src.substring(umbracoPath.length + 3, src.length);
        }

        var formObj = document.forms[0];
        formObj.src.value = 'https://example.com' + src;

这会修复发布和保存之前的所有问题。基本上,在框架的这个丛林健身房的某个地方,如果适用,它会获取当前域和子域,并且如果该域在富内容编辑器框中(例如在 link 或图像 href/src 中)它将.. 剥离它。

解决此问题的方法是在上面的 insertImage.js 代码中使用 https://www.example.com/,并确保您仅通过 https://example.com.

访问后台

但是,这不会起作用,因为我会让一些内容创建者使用 www,而另一些则不会。此外,即使我没有硬编码,而是说如果 www 在当前域中,那么在 insertImage.js 中不是 www(反之亦然),如果员工 A(使用 www)转到旧的 post 员工 B 做了(不使用 www)并重新保存 - 它会把它推回亲戚 URL。

我的问题是:在Umbraco框架中哪里可以直接编辑这个问题的源码?

另一种方法是使用解析器、正则表达式或子字符串方法。我也不必担心维护我对 Umbraco 框架所做的任何更改。

在我为 RSS 提要调用此信息的那一刻,我结束时只使用了一个简单的子字符串:

      var bt = node.GetProperty("bodyText").Value
               .Replace("src=\"/","src=\"https://example.com/")
               .Replace("href=\"/","href=\"https://example.com/");                                   
      @Html.Raw(bt);

任何以正斜杠作为第一个字符的 src 和 href 属性都将替换为基本域名。这非常适合我的设置,但如果您在博客 post 中显示代码,则可能会导致问题。

HTML Agility Pack pack 这样的解析器更好,但如果我能用 1 行新代码在技术上解决我的问题,我就不需要它。