Sitecore:项目显示名称不支持括号
Sitecore: Item display name does not support parenthesis
我将一个项目的显示名称从 Item1 更改为(这是新标题)
但是,在树中,当结束 ) 出现时,开始出现编码。
显示为:
(This is the new title)
请问我该如何解决这个问题?
这是一个已知错误,在 9.3 iirc 中引入。参考编号 393368。据我所知,目前还没有补丁,但您可以通过更换故障管道自行修补。
查看 Sitecore.Kernel
中的 Sitecore.Pipelines.Save.Save
class。在深层嵌套的 Process()
方法中,您会看到以下代码(用 dotPeek 反映):
if (this.NeedsHtmlTagEncode(field1))
field1.Value = WebUtil.SafeEncode(field1.Value);
NeedsHtmlTagEncode
return 对于 DisplayName
是正确的(出于某些未知原因)。您可以通过将保存处理器替换为继承旧处理器并覆盖 protected virtual bool NeedsHtmlTagEncode(SaveArgs.SaveField field)
方法并使其 return 为假的处理器来解决此问题。然后你只需用你自己的带有 xpath /sitecore/processors/saveUI/processor[@type='Sitecore.Pipelines.Save.Save, Sitecore.Kernel']
.
的处理器修补现有处理器
更新,因为我们刚刚在我们的一个项目中遇到这个问题:
除了 mikaelnet 所写的错误,它会影响您在内容编辑器 Appearance
部分中更改显示名称字段然后保存项目时,还有第二个错误会影响显示名称功能区您在此处使用的菜单按钮。
根据我的发现,问题出在 /sitecore/shell/Applications/Dialogs/Prompt/prompt.js
文件中,并且是在 9.0 和 9.3 之间的某个时间引入的。
这是9.0版本:
function ok_click(evt) {
evt && Event.stop(evt);
var maxlength = (dialogArguments.maxLength != null ? parseInt(dialogArguments.maxLength, 10) : 0);
if (dialogArguments.validation != null) {
var re = new RegExp(dialogArguments.validation);
}
var result = $("Value").value;
...
9.3版本增加了sanitizeHtml
调用:
function ok_click(evt) {
evt && Event.stop(evt);
var maxlength = (dialogArguments.maxLength != null ? parseInt(dialogArguments.maxLength, 10) : 0);
if (dialogArguments.validation != null) {
var re = new RegExp(dialogArguments.validation);
}
var result = sanitizeHtml($("Value").value);
...
我相信上述错误中报告了这两个问题,我们已经看到 sanitizeHtml()
方法的补丁版本修复了一些编码问题,但我不明白为什么他们会在第一所以你看到的潜在问题仍然存在。
我将一个项目的显示名称从 Item1 更改为(这是新标题)
但是,在树中,当结束 ) 出现时,开始出现编码。 显示为:
(This is the new title)
请问我该如何解决这个问题?
这是一个已知错误,在 9.3 iirc 中引入。参考编号 393368。据我所知,目前还没有补丁,但您可以通过更换故障管道自行修补。
查看 Sitecore.Kernel
中的 Sitecore.Pipelines.Save.Save
class。在深层嵌套的 Process()
方法中,您会看到以下代码(用 dotPeek 反映):
if (this.NeedsHtmlTagEncode(field1))
field1.Value = WebUtil.SafeEncode(field1.Value);
NeedsHtmlTagEncode
return 对于 DisplayName
是正确的(出于某些未知原因)。您可以通过将保存处理器替换为继承旧处理器并覆盖 protected virtual bool NeedsHtmlTagEncode(SaveArgs.SaveField field)
方法并使其 return 为假的处理器来解决此问题。然后你只需用你自己的带有 xpath /sitecore/processors/saveUI/processor[@type='Sitecore.Pipelines.Save.Save, Sitecore.Kernel']
.
更新,因为我们刚刚在我们的一个项目中遇到这个问题:
除了 mikaelnet 所写的错误,它会影响您在内容编辑器 Appearance
部分中更改显示名称字段然后保存项目时,还有第二个错误会影响显示名称功能区您在此处使用的菜单按钮。
根据我的发现,问题出在 /sitecore/shell/Applications/Dialogs/Prompt/prompt.js
文件中,并且是在 9.0 和 9.3 之间的某个时间引入的。
这是9.0版本:
function ok_click(evt) {
evt && Event.stop(evt);
var maxlength = (dialogArguments.maxLength != null ? parseInt(dialogArguments.maxLength, 10) : 0);
if (dialogArguments.validation != null) {
var re = new RegExp(dialogArguments.validation);
}
var result = $("Value").value;
...
9.3版本增加了sanitizeHtml
调用:
function ok_click(evt) {
evt && Event.stop(evt);
var maxlength = (dialogArguments.maxLength != null ? parseInt(dialogArguments.maxLength, 10) : 0);
if (dialogArguments.validation != null) {
var re = new RegExp(dialogArguments.validation);
}
var result = sanitizeHtml($("Value").value);
...
我相信上述错误中报告了这两个问题,我们已经看到 sanitizeHtml()
方法的补丁版本修复了一些编码问题,但我不明白为什么他们会在第一所以你看到的潜在问题仍然存在。