如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本

Posted

技术标签:

【中文标题】如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本【英文标题】:How to remove newly created item version if there is no change with previous version in sitecore programmatically 【发布时间】:2017-10-31 14:23:10 【问题描述】:

我正在创建锁定和编辑按钮上的项目版本。如果作者在签入版本时没有更改该版本的任何值,我想删除该版本。如果在签入项目版本时没有更改,我想比较版本并删除新创建的版本。

注意:不需要工作流

【问题讨论】:

【参考方案1】:

在 ItemSaving 事件中,您可以获取项目中的更改列表。 下面是一些示例代码来了解这个想法:

protected void OnItemSaving(object sender, EventArgs args)
    
        var newItem = Event.ExtractParameter(args, 0) as Item;
        Item originalItem = newItem.Database.GetItem(newItem.ID, newItem.Language, newItem.Version);
    var differences = FindDifferences(newItem, originalItem);    
 

private List<string> FindDifferences(Item newItem, Item originalItem)
    
        newItem.Fields.ReadAll();
        IEnumerable<string> fieldNames = newItem.Fields.Select(f => f.Name);
        return fieldNames
          .Where(fieldName => newItem[fieldName] != originalItem[fieldName])
          .ToList();
    

【讨论】:

【参考方案2】:
    在内容编辑器中打开项目 点击版本标签 单击版本块上的比较按钮 结果,您将看到能够比较 2 个版本的对话框。如果您没有检测到任何更改,则可以删除新创建的版本。 附:屏幕截图来自 7.2 版本,但 8+ 版本的版本比较方式几乎相同。

【讨论】:

感谢您的输入,但我的问题是我们如何以编程方式进行操作

以上是关于如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本的主要内容,如果未能解决你的问题,请参考以下文章

什么时候在Sitecore 7版本中明确使用SOLR而不是Lucene?

Sitecore - 以编程方式清除用户的缓存

Sitecore 6 是不是可以在已登录时更改虚拟用户的角色?

如何检查 Spark 版本 [关闭]

sitecore 中的访问查看器和安全编辑器有啥区别?

有没有办法gpg签署所有以前的提交?