14

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

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

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

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

每个站点都有自己的 METADATA 文件夹,我想要它,以便在每个主要国家节点内添加页面时,我希望这些值反映该站点的元数据中的任何内容。我现在有两个不同的字段——一个 droplink 和一个 treelistex 字段。所以我想我可以得到一个国家网站的父项目,然后得到它的元数据文件夹。当我在两个字段中输入以下查询时,会得到不同的结果:

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

然后我尝试稍微修改查询并取出“查询”符号

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

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

帮助!

4

2 回答 2

46

支持 Sitecore 查询的字段

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

  • 下拉列表
  • 分组下拉列表
  • DropLink
  • 分组 Droplink
  • 清单
  • 多列表
  • 删除树

支持参数化数据源的字段

您可以将增强的语法与参数化数据源查询一起使用:

  • 删除树†</li>
  • 树列表
  • TreelistEx

Droptree 仅支持DatasourceandDatabaseName参数。

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

  • 数据源
  • 数据库名称
  • 允许多重选择
  • IncludeItemsForDisplay
  • 排除项目显示
  • IncludeTemplatesForSelection
  • 排除模板供选择
  • IncludeTemplatesForDisplay
  • 排除显示模板

这些是这样使用的:Datasource=/sitecore/content/home/Products/&IncludeTemplatesForDisplay=Product Category&ExcludeTemplatesForSelection=Product Description&IncludeTemplatesForSelection=Product Category

Mark Ursino 有一篇很棒的文章,介绍了如何在此处使用这种语法。

于 2012-09-27T09:14:49.817 回答
14

您在此处拥有的内容应该与 Droplink 字段一起使用。也许您指的是 Droptree?

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

至于 TreelistEx,我认为默认的 Treelist 字段不支持 Sitecore 查询。但是,本文介绍了如何创建支持它的自定义 TreeList。

于 2012-09-26T23:01:08.167 回答