Sitecore工作流-发布处于草稿状态的项目
我目前正在处理处于草稿工作流状态的sitecore项目。发生以下情况:Sitecore工作流-发布处于草稿状态的项目,sitecore,sitecore7,sitecore7.1,sitecore-workflow,Sitecore,Sitecore7,Sitecore7.1,Sitecore Workflow,我目前正在处理处于草稿工作流状态的sitecore项目。发生以下情况: 创建将进入工作流草稿状态的项目 发布项/将父项(选中子项)从主数据库发布到web数据库,忽略发布警告提示 该项目将出现在web数据库中,但没有版本 这会导致我们的控件渲染该项,但使用标准值,因为没有版本。当然,我们可以为item.Versions.Count>0添加检查,但我的问题是为什么会发生这种情况 当然,处于草稿工作流状态的项目不应该以任何方式出现在web数据库中 所使用的工作流非常标准,没有定制。状态和命令为:
- 创建将进入工作流草稿状态的项目
- 发布项/将父项(选中子项)从主数据库发布到web数据库,忽略发布警告提示
- 该项目将出现在web数据库中,但没有版本
- 草稿
- 提交
- 等待批准
- 拒绝
- 批准
- 验证操作
- 批准
- 自动发布
提前感谢。我个人的意见是,您应该检查版本计数。如果你打算支持一个多语言网站,完全有可能有一种语言的版本,而不是另一种语言的版本(例如,西班牙语还没有被批准)。您希望您的控件处理该场景(或执行回退)
当前语言中的当前用户可能没有返回有效版本是完全正确的。我希望web控件的业务逻辑能够处理这些场景。为了明确回答您的问题,之所以会出现这种情况,是因为该项不是null,但它没有版本。版本是项目的一个维度,如果没有版本,它恰好是“空的”。因此,您的代码获得一个有效的非空项,但没有字段值,因为没有版本,因此您的控件不填充数据 这只会发生在新项目上。示例:创建一个项目,您就得到了草稿中的v1。您可以“发布”该项目。该项转到web DB,但它的v1维度没有,因此留下一个没有版本的非空项
正如Jay所说,解决方案是在查询项目时检查此问题。首先,默认工作流应设置为项目的模板“\u标准值”。
第二,使用“管理员”帐户的工作流不起作用。尝试其他帐户 我相信您可以在配置中的每个站点节点上使用以下属性
<site name="website" filterItems="true" ... />
还要确保相应地设置了以下内容,默认值为false
<setting name="Publishing.PublishEmptyItems" value="false" />
我实际上遇到了这个问题,但方式不同。如果使用发布限制,则最终可能会得到一个没有版本但仍可发布的项目。有很多种方法可以使项目最终没有版本,而不仅仅是一个新项目有一个没有通过工作流推送的单一版本。上述修复实际上是由Sitecore支持部门提供的,对我有效
如果这对您不起作用,那么我建议在发布项目时添加check,看看它们是否有任何版本,尽管我相信这就是上面的修复程序应该做的
编辑:将属性从“hideEmptyItems”更改为“filterItems”,并添加了进一步的解释。为了澄清,当您查看项目的草稿语言版本时,是否收到“This will not publish”警告消息?然后,当您发布该确切版本时,该项将显示在web数据库中?是的,您是正确的:)没有听说过此属性。在中添加了它,但不幸的是,空项仍然由我的控件呈现抱歉Jacob我使用了错误的属性,我已更新了答案,希望这会有所帮助:)。对延迟表示歉意,但您会很高兴听到这样做。谢谢:)太棒了,很高兴听到:)!
<setting name="Publishing.PublishEmptyItems" value="false" />