Sitecore树列表数据源-VersionExist
在Sitecore树列表控件中,我只想获得列出的元素,这些元素具有该语言的版本 我搜索了一下,发现有一些参数用于包含/排除项目/模板。但我不能在版本这样的条件下给出。计数>0 有没有一种方法可以通过将参数传递给模板的datasource字段来实现 还是需要覆盖树列表控件Sitecore树列表数据源-VersionExist,sitecore,treelist,Sitecore,Treelist,在Sitecore树列表控件中,我只想获得列出的元素,这些元素具有该语言的版本 我搜索了一下,发现有一些参数用于包含/排除项目/模板。但我不能在版本这样的条件下给出。计数>0 有没有一种方法可以通过将参数传递给模板的datasource字段来实现 还是需要覆盖树列表控件 Thanx这似乎有效,但我没有对其进行广泛测试 首先创建一个从MasterDataView继承的类。请注意,我没有用特定语言显式获取项目,因为您只关心基于当前上下文语言的过滤。如果您想更明确地说明这一点,请参见以下答案: 新的:
Thanx这似乎有效,但我没有对其进行广泛测试 首先创建一个从MasterDataView继承的类。请注意,我没有用特定语言显式获取项目,因为您只关心基于当前上下文语言的过滤。如果您想更明确地说明这一点,请参见以下答案: 新的:
这似乎是有效的,但我没有广泛测试它 首先创建一个从MasterDataView继承的类。请注意,我没有用特定语言显式获取项目,因为您只关心基于当前上下文语言的过滤。如果您想更明确地说明这一点,请参见以下答案: 新的:
这似乎是有效的,但我没有广泛测试它 首先创建一个从MasterDataView继承的类。请注意,我没有用特定语言显式获取项目,因为您只关心基于当前上下文语言的过滤。如果您想更明确地说明这一点,请参见以下答案: 新的:
这似乎是有效的,但我没有广泛测试它 首先创建一个从MasterDataView继承的类。请注意,我没有用特定语言显式获取项目,因为您只关心基于当前上下文语言的过滤。如果您想更明确地说明这一点,请参见以下答案: 新的:
您不能开箱即用,因此需要编写自定义树列表。如果不存在任何版本,可以重写Add()方法并生成警报。但你为什么要这么做?如果有人删除了字段中引用的项的版本,它将保持被引用状态,并且树列表数据将变为“无效”。在查询演示文稿树状列表字段中的所有项目时,为什么不检查有效版本?要求没有版本的项目不应显示在列表中(我是指树状列表控件的左侧列表),顺便说一句,您的意思是重写Sitecore.Shell.Applications.ContentEditor.TreeList类中的外接程序方法?那么,我应该在哪个配置文件中引用我的新CustomTreeList类?@EngelbertCoder此链接将帮助您开始创建自定义字段类型。请查看@TwentyGotton的答案。当作者希望将广告项添加到列表中时,将调用
Add()
方法。这并不完全符合您的要求,因为所有项目仍然显示。为了满足您的需求,我认为您需要覆盖TreeList
的呈现。请看一下OnLoad()
方法,其中有一个dataContext.Filter
属性,它接受Sitecore查询。如果您可以查询以筛选您的项目,这将是一种方法。否则,我认为您还必须覆盖treeviewx
WebControl(用于TreeList
的OnLoad()
)。John West也有一些优秀的博客文章,解释了如何创建自定义树列表,例如:您不能开箱即用,因此需要编写自定义树列表。如果不存在任何版本,可以重写Add()方法并生成警报。但你为什么要这么做?如果有人删除了字段中引用的项的版本,它将保持被引用状态,并且树列表数据将变为“无效”。在查询演示文稿树状列表字段中的所有项目时,为什么不检查有效版本?要求没有版本的项目不应显示在列表中(我是指树状列表控件的左侧列表),顺便说一句,您的意思是重写Sitecore.Shell.Applications.ContentEditor.TreeList类中的外接程序方法?那么,我应该在哪个配置文件中引用我的新CustomTreeList类?@EngelbertCoder此链接将帮助您开始创建自定义字段类型。请查看@TwentyGotton的答案。当作者希望将广告项添加到列表中时,将调用Add()
方法。这并不完全符合您的要求,因为所有项目仍然显示。为了满足您的需求,我认为您需要覆盖TreeList
的呈现。请看一下OnLoad()
方法,其中有一个dataContext.Filter
属性,它接受Sitecore查询。如果您可以查询以筛选您的项目,这将是一种方法。否则,我认为您还必须覆盖treeviewx
WebControl(用于TreeList
的OnLoad()
)。John West也有一些优秀的博客文章,解释了如何创建自定义树列表,例如:您不能开箱即用,因此需要编写自定义树列表。如果不存在任何版本,可以重写Add()方法并生成警报。但你为什么要这么做?如果有人删除了字段中引用的项的版本,它将保持被引用状态,并且树列表数据将变为“无效”。在查询演示文稿树状列表字段中的所有项目时,为什么不检查有效版本?要求没有版本的项目不应显示在列表中(我是指树状列表控件的左侧列表),顺便说一句,您的意思是重写Sitecore.Shell.Applications.ContentEditor.TreeList类中的外接程序方法?那么,我应该在哪个配置文件中引用我的新CustomTreeList类?@EngelbertCoder此链接将帮助您开始创建自定义字段类型。请查看@TwentyGotton的答案。这个
public class LanguageFilteringMasterDataView : MasterDataView
{
protected override void GetChildItems(ItemCollection items, Item item)
{
base.GetChildItems(items, item);
this.FilterItemsWithNoVersionInLanguage(items);
}
protected virtual void FilterItemsWithNoVersionInLanguage(ItemCollection items)
{
for (var i = items.Count - 1; i >= 0; i--)
{
if (items[i].Versions.Count <= 0)
{
items.RemoveAt(i);
}
}
}
}
<dataviews>
<dataview name="LanguageFilteredMaster" assembly="sc70" type="sc70.Controls.LanguageFilteringMasterDataView" Parameters=""/>
</dataviews>
public class LanguageFilteringTreelist : TreeList
{
private const string DataViewName = "LanguageFilteredMaster";
protected override void OnLoad(EventArgs args)
{
base.OnLoad(args);
var dataContext = this.FindDataContext();
if (dataContext != null)
{
dataContext.DataViewName = DataViewName;
}
}
protected virtual DataContext FindDataContext()
{
if (this.Controls.Count <= 0)
{
return null;
}
var child = this.Controls[0];
return child.Controls.OfType<DataContext>().FirstOrDefault();
}
}
var contentLanguage = Sitecore.getUrlParameterValue("la");
var contentLanguage = Sitecore.getUrlParameterValue("la") || $F('scLanguage');