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

Calling the BlogEntries function from another function [SilverStripe]

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

<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 将它们吐出为一个大循环,然后我可以按创建时间排序?

如果您还需要什么,请告诉我,谢谢。

如果你想要一个 returns 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) %>