以编程方式取消发布 sitecore 项目
Unpublish sitecore item programmatically
我知道可以使用 Sitecore.Publishing.PublishManager
从代码级别发布项目。我没有看到取消发布项目的选项。
有可能吗?
发布项目只是将其移动到 Web
数据库。
只需从该数据库中删除您的项目即可取消发布。
您需要将 __Never publish
字段的值设置为 1
(这是 Sitecore 存储 true
布尔值的方式)并且 publish项目。
是的,它正在发布,但由于 __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);
不在工作流程中
标记为 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);
我知道可以使用 Sitecore.Publishing.PublishManager
从代码级别发布项目。我没有看到取消发布项目的选项。
有可能吗?
发布项目只是将其移动到 Web
数据库。
只需从该数据库中删除您的项目即可取消发布。
您需要将 __Never publish
字段的值设置为 1
(这是 Sitecore 存储 true
布尔值的方式)并且 publish项目。
是的,它正在发布,但由于 __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);
不在工作流程中
标记为 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);