在Silverstripe的导航菜单上显示最新的新闻页面

时间:2011-12-10 00:03:26

标签: silverstripe

我有NewsPage类型,在导航中我想显示一个名为Latest News的条目,该条目将呈现最新的NewsPage(根据Created字段)。这可能吗?

1 个答案:

答案 0 :(得分:2)

根据您的导航模板,您应该能够将链接插入ul内导航列表项内的最新NewsPage。

要获取最新的NewsPage,您需要在页面控制器中编写一个返回最新新闻页面的函数。这是一个例子。

function GetLatestNews()
{
     return DataObject::get_one('NewsPage', '', '', 'Created DESC');
}

然后在导航模板中你应该做这样的事情。

<ul id="navigation">
    <% control Menu(1) %>
        <li class="$LinkingMode"><a href="$Link">$MenuTitle.XML</a></li>
    <% end_control %>
    <li class="$LinkingMode"><a href="$GetLatestNews.Link">Latest News</a></li>
</ul>

这将在导航的末尾插入链接。如果要将链接插入特定位置,可以使用控件内的$ Pos来检查它所处的位置。这是一个例子:&lt;%if Pos

 <ul id="navigation">
    <% control Menu(1) %>
          <% if Pos = 2 %>
              <li class="$LinkingMode"><a href="$GetLatestNews.Link">Latest News</a></li>
          <% end_if %>
    <li class="$LinkingMode"><a href="$Link">$MenuTitle.XML</a></li>

    <% end_control %>

</ul>

以上将在导航内的第二个位置插入链接。