在模板构建器中查询sitecore“source”字段的表示法

时间:2012-09-26 22:13:37

标签: c# asp.net content-management-system sitecore sitecore6

我正在尝试使用查询表示法(或xpath - 无论哪个有效)设置模板的源字段,但它们似乎都没有工作。

我的内容树是多站点内容树:

France
--Page 1
----Page1A
-------Page1AA
--Page 2
--Page 3
--METADATA
----Regions

US
--Page 1
----Page1A
-------Page1AA
--Page 2
--Page 3
--METADATA
----Regions

每个站点都有自己的METADATA文件夹,我希望它能够在每个主要国家/地区节点中添加页面时,我希望这些值能够反映该站点的METADATA中的内容。我现在有两个不同的领域 - 一个droplink和一个treelistex字段。所以我想我可以获得一个国家站点的父项,并获取元数据文件夹。当我在这两个字段中放入以下查询时,我会得到不同的结果:

 query:./ancestor::*[@@templatename='CountryHome']/METADATA/Regions/*
  • 对于droplink字段,我只获得第一个Region(一个项目)
  • 对于treelistex字段,我获取整个内容树

然后我尝试稍微修改一下查询并将'查询'表示法取出

 ./ancestor::*[@@templatename='CountryHome']/METADATA/Regions/*

如果我转到开发人员中心/ xpath构建器,并将上下文节点设置为主国家/地区网站下面的任何项目,它将返回我正确的内容,但是当我将其放入源代码时,我会获得整个内容两种情况都是树。

帮助!

2 个答案:

答案 0 :(得分:43)

支持Sitecore查询的字段

您可以使用语法query:fast:(对于FastQuery):

  • Droplist
  • 分组下载列表
  • DropLink
  • Grouped Droplink
  • 检查表
  • 多重表
  • Droptree

支持参数化数据源

的字段

您可以在参数化数据源中使用增强语法 查询:

  • Droptree†
  • 树形列表
  • TreelistEx

Droptree仅支持DatasourceDatabaseName参数。

增强的查询字符串语法包括以下参数:

  • 数据源
  • 数据库名
  • 将allowMultipleSelection
  • IncludeItemsForDisplay
  • ExcludeItemsForDisplay
  • IncludeTemplatesForSelection
  • ExcludeTemplatesForSelection
  • IncludeTemplatesForDisplay
  • ExcludeTemplatesForDisplay

使用方法如下:Datasource=/sitecore/content/home/Products/&IncludeTemplatesForDisplay=Product Category&ExcludeTemplatesForSelection=Product Description&IncludeTemplatesForSelection=Product Category

Mark Ursino在如何使用这种语法here上发表了很好的帖子。

答案 1 :(得分:14)

您在这里的内容应该与Droplink字段一起使用。也许你指的是Droptree?

query:./ancestor::*[@@templatename='CountryHome']/METADATA/Regions/*

至于TreelistEx,我不认为默认的Treelist字段支持Sitecore查询。但是,this article描述了如何创建支持它的自定义TreeList。