分页菜单列表
Paginated Menu List
如何创建子项的分页菜单列表(即 Menu(2)
)。我试过了
$list = Menu::get();
但 class 菜单不存在。最好是迭代 Menu(2) 并将其分配给 DataArray 吗?我也试过
$list = Page::get();
但它甚至没有显示任何页面?
在 SilverStripe 3.1 中,我们可以在我们的控制器中调用 $this->getMenu(2)
来获取给定级别(在本例中为级别 2)的导航菜单。
然后我们可以使用 PaginatedList
将该菜单变成分页列表。有一些关于如何创建分页列表的重要资源,例如:
我们可以使用这些来创建一个 PaginatedMenu 函数,它将 return 我们的菜单项的分页列表:
class Page_Controller extends ContentController {
public function PaginatedMenu($level = 1) {
$paginatedMenu = PaginatedList::create(
$this->getMenu($level),
$this->request
);
$paginatedMenu->setPageLength(5);
$paginatedMenu->setPaginationGetVar('menu-start');
return $paginatedMenu;
}
}
setPageLength
允许我们设置每页显示的项目数。
以下是如何在我们的模板中使用它的示例:
<% if $PaginatedMenu(2) %>
<ul class="paginatedMenu">
<% loop $PaginatedMenu(2) %>
<li class="$LinkingMode"><a href="$Link">$MenuTitle</a></li>
<% end_loop %>
</ul>
<% if $PaginatedMenu(2).MoreThanOnePage %>
<div class="pagination">
<% if $PaginatedMenu(2).NotFirstPage %>
<a href="$PaginatedMenu(2).PrevLink" class="prev" aria-label="View the previous page">←</a>
<% end_if %>
<span>
<% loop $PaginatedMenu(2).PaginationSummary %>
<% if $CurrentBool %>
$PageNum
<% else_if $PageNum %>
<a href="$Link" class="pageLink" aria-label="View page number $PageNum">$PageNum</a>
<% end_if %>
<% end_loop %>
</span>
<% if $PaginatedMenu(2).NotLastPage %>
<a href="$PaginatedMenu(2).NextLink" class="next" aria-label="View the next page">→</a>
<% end_if %>
</div>
<p>Page $PaginatedMenu(2).CurrentPage of $PaginatedMenu(2).TotalPages</p>
<% end_if %>
<% end_if %>
如何创建子项的分页菜单列表(即 Menu(2)
)。我试过了
$list = Menu::get();
但 class 菜单不存在。最好是迭代 Menu(2) 并将其分配给 DataArray 吗?我也试过
$list = Page::get();
但它甚至没有显示任何页面?
在 SilverStripe 3.1 中,我们可以在我们的控制器中调用 $this->getMenu(2)
来获取给定级别(在本例中为级别 2)的导航菜单。
然后我们可以使用 PaginatedList
将该菜单变成分页列表。有一些关于如何创建分页列表的重要资源,例如:
我们可以使用这些来创建一个 PaginatedMenu 函数,它将 return 我们的菜单项的分页列表:
class Page_Controller extends ContentController {
public function PaginatedMenu($level = 1) {
$paginatedMenu = PaginatedList::create(
$this->getMenu($level),
$this->request
);
$paginatedMenu->setPageLength(5);
$paginatedMenu->setPaginationGetVar('menu-start');
return $paginatedMenu;
}
}
setPageLength
允许我们设置每页显示的项目数。
以下是如何在我们的模板中使用它的示例:
<% if $PaginatedMenu(2) %>
<ul class="paginatedMenu">
<% loop $PaginatedMenu(2) %>
<li class="$LinkingMode"><a href="$Link">$MenuTitle</a></li>
<% end_loop %>
</ul>
<% if $PaginatedMenu(2).MoreThanOnePage %>
<div class="pagination">
<% if $PaginatedMenu(2).NotFirstPage %>
<a href="$PaginatedMenu(2).PrevLink" class="prev" aria-label="View the previous page">←</a>
<% end_if %>
<span>
<% loop $PaginatedMenu(2).PaginationSummary %>
<% if $CurrentBool %>
$PageNum
<% else_if $PageNum %>
<a href="$Link" class="pageLink" aria-label="View page number $PageNum">$PageNum</a>
<% end_if %>
<% end_loop %>
</span>
<% if $PaginatedMenu(2).NotLastPage %>
<a href="$PaginatedMenu(2).NextLink" class="next" aria-label="View the next page">→</a>
<% end_if %>
</div>
<p>Page $PaginatedMenu(2).CurrentPage of $PaginatedMenu(2).TotalPages</p>
<% end_if %>
<% end_if %>