以编程方式取消发布sitecore项目

时间:2016-07-06 08:57:17

标签: c# sitecore publish sitecore8

我知道可以使用button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { textview.setVisibility(textview.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); } }); 从代码级别发布项目。我没有看到取消发布项目的选项。

有可能以某种方式吗?

3 个答案:

答案 0 :(得分:10)

您需要将__Never publish字段的值设置为1(这是Sitecore存储true布尔值的方式)和发布项目。

是的,它正在发布,但由于__Never publish的值设置为true,Sitecore将从web数据库中删除该项。

您还可以使用item.Publishing.NeverPublish属性设置此字段的值。

这样的事情可以解决问题:

item.Editing.BeginEdit();
item.Publishing.NeverPublish = true;
item.Editing.EndEdit();

PublishManager.PublishItem(item, targets, item.Languages, false, false);

答案 1 :(得分:0)

不在工作流程中

标记为NeverPublish的项目将在发布期间取消发布。由于NeverPublish是共享字段,因此所有版本都将取消发布。

bool originalNeverPublish = item.Publishing.NeverPublish;

item.Editing.BeginEdit();
item.Publishing.NeverPublish = true;
item.Editing.EndEdit();

PublishManager.PublishItem(item, targets, item.Languages, false, false);

item.Editing.BeginEdit();
item.Publishing.NeverPublish = originalNeverPublish;
item.Editing.EndEdit();

在工作流程

如果该项目位于工作流程中,则发布将发布处于Final / IsApproved状态的项目的所有版本,忽略NeverPublish的值。我们应该改变我们要取消发布的版本的工作流状态。

在下面的示例中,我假设初始状态未标记为Final / IsApproved

var workflowProvider = item.Database.WorkflowProvider;
var workflow = workflowProvider.GetWorkflow(item);

foreach (var version in item.Versions.GetVersions())
{
    if (workflow.IsApproved(version))
    {
        workflow.Start(version);
    }
}

PublishManager.PublishItem(item, targets, item.Languages, false, false);

答案 2 :(得分:-2)

发布项目只是将其移至Web数据库。

只需从该数据库中删除您的项目即可取消发布。