有没有办法从页面关系的左侧获取相关页面,而不是 Kentico 中的 CurrentDocument
Is there a way to get the related pages from a left side of the page relationship that is not the CurrentDocument in Kentico
我需要使用页面关系从任何次要页面(1,2,3,4...)访问主页信息,然后从主页检索关系列表,在此案例 SecondaryPage1、SecondaryPage2、SecondaryPage3 等..
我有以下结构
MainPage(页面类型,例如文章)isRelatedTo:
- SecondaryPage1(页面类型:例如项目)
- SecondaryPage2(页面类型:例如项目)
- SecondaryPage3(页面类型:例如项目)
- SecondaryPage4(页面类型:例如项目)
- SecondaryPage5(页面类型:例如项目)
有简单的方法吗?我正在使用 CMSRepeater 来显示项目。我正在考虑为这个特定场景创建一个自定义 CMSRepeater,但我想知道是否有不同的方法。
因此,回顾一下,SecondaryPage1 与右侧的 MainPage 相关。
MainPage -> isRelatedTo -> SecondaryPage1
我正在尝试从 MainPage 显示整个列表,我需要在任何辅助页面上访问该信息。
我创建了这个代码,它工作得很好我只是想发现是否有更简单的解决方案或者是否有替代方案。
....
List<CMS.DocumentEngine.TreeNode> mainRelatedItems = new List<CMS.DocumentEngine.TreeNode>();
mainRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(CurrentDocument.NodeGUID, PageRelationship, relationshipSide));
List<CMS.DocumentEngine.TreeNode> secondaryRelatedItems = new List<CMS.DocumentEngine.TreeNode>();
foreach (CMS.DocumentEngine.TreeNode item in mainRelatedItems)
{
if(ExcludeCurrentDocument)
secondaryRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(item.NodeGUID, SecondLevelPageRelationship, secondaryRelationshipSide).Where(x => x.NodeGUID != CurrentDocument.NodeGUID));
else
secondaryRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(item.NodeGUID, SecondLevelPageRelationship, secondaryRelationshipSide));
}
....
CustomRepeater.ItemTemplate = TransformationHelper.LoadTransformation(CustomRepeater, TransformationName);
CustomRepeater.DataSource = secondaryRelatedItems;
CustomRepeater.DataBind();
....
在您的文档查询中,您可以指定关系 GUID 以及方和关系名称。它不一定是当前文档。
DocumentHelper.GetDocuments().InRelationWith(guid, "reltionshipname", side)
** 更新**
根据您的问题的最新更新,您需要通过 URL 参数或会话或其他一些参数获取主文档 id/guid,然后使用某些东西查找该节点喜欢 DocumentHelper.GetDocument(MainDocID)
。获得主文档后,您可以使用我上面提供的代码执行查找。
听起来您没有获得此信息的好方法,仅仅是因为其中一个辅助页面可能与许多其他页面或页面类型相关。一个建议可能是创建一个非常具体的关系名称,并通过该非常具体的关系名称和辅助页面 ID 查询您的主文档,以获取可能与其相关的任何主页面。
我需要使用页面关系从任何次要页面(1,2,3,4...)访问主页信息,然后从主页检索关系列表,在此案例 SecondaryPage1、SecondaryPage2、SecondaryPage3 等..
我有以下结构 MainPage(页面类型,例如文章)isRelatedTo:
- SecondaryPage1(页面类型:例如项目)
- SecondaryPage2(页面类型:例如项目)
- SecondaryPage3(页面类型:例如项目)
- SecondaryPage4(页面类型:例如项目)
- SecondaryPage5(页面类型:例如项目)
有简单的方法吗?我正在使用 CMSRepeater 来显示项目。我正在考虑为这个特定场景创建一个自定义 CMSRepeater,但我想知道是否有不同的方法。
因此,回顾一下,SecondaryPage1 与右侧的 MainPage 相关。
MainPage -> isRelatedTo -> SecondaryPage1
我正在尝试从 MainPage 显示整个列表,我需要在任何辅助页面上访问该信息。
我创建了这个代码,它工作得很好我只是想发现是否有更简单的解决方案或者是否有替代方案。
....
List<CMS.DocumentEngine.TreeNode> mainRelatedItems = new List<CMS.DocumentEngine.TreeNode>();
mainRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(CurrentDocument.NodeGUID, PageRelationship, relationshipSide));
List<CMS.DocumentEngine.TreeNode> secondaryRelatedItems = new List<CMS.DocumentEngine.TreeNode>();
foreach (CMS.DocumentEngine.TreeNode item in mainRelatedItems)
{
if(ExcludeCurrentDocument)
secondaryRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(item.NodeGUID, SecondLevelPageRelationship, secondaryRelationshipSide).Where(x => x.NodeGUID != CurrentDocument.NodeGUID));
else
secondaryRelatedItems.AddRange(DocumentHelper.GetDocuments().Types(PageTypes.Split(';')).InRelationWith(item.NodeGUID, SecondLevelPageRelationship, secondaryRelationshipSide));
}
....
CustomRepeater.ItemTemplate = TransformationHelper.LoadTransformation(CustomRepeater, TransformationName);
CustomRepeater.DataSource = secondaryRelatedItems;
CustomRepeater.DataBind();
....
在您的文档查询中,您可以指定关系 GUID 以及方和关系名称。它不一定是当前文档。
DocumentHelper.GetDocuments().InRelationWith(guid, "reltionshipname", side)
** 更新**
根据您的问题的最新更新,您需要通过 URL 参数或会话或其他一些参数获取主文档 id/guid,然后使用某些东西查找该节点喜欢 DocumentHelper.GetDocument(MainDocID)
。获得主文档后,您可以使用我上面提供的代码执行查找。
听起来您没有获得此信息的好方法,仅仅是因为其中一个辅助页面可能与许多其他页面或页面类型相关。一个建议可能是创建一个非常具体的关系名称,并通过该非常具体的关系名称和辅助页面 ID 查询您的主文档,以获取可能与其相关的任何主页面。