我们的Sitecore实例是在用户选择“编辑”时使用当前日期/时间自动设置项目的发布限制。只有在RequireLockBeforeEditing = true时才会出现这种情况。这是预期的行为吗?为什么会发生这种情况并且有办法将其关闭?
答案 0 :(得分:4)
<setting name="RequireLockBeforeEditing" value="true" />
是默认设置,当作者选择修改时,系统会将新项目置于草稿中。在此Senario中,Sitecore为新版本分配Publishable From
日期/时间是正常的。这不是一个限制,因为它是创建该版本的日期/时间戳。
需要日期,因为它用于确定应该使用哪个版本。 如果没有设置“发件人”日期,则该版本将无法发布。
至于您的自定义代码,如果您在此处发布,我可以帮助您避免与Sitecore的默认行为冲突。您可以执行一些简单的检查,例如,如果可发布日期与上次更新日期匹配,则忽略编辑。
修改强>
不要修改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);
}
}