Orchard Taxonomies - 仅获取父节点
Orchard Taxonomies - Get Parent Nodes only
我有一个具有 2 个级别的 'Colours' 分类法,我希望将每个父节点显示为页面的一个单独部分 - 假设由 <h5>
分隔。
我的问题:如何只获取分类的父节点?其次,如何只显示该父术语的子节点?
我可以从调试中看到 Slug 附加在嵌套项目上(例如 /parent-node/child-node
),但这就是我所知道的。
----更新----
我注意到父节点 Path 值始终为“/”,然后子节点继续执行它,直到命中下一个父节点(只要我不手动对其进行排序)。
所以我已经覆盖了我的形状如下:
@foreach (var term in terms)
{
if (term.Path == "/")
{
//It's a top-level term - add header
<h5>@term.Name</h5>
}
else
{
<div>@term.Name</div>
}
}
这种方法可行,但现在的问题是所有内容都按字母顺序显示 - 我的客户想更改顺序。
我可以使用加权系统,但我想要更强大的系统。
非常感谢任何帮助!
分类法和术语都是术语的容器。要仅获取分类法中的父节点,您可以 select 所有将分类法作为容器的术语。
var parentTerms = terms.Where(t => t.Container == myTaxonomy);
您可以使用相同的方法为父项获取子项(假设您只想深入一层,否则您必须递归执行此操作)。
foreach(var parentTerm in parentTerms) {
var childTerms = terms.Where(t => t.Container == parentTerm);
}
或者,您可以在控制器中注入 Orchard 的分类服务:
public class MyController : Controller {
private readonly ITaxonomyService _taxonomyService;
public MyController(ITaxonomyService _taxonomyService) {
this._taxonomyService = _taxonomyService;
}
}
这使您可以使用一些有用的方法,例如
IEnumerable<TermPart> GetParents(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term, bool includeParent);
我有一个具有 2 个级别的 'Colours' 分类法,我希望将每个父节点显示为页面的一个单独部分 - 假设由 <h5>
分隔。
我的问题:如何只获取分类的父节点?其次,如何只显示该父术语的子节点?
我可以从调试中看到 Slug 附加在嵌套项目上(例如 /parent-node/child-node
),但这就是我所知道的。
----更新---- 我注意到父节点 Path 值始终为“/”,然后子节点继续执行它,直到命中下一个父节点(只要我不手动对其进行排序)。
所以我已经覆盖了我的形状如下:
@foreach (var term in terms)
{
if (term.Path == "/")
{
//It's a top-level term - add header
<h5>@term.Name</h5>
}
else
{
<div>@term.Name</div>
}
}
这种方法可行,但现在的问题是所有内容都按字母顺序显示 - 我的客户想更改顺序。
我可以使用加权系统,但我想要更强大的系统。
非常感谢任何帮助!
分类法和术语都是术语的容器。要仅获取分类法中的父节点,您可以 select 所有将分类法作为容器的术语。
var parentTerms = terms.Where(t => t.Container == myTaxonomy);
您可以使用相同的方法为父项获取子项(假设您只想深入一层,否则您必须递归执行此操作)。
foreach(var parentTerm in parentTerms) {
var childTerms = terms.Where(t => t.Container == parentTerm);
}
或者,您可以在控制器中注入 Orchard 的分类服务:
public class MyController : Controller {
private readonly ITaxonomyService _taxonomyService;
public MyController(ITaxonomyService _taxonomyService) {
this._taxonomyService = _taxonomyService;
}
}
这使您可以使用一些有用的方法,例如
IEnumerable<TermPart> GetParents(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term, bool includeParent);