Sitecore的插入规则,以确保最高(1)特定类型的孩子(Sitecore Insert rule

2019-07-31 06:31发布

是否有Sitecore的方式,以确保某些类型的项目只能有1个小孩一定类型的物品的? 我读了规则引擎的食谱,但我没有得到太多的细节。

Answer 1:

一个对我工作的网站有可能存在一定的项目类型下面不超过6个项的要求。 我们认为使用插入选项规则,但决定放弃这个念头,因为它没有阻止复制,移动或复制项目。

相反,我们决定延长item:created一个专门处理事件这项任务。 下面是它如何工作的一个精简的例子。 一个明显的改进是获取来自现场的父项的最大限制孩子(仅管理员可见,当然)。 你也许甚至在这里利用规则引擎,以及...

public void OnItemCreated(object sender, EventArgs args)
{
    var createdArgs = Event.ExtractParameter(args, 0) as ItemCreatedEventArgs;

    Sitecore.Diagnostics.Assert.IsNotNull(createdArgs, "args");
    if (createdArgs != null)
    {
        Sitecore.Diagnostics.Assert.IsNotNull(createdArgs.Item, "item");
        if (createdArgs.Item != null)
        {
            var item = createdArgs.Item;

            // NOTE: you may want to do additional tests here to ensure that the item
            // descends from /sitecore/content/home
            if (item.Parent != null && 
                item.Parent.TemplateName == "Your Template" &&
                item.Parent.Children.Count() > 6)
            {
                // Delete the item, warn user
                SheerResponse.Alert(
                    String.Format("Sorry, you cannot add more than 6 items to {0}.",
                                      item.Parent.Name), new string[0]);
                item.Delete();
            }
        }
    }
}


文章来源: Sitecore Insert rules to ensure at most (1) children of a certain type