Silverstripe:我希望我的菜单按列表排序和分组。我已按照this documentation中的每一步使用GroupBy方法,但无济于事 基本上我希望我的子页面在菜单中显示如下:
在执行文档中的操作之后实际发生的是我得到一个空列表,基本上$ GroupedModules.GroupedBy(TitleFirstLetter)不起作用。
我认为我可能在这里缺少的是创建Module类,我不知道在哪里创建它,它是否存在于Page.php中? 另外,应该命名为Module?
提前致谢
答案 0 :(得分:3)
您链接的文档显示了如何执行数据对象的组列表(示例中的模块)。您需要执行分组的页面列表,因此您需要稍微更改代码以满足您的需求。
<强> page.php文件强>
class Page extends SiteTree {
// ...
public function getTitleFirstLetter() {
return $this->Title[0];
}
public function getGroupedChildren() {
return GroupedList::create($this->Children()->sort('Title'));
}
}
您的模板
<% loop $GroupedChildren.GroupedBy(TitleFirstLetter) %>
<h3>$TitleFirstLetter</h3>
<ul>
<% loop $Children %>
<li>$Title</li>
<% end_loop %>
</ul>
<% end_loop %>