模板中的 Sitecore 数据源查询
Sitecore DataSource Query in Template
如何在模板的DataSource中写查询生成item的路径?
如果我在 DataSource 字段中编写查询并且页面使用模板,则数据源值将作为动态数据源的项目路径,如屏幕截图。
如果您正在寻找 Sitecore 自动生成子布局的数据源到它所在的项目,类似于具有源的模板字段 属性,目前没有任何现成的方法可以实现这一点。
如果您希望在子布局的数据源中输入查询,您将需要使用子布局项上的“启用数据源查询”字段。通过数据源传递查询:
然后检索查询并执行;
protected void Page_Load(object sender, EventArgs e)
{
//Handle a single GUID
var searches = ((Sublayout)this.Parent).DataSource;
if (searches.IsGuid())
{
var itemDummyList = new List<Item>();
itemDummyList.Add(Sitecore.Context.Database.GetItem(searches));
this.SampleListView.DataSource = itemDummyList;
this.SampleListView.DataBind();
return;
}
//Handle a search query
using (var context = ContentSearchManager.CreateSearchContext((SitecoreIndexableItem)Sitecore.Context.Item))
{
var timer = new Stopwatch();
timer.Start();
//This gives us our IQueryable
var query = LinqHelper.CreateQuery(context, UIFilterHelpers.ParseDatasourceString(searches))
.Select(toItem => toItem.GetItem()).Take(10);
this.SampleListView.DataSource = query;
this.SampleListView.DataBind();
timer.Stop();
//Display the query time only in Debug Mode
if (Sitecore.Context.PageMode.IsDebugging)
{
this.RunTime.Text = " Debug Information: " + timer.ElapsedMilliseconds + " ms to render";
}
}
}
参考约翰·韦斯特; Sitecore 7 Datasource Explained
上的博客
如何在模板的DataSource中写查询生成item的路径?
如果我在 DataSource 字段中编写查询并且页面使用模板,则数据源值将作为动态数据源的项目路径,如屏幕截图。
如果您正在寻找 Sitecore 自动生成子布局的数据源到它所在的项目,类似于具有源的模板字段 属性,目前没有任何现成的方法可以实现这一点。
如果您希望在子布局的数据源中输入查询,您将需要使用子布局项上的“启用数据源查询”字段。通过数据源传递查询:
然后检索查询并执行;
protected void Page_Load(object sender, EventArgs e)
{
//Handle a single GUID
var searches = ((Sublayout)this.Parent).DataSource;
if (searches.IsGuid())
{
var itemDummyList = new List<Item>();
itemDummyList.Add(Sitecore.Context.Database.GetItem(searches));
this.SampleListView.DataSource = itemDummyList;
this.SampleListView.DataBind();
return;
}
//Handle a search query
using (var context = ContentSearchManager.CreateSearchContext((SitecoreIndexableItem)Sitecore.Context.Item))
{
var timer = new Stopwatch();
timer.Start();
//This gives us our IQueryable
var query = LinqHelper.CreateQuery(context, UIFilterHelpers.ParseDatasourceString(searches))
.Select(toItem => toItem.GetItem()).Take(10);
this.SampleListView.DataSource = query;
this.SampleListView.DataBind();
timer.Stop();
//Display the query time only in Debug Mode
if (Sitecore.Context.PageMode.IsDebugging)
{
this.RunTime.Text = " Debug Information: " + timer.ElapsedMilliseconds + " ms to render";
}
}
}
参考约翰·韦斯特; Sitecore 7 Datasource Explained
上的博客