我今天正在学习Silverstripe CMS并遇到了一个我无法找到答案的问题。
我有一个CSS驱动的下拉菜单,有三个主要标题。标题本身不是孩子们的链接。
我遇到的问题是我读取菜单的方式是从页面层次结构生成的。我的主菜单标题不是页面,那么我该如何开始,然后在每个标题下放置正确的页面链接?
我正在使用此代码动态生成菜单
<nav class="seven columns u-right-align main-nav">
<ul style="position: relative; z-index: 10000">
<% loop $Menu(1) %>
<li>$MenuTitle
<% if $LinkOrSection == section %>
<% if $Children %>
<ul>
<% loop $Children %>
<li><a href="$Link">$MenuTitle</a></li>
<% end_loop %>
</ul>
<% end_if %>
<% end_if %>
</li>
<% end_loop %>
</ul>
</nav>
预期布局......
<nav class="seven columns u-right-align main-nav">
<ul style="position: relative; z-index: 10000">
<li>About <!-- I do not know where to create this title in SS -->
<ul>
<li><a href="">Annual Meeting</a></li>
<li><a href="">History</a></li>
<li><a href="">Society Calendar</a></li>
</ul>
</li>
</ul>
</nav>
答案 0 :(得分:3)
好吧,因为你不知道在哪里放置&#34;关于&#34; section title - 默认情况下,它不是在SilverStripe中构建的。您必须添加&#34; RedirectorPage&#34;为它,并改为重定向到第一个孩子。
幸运的是,其他人也遇到了这个问题,并且有some page types that do the trick for you。
您可以重复使用已有的模板。
上面链接的网页类型在Controller的init()
方法中具有funcitonality,可以重定向到第一个子节点,这非常简单:
function init() {
parent::init();
if($this->Children()->Count()){
Controller::redirect($this->Children()->First()->AbsoluteLink());
}
}
因此,如果您使用默认RedirectorPage
手动重定向,或者您想要更高级的东西,这取决于您。