遍历 Sitecore 祖先项直到找到模板

Traverse Sitecore ancestor items until a template is found

我的网站在单个浏览器布局页面占位符上包含多个子布局。

我已将我的子布局数据源之一设置为我的内容结构中的一个文件夹,其中包含新闻项并获取其值和子项,如下所示以呈现这些新闻项:

Sitecore.Collections.ChildList childItems;

if (Sitecore.Context.Database.GetItem(this.DataSource) != null)
{
  childItems = Sitecore.Context.Database.GetItem(this.DataSource).GetChildren();
}
else
{
  litOutput.Text += "You need to set a datasource";
  return;
}
// Then iterating
foreach (Item item in childItems){}

不过,我还需要获取位于我网站主根目录中的 Sitecore 项目,这些项目代表子布局将使用的其他属性和子项目。

所以实际上,在定义了我的数据源后,我不仅向下遍历其子项以获取新闻数据(这是有效的),然后我还需要遍历回主根目录,然后向下遍历到一个名为的文件夹SETTINGS 包含此项的字段。

主根模板称为 "Microsite" 所以我真的需要帮助来了解如何向上遍历直到找到该模板名称,然后再向下进入“设置”级别以获取这些项目。

希望这是有道理的,并且任何人都可以协助该方法。

query:./ancestor-or-self::*[@@templatename='Microsite']/*[@@name='Settings']

虽然这行得通,但在每次请求时都执行此操作似乎不是很好的编码...

您可能想使用 templateid 而不是 templatename.. 而不是 'hardcode' 名称 "Settings"。