从另一个函数[SilverStripe]调用BlogEntries函数

时间:2015-07-21 09:12:39

标签: php silverstripe

我正在使用SilverStripe中的博客模块。在模板中,它会循环遍历博客条目功能。但是,我也在使用我在博客持有者中循环的API。

<div class="blog-section">
    <% loop $getSlackMessage %>
         <p id="author-tag">$UserName <span id="slackTimestamp">$Created.Format(h:i A)</span></p>
         <p id="postDescription">$Text</p>
    <% end_loop %>
</div>

<div class="blog-section">
    <% loop $getLatestTracks %>
         <p id="track-name">$Name </p>
    <% end_loop %>
</div>

<% loop BlogEntries %>
      <article class="col-md-3 item" section-type="article">
              <% include BlogSummary %>
      </article>   
<% end_loop %> 

因为你可以看到我在这里循环3次,这有点令人讨厌,因为在每个博客持有人页面上都会看到$getSlackMessage$getLatestTracks。这意味着当我进入第2页时,我会看到第1页上看到的相同内容,下面会有一些不同的文章。

如何整合所有这些循环并让SilverStripe将它们作为一个大循环吐出,然后我可以按创建时间进行排序?

如果您需要其他任何信息,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:1)

如果你想要一个返回getSlackMessagegetLatestTracks的合并结果的函数,那么你可以这样写:

function consolidatedF() {
    $slackMessages = $this->getSlackMessage();
    $latestTracks = $this->getLatestTracks();

    $resultList = new ArrayList($slackMessages->toArray());
    $resultList->merge($latestTracks->toArray());

    return $resultList;
}

然后将其作为<% loop $consolidatedF.Sort(Created, ASC) %>

在模板中循环