更新Kentico文档字段,而不考虑版本控制
我的一个基本页面类型上有一个字段,我需要从外部数据源以编程方式更新该字段,以便它可以包含在我的智能搜索索引中 文档是版本化的,但我想更新此字段的已发布值,而不管签出状态如何,并且在签入文档时明显避免任何类型的覆盖 该字段不会出现在编辑器窗体上,或者理想情况下,会有条件地显示给全局管理员 似乎使用API更新文档而不执行更新Kentico文档字段,而不考虑版本控制,kentico,Kentico,我的一个基本页面类型上有一个字段,我需要从外部数据源以编程方式更新该字段,以便它可以包含在我的智能搜索索引中 文档是版本化的,但我想更新此字段的已发布值,而不管签出状态如何,并且在签入文档时明显避免任何类型的覆盖 该字段不会出现在编辑器窗体上,或者理想情况下,会有条件地显示给全局管理员 似乎使用API更新文档而不执行签出操作会以静默方式失败。但是,如果我在签出页面上执行签出/更新/签入,我想作者会丢失他们的作品吗 有没有办法通过Kentico数据模型和API来处理这个“无版本”字段?不幸的是,您
签出操作
会以静默方式失败。但是,如果我在签出页面上执行签出
/更新
/签入
,我想作者会丢失他们的作品吗
有没有办法通过Kentico数据模型和API来处理这个“无版本”字段?不幸的是,您必须使用API将其签入和签出。参见示例
此外,您可能需要发布它,以反映实时站点上的更改。不幸的是,您必须使用API将其签入和签出。参见示例
另外,您可能需要发布它,以便反映实时站点上的更改。我认为没有办法更新签出的页面。您可以直接更新页面类型表,但正如您所提到的,当他们签入时,它将被覆盖。您可以更新版本历史记录,我认为可以对签出的当前数据进行更改,但我认为,如果用户取消,则该历史记录将丢失
我能想到的解决问题的唯一方法是创建另一个表,将您想要的值映射到页面。然后你就不必担心页面被签出了,你只需要抓取documentID之类的东西。由于该值不会显示给编辑器,因此您只有一个字段可以在此表上进行查找。我认为没有办法更新签出页面。您可以直接更新页面类型表,但正如您所提到的,当他们签入时,它将被覆盖。您可以更新版本历史记录,我认为可以对签出的当前数据进行更改,但我认为,如果用户取消,则该历史记录将丢失
我能想到的解决问题的唯一方法是创建另一个表,将您想要的值映射到页面。然后你就不必担心页面被签出了,你只需要抓取documentID之类的东西。由于该值未显示给编辑器,因此您只有一个字段可在此表上进行查找。首选的正确方法是使用API,但如您所述,如果用户已签出某个内容并正在处理该内容,或者该内容处于工作流中但尚未发布,则会导致问题 如果您要更新的字段是特定于页面类型的,那么有一件事我可以特别想到,那就是直接到数据库到页面类型的数据库字段,并对该字段执行更新 注意:除非您明确知道自己在做什么,并且已经对其进行了全面测试,否则不建议这样做 直接访问数据库的缺点是,这不会更新当前版本,因为您正在使用签入/签出和工作流。您还需要更新签出和当前版本,这意味着您需要:
cms\u documents
表中的文档本身,获取您正在使用的文档DocumentCheckedOutVersionHistoryID
和DocumentPublishedVersionHistoryID'可以从
CMS_VersionHistory`表中获取文档的版本历史IDCMS\u VersionHistory
和自定义页面类型字段李>
CMS\u WorkflowHistory
表,找出该文档是否在工作流中以及在哪个步骤中VersionHistoryID
字段返回到CMS\u VersionHistory
表,并用数据更新该记录您还可以添加一个自定义表或一些其他链接的数据库表,这些表将允许您创建一个全局处理程序。在链接表中,您可以通过API和其他调用执行更新,而无需版本控制或工作流。然后,当用户更新特定的页面类型时,您可以进行检查,查看上次更新链接表的时间,并在更新该特定页面时更新所需的字段(当然是按节点和文档ID)。首选和正确的方法是使用API,但正如您所述,如果用户已签出某个内容并正在处理该内容,或者该内容处于工作流中但尚未发布,则会导致问题 如果您要更新的字段是特定于页面类型的,那么有一件事我可以特别想到,那就是直接到数据库到页面类型的数据库字段,并对该字段执行更新 注意:除非您明确知道自己在做什么,并且已经对其进行了全面测试,否则不建议这样做 直接访问数据库的缺点是,这不会更新当前版本,因为您正在使用签入/签出和工作流。您还需要更新签出和当前版本,这意味着您需要:
cms\u documents
表中的文档本身,获取您正在使用的文档DocumentCheckedOutVersionHistoryID
和DocumentPublishedVersionHistoryID'可以从
CMS_VersionHistory`表中获取文档的版本历史IDC执行更新