Sitecore 取消基于条件的发布

Sitecore Cancel Publish Based On Conditions

我有一个要求,比如当用户点击“发布项目”按钮时,我想执行一些自定义代码,我将 运行 对当前项目进行一些验证,如果一切正常,那么该项目将发布,否则将显示警告并禁用发布管道。

为此,我在 publishItem 管道下创建了自定义处理器,一切正常,但当我显示警报时,它给我空引用异常。

Sitecore.Context.ClientPage.ClientResponse.Alert(message);

我不确定我在这里做错了什么,有没有其他方法可以实现这个......请提出建议 下面是我写的示例代码 下面的 class 继承自 PublishItemProcessor.

public override void Process(PublishItemContext context)
        {
            Assert.ArgumentNotNull(context, "context");

            // code goes here

            if (condition)
            {
                string message = "Required fields are missing";
                context.AbortPipeline();                
                Sitecore.Context.ClientPage.ClientResponse.Alert(message);
            }
        }

<publishItem>
      <processor type="Namespace.CheckRequiredChildItems, Namespace" />
</publishItem>

您应该避免更改发布管道,因为这可能会阻止您将来升级到 Sitecore 发布服务。作为一般原则,任何用户都应该能够随时发布任何项目。 Sitecore 发布限制和工作流程将阻止 unfinished/invalid 项发布。项目也可以通过许多不同的方式发布,例如项目发布(如在您描述的场景中)、作为相关项目、网站发布等。发布也可能 运行 在后台进行,因此 UI互动不合适

您应该为此使用工作流,因为其目的之一是防止项目在不满足验证规则的情况下达到其可发布状态。如果您的编辑不想使用工作流程,您仍然可以几乎无缝地使用它。您可以拥有一个只有两种状态(草稿和准备发布)的简单工作流。然后,您可以让作者通过工作流转换项目或使用自动工作流操作将其转换到下一步。失败的验证规则将阻止它被转换。