我正在使用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将它们作为一个大循环吐出,然后我可以按创建时间进行排序?
如果您需要其他任何信息,请告诉我,谢谢。
答案 0 :(得分:1)
如果你想要一个返回getSlackMessage
和getLatestTracks
的合并结果的函数,那么你可以这样写:
function consolidatedF() {
$slackMessages = $this->getSlackMessage();
$latestTracks = $this->getLatestTracks();
$resultList = new ArrayList($slackMessages->toArray());
$resultList->merge($latestTracks->toArray());
return $resultList;
}
然后将其作为<% loop $consolidatedF.Sort(Created, ASC) %>