从 2sxc 页面 link 字段获取子页面
Get child pages from 2sxc page link field
我在 2sxc dnn 模块中创建了 hyperlink 类型的字段。
现在,如果我在 razor 脚本中使用它,我会 URL 指向这个页面,这没问题。
eg:
@Content.LinkFieldName
但现在我需要创建某种导航来显示此 link 的所有子页面。嗯,我可以得到这个 links?
eg:
foreach(var page in Content.LinkFileldName.GetChildren???){
<li>@page.Name</li>
}
这是一种方式:
首先,获取页面的DotNetNuke TabInfo(使用Content.LinkFieldName调用函数):
public static TabInfo GetTabByUrl(string url){
foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
if (tab.FullUrl==url) return tab;
}
return null;
}
现在您有了第 url 页的 TabInfo 并使另一个函数获取 children:
public static List<TabInfo> GetChildren(TabInfo ti){
var list = new List<TabInfo>();
foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
if (ti.TabID==tab.ParentId) list.Add(tab);
}
return list;
}
现在全部召集起来列出children...
<ul>
@foreach(var page in GetChildren(GetTabByUrl(Content.LinkFieldName))){
<li><a href="@page.FullUrl">@page.TabName</a></li>
}
</ul>
这是我使用的命名空间:
@using System
@using ToSic.SexyContent
@using DotNetNuke.Entities.Tabs
我在 2sxc dnn 模块中创建了 hyperlink 类型的字段。
现在,如果我在 razor 脚本中使用它,我会 URL 指向这个页面,这没问题。
eg:
@Content.LinkFieldName
但现在我需要创建某种导航来显示此 link 的所有子页面。嗯,我可以得到这个 links?
eg:
foreach(var page in Content.LinkFileldName.GetChildren???){
<li>@page.Name</li>
}
这是一种方式: 首先,获取页面的DotNetNuke TabInfo(使用Content.LinkFieldName调用函数):
public static TabInfo GetTabByUrl(string url){
foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
if (tab.FullUrl==url) return tab;
}
return null;
}
现在您有了第 url 页的 TabInfo 并使另一个函数获取 children:
public static List<TabInfo> GetChildren(TabInfo ti){
var list = new List<TabInfo>();
foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
if (ti.TabID==tab.ParentId) list.Add(tab);
}
return list;
}
现在全部召集起来列出children...
<ul>
@foreach(var page in GetChildren(GetTabByUrl(Content.LinkFieldName))){
<li><a href="@page.FullUrl">@page.TabName</a></li>
}
</ul>
这是我使用的命名空间:
@using System
@using ToSic.SexyContent
@using DotNetNuke.Entities.Tabs