我如何创建儿童分页菜单列表(即Menu(2)
)。我试过分页菜单列表
$list = Menu::get();
但是class Menu不存在。迭代Menu(2)并将其分配给DataArray是否最佳?我也试过
$list = Page::get();
但它甚至没有显示任何页面?
我如何创建儿童分页菜单列表(即Menu(2)
)。我试过分页菜单列表
$list = Menu::get();
但是class Menu不存在。迭代Menu(2)并将其分配给DataArray是否最佳?我也试过
$list = Page::get();
但它甚至没有显示任何页面?
在SilverStripe 3.1中,我们可以在我们的控制器中调用$this->getMenu(2)
以获得给定级别(本例中为级别2)的导航菜单。
然后,我们可以使用PaginatedList
将该菜单变成分页列表。有关于如何创建一个分页列表,例如一些重要的资源:
我们可以利用这些来创建一个PaginatedMenu函数将返回我们的菜单的分页列表项目:
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 %>
您是最好的或至少是最好的银条纹大师之一。非常感谢你! – SIlverstripeNewbie
在哪里silverstripe大师,需要利用这样的服务。 – SIlverstripeNewbie
@ 3dgoo非常感谢,感谢您的帮助, – SIlverstripeNewbie