返回
子发布项中获取列表视图自定义数据扩展列信息的故障排除指南
javascript
2024-03-17 03:36:26
在子发布项中使用 getListItemXmlAttributes 方法的故障排除
简介
当在 SDL Tridion 的子发布项中使用 getListItemXmlAttributes
方法获取列表视图中的自定义数据扩展列信息时,你可能会遇到一个故障。本文将探讨此问题的根源并提供一种解决方法。
问题
尝试在子发布项中获取列表视图中的自定义数据扩展列信息时,你会收到以下错误:
Error: uncaught exception: [Exception... "Component returned failure code: 0x80004002 (NS\_NOINTERFACE) [nsIWebProgress.DOMWindow]" nsresult: "0x80004002 (NS\_NOINTERFACE)" location: "JS frame :: chrome://browser/content/tabbrowser.xml :: :: line 545" data: no]
故障原因
此错误是由以下情况引起的:当你在子发布项中调用 getListItemXmlAttributes
方法时,代码尝试加载父项中的数据,而不是子项中的数据。
解决方法
要解决此问题,需要对以下两个文件中的代码进行修改:
1. PageEx.js
MyCompany.Tridion.RTFExtensions.PageEx.prototype.setDataFromList = function (node, parentId, timeStamp) {
$extUtils.setDataFromList(node, parentId, timeStamp, this);
if (parentId !== this.getParentId()) {
this.callBase("Tridion.ContentManager.Page", "setDataFromList", [node, parentId, timeStamp]);
}
};
2. utils.js
MyCompany.Tridion.RTFExtensions.Utilities.setDataFromList = function (node, parentId, timeStamp, itemClicked) {
var p = itemClicked.properties;
if (!timeStamp || timeStamp > itemClicked.getTimeStamp()) {
var tmp;
if (tmp = node.getAttribute('Version')) {
p.versionNumberString = tmp;
p.previousVersion = tmp;
}
if (tmp = node.getAttribute('ModifiedBy')) {
p.modifiedBy = tmp;
p.initialModifierUserName = tmp;
}
if (tmp = node.getAttribute('LockedBy')) {
p.lockedBy = tmp;
}
if (tmp = node.getAttribute('ApprovalStatus')) {
p.approvalStatus = tmp;
p.previousApprovalStatus = tmp;
}
if (tmp = node.getAttribute('PublishDate')) {
p.publishDate = tmp;
}
if (p.customModifiedDate === undefined) {
if (tmp = node.getAttribute('Modified')) {
p.customModifiedDate = tmp;
}
}
}
if (p.versionNumberString && parentId !== itemClicked.getParentId()) {
itemClicked.callBase("Tridion.ContentManager.Page", "setDataFromList", [node, parentId, timeStamp]);
}
};
注意事项
- 这些更改仅适用于使用 Data Extender 获取自定义数据扩展列信息的情况。
- 确保已更新 AI 螺旋创作器中的代码以反映这些更改。
- 始终在测试环境中进行这些更改,并在进行任何更改之前备份你的数据。
常见问题解答
1. 我为什么需要进行这些更改?
这些更改可以解决在子发布项中使用 getListItemXmlAttributes
方法获取自定义数据扩展列信息时出现的错误。
2. 这些更改是如何工作的?
这些更改修改了代码,使它在子发布项中调用 getListItemXmlAttributes
方法时加载子项中的数据,而不是父项中的数据。
3. 我如何知道这些更改是否有效?
进行更改并重新加载列表视图后,你应该能够在子发布项中获取自定义数据扩展列信息,而不会出现错误。
4. 这些更改是否会影响其他功能?
这些更改不会影响其他功能。它们只修改了 getListItemXmlAttributes
方法在子发布项中的行为。
5. 我可以向谁寻求帮助以进行这些更改?
如果你在进行这些更改时遇到问题,你可以向 SDL Tridion 支持团队寻求帮助。