是否有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