我们正在构建一个Sitecore站点,该站点将从外部数据库中提取一些产品数据。在每晚的基础上,我们将根据需要查询外部数据库并添加,更新或存档/删除/删除Sitecore中的产品内容项。我们的数据模板包含一些字段,这些字段将直接从外部数据库填充(对于内容作者将是只读的)以及它们将自己填充的其他字段。我们的自定义字段中包含来自外部数据库的项目的SKU。随着时间的推移,产品可能会从外部数据库中消失。在这种情况下,我们希望Sitecore以某种方式从我们的产品列表中删除此项目,但不能完全删除它。这样做的原因是,已删除的产品将来可能会重新出现,我们不希望丢失已添加到项目上其他自定义字段的所有数据。我可以想到许多不同的方法:
使用Sitecore的存档/回收功能。当我们发现Sitecore中有一个产品项目不再出现在外部数据库中时,我们就可以将其归档。这很好用。但是,如果它再次出现在外部数据库中,我似乎无法找到恢复该项目的方法。存档项目时,我无权访问任何自定义字段(从我在线阅读的内容)。因此,当我在外部数据库中遇到不在Sitecore中的SKU时,我无法确定是否存在具有该SKU的已归档项目。
在每个产品内容项上使用自定义状态字段。我可以将每个产品内容项设置为“活动”或“非活动”。这样可以轻松重新激活重新出现在外部数据库中的项目。但是我担心搜索和发布等问题。在master数据库中的所有产品的文件夹中有一些不活动的内容项似乎很麻烦。它可能会让内容作者感到困惑,我担心他们会找到他们的方式进入网络数据库等。似乎我必须做很多自定义编码,以确保这些产品不会出现在任何页面上等等。
当产品从外部数据库中消失时,我可以将这些内容项移动到Sitecore中的其他位置。然后当它们重新出现时我可以将它们移回去。这也感觉很乱。
我只是想知道是否有一些我错过的更好的解决方案。提前感谢您的帮助。
答案 0 :(得分:1)
如果您只是取消发布从外部数据库中删除的项目,并将创作数据库中的项目设置为不可发布,直到它们再次出现,那么请考虑一下。在这种情况下,您还可以让一个任务运行已取消发布但未在指定时间段内重新发布的归档项目。
最佳解决方案实际上取决于出现/消失的项目的数量和频率以及将这些项目保留在创作数据库中而不是删除它们的成本效益。
答案 1 :(得分:1)
我会选择2“在每个产品上设置状态字段”激活“或”非活动“,因为它更清晰,并将数据保存在一个地方。
要做的其他事情(如Vasiliy所建议的)是将产品上的“Publishable”复选框设置为“False”,这样产品将从Web数据库中消失,因此搜索方法中没有额外的过滤器。
您可以实施自定义内容编辑器警告,以通知内容编辑器当前产品处于“非活动状态”:
Creating Custom Content Editor warnings
希望这有帮助