我有一个sitecore项目“category”,它有一个下拉链接,用于填充“产品类型”模板列表。
每个类别都可以有“产品类型”。
(在类别节点下创建的产品将使用在下拉列表中选择的模板。例如,Shoes类别将具有Shoes模板,Slippers类别也将具有鞋子模板,Bags类别将具有包模板)。 / p>
问题:
这些类别应该能够标记相关类别。因此,我需要显示一个treelist类型的控件,它只允许选项选择具有相同“产品类型”的类别。 在“鞋子”类别下,我需要有“拖鞋”。 我怎么能这样做?
选择“拖鞋”作为“鞋子”的相关项目后,如果用户尝试更改“拖鞋”中的“产品类型”下拉链接值,我该如何警告用户该产品类型有已经链接到另一个类别? (保存类别项目的验证。)
希望这是Sitecore中相关项目的常见问题,但我无法找到解决方案。
答案 0 :(得分:1)
你的第一个问题,“标记相关类别”并不清楚我想用它来实现什么。 但是,如果我理解正确,您希望在Category-item中选择产品类型模板,让编辑器在Category-item下创建所选产品类型的产品。
您可以使用Category-item上的item:saved event来解决此问题: - 首先检查您是否保存类别类别的项目,但检查模板。 - 如果是Category-Item,请阅读product-type droplink的值,并在运行时将此模板添加到Category项的insert-option中。
检查相关项目的第二个问题只能通过使用item:save事件以相同的方式处理。不是项目:已保存的事件,因为您想在保存项目之前进行检查,因此您可以取消保存并通过Sitecore.Web.UI.Sheer.SheerResponse.Alert()
方法显示消息框。
在项目:保存事件中,您需要通过LinkDatabase方法Globals.LinkDatabase.GetReferrers()
检查当前项目是否包含1个或多个引荐来源(链接到此项目的项目)。
对此使用验证而不是项目:保存事件无用,因为验证事件仅抛出警告并保存项目。
与示例代码的另一个良好链接是John West的this blog。