如何在Sitecore中为多列表创建动态源?
我有以下内容树结构:如何在Sitecore中为多列表创建动态源?,sitecore,sitecore6,Sitecore,Sitecore6,我有以下内容树结构: 家 产品 产品A 产品B 组织机构 组织1 组织2 组织配置X 组织结构 组织下的每个组织都有一个名为“关联产品”的字段,该字段是一个多列表。这会告诉系统哪些产品适合每个组织。组织配置数据模板有一个名为“选定产品”的字段。当我添加新的组织配置内容项(始终位于组织的正下方)时,我希望能够将显示在“选定产品”字段(多列表)中的项目限制为仅显示已与父组织关联的产品。我想可能有一种方法可以通过Sitecore查询实现这一点,但我想不出来。有什么想法吗?我想您可能
- 家
- 产品
- 产品A
- 产品B
- 组织机构
- 组织1
- 组织2
- 组织配置X
- 组织结构
- 产品
组织下的每个组织都有一个名为“关联产品”的字段,该字段是一个多列表。这会告诉系统哪些产品适合每个组织。组织配置数据模板有一个名为“选定产品”的字段。当我添加新的组织配置内容项(始终位于组织的正下方)时,我希望能够将显示在“选定产品”字段(多列表)中的项目限制为仅显示已与父组织关联的产品。我想可能有一种方法可以通过Sitecore查询实现这一点,但我想不出来。有什么想法吗?我想您可能需要为此创建一个自定义字段。以下是一些与该主题相关的文章:
- 在Sitecore的帮助下,我找到了答案。基本上,您必须创建一个从MultilistEx继承的自定义控件。然后需要重写DoRender()事件。在调用base.DoRender()之前,必须更改源(this.source)以使用Sitecore查询。之前,我尝试在OnLoad事件中执行此操作。现在我的代码如下所示:
public class CustomMultiList : MultilistEx
{
private void ExcludeItems()
{
...custom code here that builds a list of Item IDs to exclude from the Multilist source...
...list should look like this "@@id != 'some guid' and @@id != 'some guid' and so forth...
...you could also build a list of item ids to include. Any Sitecore query will do...
...you can use this.ItemID to get a reference to the current item that is being edited in the Content Editor...
this.Source = "query:" + this.Source + "/*[" + myListOfItemIdsToExclude + "]";
}
protected override void DoRender(output)
{
this.ExcludeItems();
base.DoRender(output);
}
}
不知道你为什么会被否决,这是一个很好的方法,可以在不影响其他Sitecore类型的情况下实现它。。。这也是一个很好的方法。