我正在创建一个包含持有者页面的网站,我想为这个和所有孩子创建一个共享导航树。我想出了一个相当难看的解决方案,并想知道是否有人有更好,更清洁的解决方案?
据我所知,有一个名为'InSection'的模板方法,但我相信这只匹配指定的页面,而不是页面类型。
<% with $Level(3) %>
<% if $className == "fooHolder" %>
<% with $Up %>
<article>
<nav id="contentNav">
<ol>
<% with $Level(3) %><li><a href="$Link" title="$Title.XML">$MenuTitle.XML</a><% end_with %>
<% if $Menu(4) %>
<ol>
<% loop $Menu(4) %>
<li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a>
<% if $Children %>
<ol>
<% loop $Children %>
<li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a>
<% end_loop %>
</ol>
<% end_if %>
</li>
<% end_loop %>
</ol>
<% end_if %>
</li>
</ol>
</nav>
<section class="article-wrapper">
$Content
<section>
</article>
<% end_with %>
<% else %>
<% with $Up %>
$Content
<% end_with %>
<% end_if %>
<% end_with %>
答案 0 :(得分:2)
我已经提出了一个更好的解决方案,但总是对听到它感兴趣。
Page.php中的
public function parentFromPageType($pageType){
if ($this->ClassName == $pageType) {
$sectionRoot = $this;
} else {
$sectionRoot = $this->getAncestors()->filter(array(
'ClassName' => $pageType
));
}
if ($sectionRoot ) {
return $sectionRoot ;
} else {
return false;
};
}
在Page.ss
中<% if $parentFromPageType(CategoryIntroPage) %>
<article>
<nav id="contentNav">
<ol>
<% loop $parentFromPageType(CategoryIntroPage) %>
<li><a href="$Link" title="$Title.XML">$MenuTitle.XML</a>
<% if $Children %>
<% include NestedChildren %>
<% end_if %>
</li>
<% end_loop %>
</ol>
</nav>
<section class="article-wrapper">
$Content
<section>
</article>
<% else %>
$Content
<% end_if %>
在Includes / NestedChilden.ss
中 <ol>
<% loop $Children %>
<li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a>
<% if $Children %>
<% include NestedChildren %>
<% end_if %>
</li>
<% end_loop %>
</ol>
</li>