Sitecore工作流-发布处于草稿状态的项目

Sitecore工作流-发布处于草稿状态的项目,sitecore,sitecore7,sitecore7.1,sitecore-workflow,Sitecore,Sitecore7,Sitecore7.1,Sitecore Workflow,我目前正在处理处于草稿工作流状态的sitecore项目。发生以下情况: 创建将进入工作流草稿状态的项目 发布项/将父项(选中子项)从主数据库发布到web数据库,忽略发布警告提示 该项目将出现在web数据库中,但没有版本 这会导致我们的控件渲染该项,但使用标准值,因为没有版本。当然,我们可以为item.Versions.Count>0添加检查,但我的问题是为什么会发生这种情况 当然,处于草稿工作流状态的项目不应该以任何方式出现在web数据库中 所使用的工作流非常标准,没有定制。状态和命令为:

我目前正在处理处于草稿工作流状态的sitecore项目。发生以下情况:

  • 创建将进入工作流草稿状态的项目
  • 发布项/将父项(选中子项)从主数据库发布到web数据库,忽略发布警告提示
  • 该项目将出现在web数据库中,但没有版本
这会导致我们的控件渲染该项,但使用标准值,因为没有版本。当然,我们可以为item.Versions.Count>0添加检查,但我的问题是为什么会发生这种情况

当然,处于草稿工作流状态的项目不应该以任何方式出现在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" />