基于父页面的父页面的 Sitecore 过滤器页面

Sitecore Filter Pages based on Parent of Parent Page

我的页面结构

-职业页面 1(模板通用页面)

-职业页面 2(模板通用页面)

我的问题是:我的编码方式是每当我点击(职业生涯第 1 页)时 我得到了使用工作页面模板的页面列表 所以我得到职业生涯第 1 页的第 1-8 页列表和职业生涯第 2 页的第 1-8 页列表 但我只想要 (Career Page 1)

的页面

我已尝试使用 GetQueryable 获取模板 ID 等于工作页面模板的页面列表

IQueryable search = context.GetQueryable().Where(x => x.TemplateId == PageID); //这将让我列出从 PageID(工作页面)模板创建的所有页面

当我点击职业页面 1 时,我只想要(职业页面 1)的页面,当我点击职业页面 2 时,我只想要(职业页面 2)的页面列表

您还应该过滤 Paths(索引为 _path)。它包含 ID 的列表,表示项目所在的路径。所以它看起来像这样(取决于你的模型看起来像什么):

contex.GetQueryable<MyType>().Where(x => x.TemplateId == JobPageTemplateId && x.Paths.Contains(careerPageId))

根据您的解决方案,考虑过滤语言和 _latestversion 以避免意外结果和潜在的重复。

可以使用多种方式过滤

  1. 使用 Axes.GetAncestors 获取祖先列表,运行 页面类型的循环是否包含该祖先
  2. 使用 Path 属性检查 Career page Name{Attribute} 是否存在,这可以通过 Jobpage.Path.Contains(Sitecore.Context.Item.Name)