Sitecore在编辑时自动设置对项目的发布限制

时间:2015-04-16 23:29:55

标签: sitecore

我们的Sitecore实例是在用户选择“编辑”时使用当前日期/时间自动设置项目的发布限制。只有在RequireLockBeforeEditing = true时才会出现这种情况。这是预期的行为吗?为什么会发生这种情况并且有办法将其关闭?

1 个答案:

答案 0 :(得分:4)

<setting name="RequireLockBeforeEditing" value="true" />是默认设置,当作者选择修改时,系统会将新项目置于草稿中。在此Senario中,Sitecore为新版本分配Publishable From日期/时间是正常的。这不是一个限制,因为它是创建该版本的日期/时间戳。

需要日期,因为它用于确定应该使用哪个版本。 如果没有设置“发件人”日期,则该版本将无法发布

至于您的自定义代码,如果您在此处发布,我可以帮助您避免与Sitecore的默认行为冲突。您可以执行一些简单的检查,例如,如果可发布日期与上次更新日期匹配,则忽略编辑。

enter image description here

修改

不要修改Sitecore的默认行为(稍后可能会咬你),而是考虑检查正在编辑的项目是否是全新的。添加新版本时,项目的创建日期和有效字段将匹配。

public void OnItemSaving(object sender, EventArgs args)
{
    try
    {
        Item item = Event.ExtractParameter(args, 0) as Item;
        ItemChanges itemChanges = Event.ExtractParameter(args, 1) as ItemChanges;

        // Ensure that a change was made to the valid to/from fields
        if (item != null &&
            itemChanges != null &&
            itemChanges.FieldChanges.ContainsAnyOf(FieldIDs.ValidFrom, FieldIDs.ValidTo))
        {
            // Ensure that the item is not brand new (such as when an author locks or clicks Edit)
            if (item.Publishing.ValidTo != DateTime.MaxValue ||
                item.Publishing.ValidFrom.ToString("MMddyyyyHHmmss") !=
                item.Statistics.Created.ToString("MMddyyyyHHmmss"))
            {
                // Do work here...
            }
        }
    }
    catch (Exception ex)
    {
        Log.Error("Error in item:saved event", ex, this);
    }
}