Silverstripe 中的自定义导航菜单
Custom Navigation Menu in Silverstripe
我今天正在学习 Silverstripe CMS,运行 遇到了一个我找不到答案的问题。
我有一个 CSS 驱动的下拉菜单,其中包含三个主要标题。标题本身不是链接,但 children 是。
我遇到的问题是我阅读菜单的方式是从页面层次结构生成的。我的主菜单标题不是页面,那么如何从它开始,然后在每个标题下放置正确的页面链接?
我正在使用此代码动态生成菜单
<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>
嗯,因为您不知道 "About" 部分标题放在哪里 - 默认情况下,这不是内置在 SilverStripe 中。您必须为其添加 "RedirectorPage" 并重定向到第一个 Child。
幸好其他人也遇到了这个问题还有some page types that do the trick for you.
您可以重复使用已有的模板。
上面链接的页面类型在 Controller 的 init()
方法中具有重定向到第一个 child 的功能,这很容易:
function init() {
parent::init();
if($this->Children()->Count()){
Controller::redirect($this->Children()->First()->AbsoluteLink());
}
}
所以这取决于您是使用默认值手动重定向 RedirectorPage
还是想要更高级的内容。
我今天正在学习 Silverstripe CMS,运行 遇到了一个我找不到答案的问题。
我有一个 CSS 驱动的下拉菜单,其中包含三个主要标题。标题本身不是链接,但 children 是。
我遇到的问题是我阅读菜单的方式是从页面层次结构生成的。我的主菜单标题不是页面,那么如何从它开始,然后在每个标题下放置正确的页面链接?
我正在使用此代码动态生成菜单
<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>
嗯,因为您不知道 "About" 部分标题放在哪里 - 默认情况下,这不是内置在 SilverStripe 中。您必须为其添加 "RedirectorPage" 并重定向到第一个 Child。
幸好其他人也遇到了这个问题还有some page types that do the trick for you.
您可以重复使用已有的模板。
上面链接的页面类型在 Controller 的 init()
方法中具有重定向到第一个 child 的功能,这很容易:
function init() {
parent::init();
if($this->Children()->Count()){
Controller::redirect($this->Children()->First()->AbsoluteLink());
}
}
所以这取决于您是使用默认值手动重定向 RedirectorPage
还是想要更高级的内容。