遍历 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"。
我的网站在单个浏览器布局页面占位符上包含多个子布局。
我已将我的子布局数据源之一设置为我的内容结构中的一个文件夹,其中包含新闻项并获取其值和子项,如下所示以呈现这些新闻项:
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"。